Update to MySQL 5.7.15

This commit is contained in:
Norvald H. Ryeng 2016-09-07 09:38:53 +02:00 committed by Jakub Dorňák
parent 6329051b24
commit 5e9f498a98
4 changed files with 27 additions and 156 deletions

View File

@ -1,26 +0,0 @@
--- a/storage/innobase/buf/buf0buf.cc
+++ b/storage/innobase/buf/buf0buf.cc
@@ -3855,14 +3855,17 @@ buf_block_from_ahi(const byte* ptr)
ut_ad(buf_chunk_map_ref == buf_chunk_map_reg);
ut_ad(!buf_pool_resizing);
- const byte* bound = reinterpret_cast<uintptr_t>(ptr)
- > srv_buf_pool_chunk_unit
- ? ptr - srv_buf_pool_chunk_unit : 0;
- it = chunk_map->upper_bound(bound);
+ buf_chunk_t* chunk;
+ it = chunk_map->upper_bound(ptr);
+
+ ut_a(it != chunk_map->begin());
- ut_a(it != chunk_map->end());
+ if (it == chunk_map->end()) {
+ chunk = chunk_map->rbegin()->second;
+ } else {
+ chunk = (--it)->second;
+ }
- buf_chunk_t* chunk = it->second;
ulint offs = ptr - chunk->blocks->frame;
offs >>= UNIV_PAGE_SIZE_SHIFT;

View File

@ -1,123 +0,0 @@
Problem: The fix for bug #23607230 used xxhash symbols from liblz4,
but even though the xxhash symbols are exported by liblz4, the header
file is not part of the API, so compilation fails when building with
WITH_LZ4=system.
Fix: Build xxhash separately from liblz4 so that it's available both
when using system and bundled lz4 libraries.
---
extra/lz4/my_xxhash.h | 27 +++++++++++++++++++++++++++
libmysqld/CMakeLists.txt | 6 ++++++
sql/CMakeLists.txt | 6 ++++++
sql/rpl_write_set_handler.cc | 4 ++--
4 files changed, 41 insertions(+), 2 deletions(-)
create mode 100644 extra/lz4/my_xxhash.h
diff --git a/extra/lz4/my_xxhash.h b/extra/lz4/my_xxhash.h
new file mode 100644
index 0000000..699c1b5
--- /dev/null
+++ b/extra/lz4/my_xxhash.h
@@ -0,0 +1,27 @@
+#ifndef MY_XXHASH_H_INCLUDED
+#define MY_XXHASH_H_INCLUDED
+
+/*
+ Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
+*/
+
+// Define a namespace prefix to all xxhash functions. This is done to
+// avoid conflict with xxhash symbols in liblz4.
+#define XXH_NAMESPACE MY_
+
+#include "xxhash.h"
+
+#endif // MY_XXHASH_H_INCLUDED
diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
index cb188ec..0093f2e 100644
--- a/libmysqld/CMakeLists.txt
+++ b/libmysqld/CMakeLists.txt
@@ -62,6 +62,7 @@ SET(SQL_EMBEDDED_SOURCES
libmysqld.c
${GEN_SOURCES}
${GEN_YACC_SOURCES}
+ ../extra/lz4/xxhash.c
../client/get_password.c
../libmysql/errmsg.c
../libmysql/libmysql.c
@@ -118,6 +119,11 @@ ADD_COMPILE_FLAGS(
COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
)
+ADD_COMPILE_FLAGS(
+ ../extra/lz4/xxhash.c
+ COMPILE_FLAGS -DXXH_NAMESPACE=MY_
+)
+
# Fixes "C1128: number of sections exceeded object file format limit" in MSVC /MD
# The flag /bigobj is not added if the build is not /MD
IF(WIN32 AND CMAKE_SIZEOF_VOID_P MATCHES 8)
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index 50352b1..ea42ff5 100644
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -254,6 +254,7 @@ SET(SQL_SOURCE
${GEN_DIGEST_SOURCES}
${CONF_SOURCES}
${SQL_SHARED_SOURCES}
+ ../extra/lz4/xxhash.c
../libmysql/errmsg.c
../sql-common/client.c
../sql-common/client_plugin.c
@@ -314,6 +315,11 @@ ADD_COMPILE_FLAGS(
COMPILE_FLAGS -I${BOOST_PATCHES_DIR} -I${BOOST_INCLUDE_DIR}
)
+ADD_COMPILE_FLAGS(
+ ../extra/lz4/xxhash.c
+ COMPILE_FLAGS -DXXH_NAMESPACE=MY_
+)
+
# Fixes "C1128: number of sections exceeded object file format limit" in MSVC /MD
# The flag /bigobj is not added if the build is not WINDOWS_RUNTIME_MD (/MD)
IF(WINDOWS_RUNTIME_MD AND CMAKE_SIZEOF_VOID_P MATCHES 8)
diff --git a/sql/rpl_write_set_handler.cc b/sql/rpl_write_set_handler.cc
index 3897321..c7e778e 100644
--- a/sql/rpl_write_set_handler.cc
+++ b/sql/rpl_write_set_handler.cc
@@ -23,7 +23,7 @@
#include "table.h" // TABLE
#include "my_murmur3.h" // murmur3_32
-#include "xxhash.h" // xxHash
+#include "../extra/lz4/my_xxhash.h" // xxHash
#include <map>
#include <string>
@@ -61,7 +61,7 @@ template <class type> uint64 calc_hash(ulong algorithm, type T)
if(algorithm == HASH_ALGORITHM_MURMUR32)
return (murmur3_32((const uchar*)T, strlen(T), 0));
else
- return (XXH64((const uchar*)T, strlen(T), 0));
+ return (MY_XXH64((const uchar*)T, strlen(T), 0));
}
/**
--
2.1.0

View File

@ -79,7 +79,7 @@
%global sameevr %{?epoch:%{epoch}:}%{version}-%{release}
Name: community-mysql
Version: 5.7.14
Version: 5.7.15
Release: 1%{?with_debug:.debug}%{?dist}
Summary: MySQL client programs and shared libraries
Group: Applications/Databases
@ -120,8 +120,6 @@ Patch6: %{pkgnamepatch}-paths.patch
# Patches specific for this mysql package
Patch51: %{pkgnamepatch}-chain-certs.patch
Patch52: %{pkgnamepatch}-sharedir.patch
Patch53: %{pkgnamepatch}-5.7.14-lz4.patch
Patch54: %{pkgnamepatch}-5.7.14-buf-align.patch
Patch70: %{pkgnamepatch}-5.7.9-major.patch
# Patches taken from boost 1.59
@ -159,6 +157,7 @@ BuildRequires: perl(File::Temp)
BuildRequires: perl(Data::Dumper)
BuildRequires: perl(Getopt::Long)
BuildRequires: perl(IPC::Open3)
BuildRequires: perl(JSON)
BuildRequires: perl(Memoize)
BuildRequires: perl(Socket)
BuildRequires: perl(Sys::Hostname)
@ -354,6 +353,7 @@ Requires: perl(File::Temp)
Requires: perl(Data::Dumper)
Requires: perl(Getopt::Long)
Requires: perl(IPC::Open3)
Requires: perl(JSON)
Requires: perl(Socket)
Requires: perl(Sys::Hostname)
Requires: perl(Test::More)
@ -381,8 +381,6 @@ the MySQL sources.
%patch6 -p1
%patch51 -p1
%patch52 -p1
%patch53 -p1
%patch54 -p1
%if %{with_shared_lib_major_hack}
%patch70 -p1
%endif
@ -670,7 +668,7 @@ cp ../../mysql-test/%{skiplist} .
export MTR_BUILD_THREAD=%{__isa_bits}
./mtr \
--mem --parallel=auto --force --retry=0 \
--mysqld=--binlog-format=mixed \
--mysqld=--binlog-format=mixed --skip-rpl \
--suite-timeout=720 --testcase-timeout=30 \
--clean-vardir \
%if %{check_testsuite}
@ -945,6 +943,28 @@ fi
%endif
%changelog
* Tue Sep 06 2016 Norvald H. Ryeng <norvald.ryeng@oracle.com> - 5.7.15-1
- Update to MySQL 5.7.15, for various fixes described at
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-15.html
- Remove patches now upstream (buf_block_align, lz4)
- perl(JSON) needed for tests
* Wed Aug 10 2016 Norvald H. Ryeng <norvald.ryeng@oracle.com> - 5.7.14-2
- Skip rpl tests, unstable in Fedora build environment
* Tue Aug 09 2016 Norvald H. Ryeng <norvald.ryeng@oracle.com> - 5.7.14-1
- Update to MySQL 5.7.14, for various fixes described at
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-14.html
- Remove patches for bugs fixed upstream
- Fix for bug #79378 (buf_block_align)
- Fix for bug #82426 (build failure with system liblz4)
- Further reduce list of tests known to fail on certain platforms
- Set check_testsuite to 0 to make sure the build fails if any tests fail
* Wed Jul 13 2016 Norvald H. Ryeng <norvald.ryeng@oracle.com> - 5.7.13-1
- Update to MySQL 5.7.13, for various fixes described at
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-13.html
* Mon Jun 27 2016 Pavel Raiskup <praiskup@redhat.com> - 5.7.12-2
- BR multilib-rpm-config and use it for multilib workarounds

View File

@ -1 +1 @@
f90464874ee635ff63c436d1b64fe311 mysql-boost-5.7.14.tar.gz
21112d90f83987e731cb0ea02cd5f517 mysql-boost-5.7.15.tar.gz