]> TLD Linux GIT Repositories - packages/mysql.git/commitdiff
- Percona 5.7 is no longer available, MySQL 5.7 from PLD MYSQL_5_7
authorMarcin Krol <hawk@tld-linux.org>
Sun, 17 Dec 2023 13:42:48 +0000 (14:42 +0100)
committerMarcin Krol <hawk@tld-linux.org>
Sun, 17 Dec 2023 13:42:48 +0000 (14:42 +0100)
16 files changed:
build.patch [deleted file]
drop-sysctl_h.patch [deleted file]
mysql-5.7-sphinx.patch
mysql-chain-certs.patch
mysql-cmake.patch
mysql-dubious-exports.patch [deleted file]
mysql-opt.patch
mysql-protobuf.patch
mysql-readline.patch [new file with mode: 0644]
mysql-sphinx.patch
mysql-versioning.patch [deleted file]
mysql.init
mysql.spec
mysqld.conf
mysqldumpslow-clusters.patch [new file with mode: 0644]
ssl-errors.patch [new file with mode: 0644]

diff --git a/build.patch b/build.patch
deleted file mode 100644 (file)
index cbd9439..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -urNp -x '*.orig' percona-server-5.7.42-46.org/cmake/maintainer.cmake percona-server-5.7.42-46/cmake/maintainer.cmake
---- percona-server-5.7.42-46.org/cmake/maintainer.cmake        2023-05-29 10:24:29.000000000 +0200
-+++ percona-server-5.7.42-46/cmake/maintainer.cmake    2023-07-18 18:19:10.520022888 +0200
-@@ -45,12 +45,6 @@ IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang"
-   STRING_APPEND(MY_CXX_WARNING_FLAGS " -Wno-unused-parameter -Wno-unused-but-set-variable")
- ENDIF()
--# Turn on Werror (warning => error) when using maintainer mode.
--IF(MYSQL_MAINTAINER_MODE)
--  STRING_APPEND(MY_C_WARNING_FLAGS   " -Werror")
--  STRING_APPEND(MY_CXX_WARNING_FLAGS " -Werror")
--ENDIF()
--
- # Set warning flags for GCC/Clang
- IF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
-   STRING_APPEND(CMAKE_C_FLAGS " ${MY_C_WARNING_FLAGS}")
-diff -urNp -x '*.orig' percona-server-5.7.42-46.org/storage/rocksdb/CMakeLists.txt percona-server-5.7.42-46/storage/rocksdb/CMakeLists.txt
---- percona-server-5.7.42-46.org/storage/rocksdb/CMakeLists.txt        2023-07-18 18:18:54.474790338 +0200
-+++ percona-server-5.7.42-46/storage/rocksdb/CMakeLists.txt    2023-07-18 18:19:10.520022888 +0200
-@@ -57,7 +57,7 @@ ELSE()
-   # get a list of rocksdb library source files
-   # run with env -i to avoid passing variables
-   EXECUTE_PROCESS(
--    COMMAND env -i ${CMAKE_CURRENT_SOURCE_DIR}/get_rocksdb_files.sh
-+    COMMAND env -i PATH=$ENV{PATH} ${CMAKE_CURRENT_SOURCE_DIR}/get_rocksdb_files.sh
-     OUTPUT_VARIABLE SCRIPT_OUTPUT
-     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-   )
-diff -urNp -x '*.orig' percona-server-5.7.42-46.org/storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake percona-server-5.7.42-46/storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake
---- percona-server-5.7.42-46.org/storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake        2023-05-29 14:06:14.000000000 +0200
-+++ percona-server-5.7.42-46/storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake    2023-07-18 18:19:10.520022888 +0200
-@@ -221,10 +221,6 @@ if (NOT CMAKE_CXX_COMPILER_ID STREQUAL C
-   prepend_cflags_if_supported_remove_unsupported(-Wcast-align)
- endif ()
--## always want these
--set(CMAKE_C_FLAGS "-Wall -Werror ${CMAKE_C_FLAGS}")
--set(CMAKE_CXX_FLAGS "-Wall -Werror ${CMAKE_CXX_FLAGS}")
--
- # pick language dialect
- set(CMAKE_C_FLAGS "-std=c99 ${CMAKE_C_FLAGS}")
- check_cxx_compiler_flag(-std=c++11 HAVE_STDCXX11)
diff --git a/drop-sysctl_h.patch b/drop-sysctl_h.patch
deleted file mode 100644 (file)
index ea8d413..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-diff -ur percona-server-5.7.35-38.orig/extra/libevent/libevent-2.1.11-stable/arc4random.c percona-server-5.7.35-38/extra/libevent/libevent-2.1.11-stable/arc4random.c
---- percona-server-5.7.35-38.orig/extra/libevent/libevent-2.1.11-stable/arc4random.c   2021-11-25 02:40:14.583485712 +0100
-+++ percona-server-5.7.35-38/extra/libevent/libevent-2.1.11-stable/arc4random.c        2021-11-25 02:42:18.732780086 +0100
-@@ -60,9 +60,6 @@
- #include <unistd.h>
- #include <sys/param.h>
- #include <sys/time.h>
--#ifdef EVENT__HAVE_SYS_SYSCTL_H
--#include <sys/sysctl.h>
--#endif
- #endif
- #include <limits.h>
- #include <stdlib.h>
-diff -ur percona-server-5.7.35-38.orig/extra/libevent/libevent-2.1.11-stable/CMakeLists.txt percona-server-5.7.35-38/extra/libevent/libevent-2.1.11-stable/CMakeLists.txt
---- percona-server-5.7.35-38.orig/extra/libevent/libevent-2.1.11-stable/CMakeLists.txt 2021-11-25 02:40:14.582485710 +0100
-+++ percona-server-5.7.35-38/extra/libevent/libevent-2.1.11-stable/CMakeLists.txt      2021-11-25 02:43:37.682967284 +0100
-@@ -436,7 +436,6 @@
- CHECK_INCLUDE_FILE(netinet/tcp.h EVENT__HAVE_NETINET_TCP_H)
- CHECK_INCLUDE_FILE(sys/wait.h EVENT__HAVE_SYS_WAIT_H)
- CHECK_INCLUDE_FILE(sys/resource.h EVENT__HAVE_SYS_RESOURCE_H)
--CHECK_INCLUDE_FILE(sys/sysctl.h EVENT__HAVE_SYS_SYSCTL_H)
- CHECK_INCLUDE_FILE(sys/timerfd.h EVENT__HAVE_SYS_TIMERFD_H)
- CHECK_INCLUDE_FILE(errno.h EVENT__HAVE_ERRNO_H)
-@@ -580,10 +579,6 @@
- CHECK_SYMBOL_EXISTS("__FUNCTION__" "" EVENT__HAVE___FUNCTION__)
- CHECK_SYMBOL_EXISTS(TAILQ_FOREACH sys/queue.h EVENT__HAVE_TAILQFOREACH)
--CHECK_CONST_EXISTS(CTL_KERN sys/sysctl.h EVENT__HAVE_DECL_CTL_KERN)
--CHECK_CONST_EXISTS(KERN_ARND sys/sysctl.h EVENT__HAVE_DECL_KERN_ARND)
--CHECK_CONST_EXISTS(KERN_RANDOM sys/sysctl.h EVENT__HAVE_DECL_KERN_RANDOM)
--CHECK_CONST_EXISTS(RANDOM_UUID sys/sysctl.h EVENT__HAVE_DECL_RANDOM_UUID)
- CHECK_SYMBOL_EXISTS(F_SETFD fcntl.h EVENT__HAVE_SETFD)
- CHECK_TYPE_SIZE(fd_mask EVENT__HAVE_FD_MASK)
-diff -ur percona-server-5.7.35-38.orig/extra/libevent/libevent-2.1.11-stable/event-config.h.cmake percona-server-5.7.35-38/extra/libevent/libevent-2.1.11-stable/event-config.h.cmake
---- percona-server-5.7.35-38.orig/extra/libevent/libevent-2.1.11-stable/event-config.h.cmake   2021-11-25 02:40:14.584485715 +0100
-+++ percona-server-5.7.35-38/extra/libevent/libevent-2.1.11-stable/event-config.h.cmake        2021-11-25 02:43:55.547009642 +0100
-@@ -367,9 +367,6 @@
- /* Define to 1 if you have the <sys/stat.h> header file. */
- #cmakedefine EVENT__HAVE_SYS_STAT_H 1
--/* Define to 1 if you have the <sys/sysctl.h> header file. */
--#cmakedefine EVENT__HAVE_SYS_SYSCTL_H 1
--
- /* Define to 1 if you have the <sys/timerfd.h> header file. */
- #cmakedefine EVENT__HAVE_SYS_TIMERFD_H 1
-diff -ur percona-server-5.7.35-38.orig/mysys/my_gethwaddr.c percona-server-5.7.35-38/mysys/my_gethwaddr.c
---- percona-server-5.7.35-38.orig/mysys/my_gethwaddr.c 2021-11-25 02:40:16.802490974 +0100
-+++ percona-server-5.7.35-38/mysys/my_gethwaddr.c      2021-11-25 02:41:02.815600077 +0100
-@@ -37,7 +37,6 @@
- #ifdef __FreeBSD__
- #include <net/ethernet.h>
--#include <sys/sysctl.h>
- #include <net/route.h>
- #include <net/if.h>
- #include <net/if_dl.h>
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/cmake_modules/TokuFeatureDetection.cmake percona-server-5.7.35-38/storage/tokudb/PerconaFT/cmake_modules/TokuFeatureDetection.cmake
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/cmake_modules/TokuFeatureDetection.cmake    2021-11-25 02:40:20.529499811 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/cmake_modules/TokuFeatureDetection.cmake 2021-11-25 02:41:02.824600099 +0100
-@@ -39,7 +39,6 @@
- check_include_files(sys/resource.h HAVE_SYS_RESOURCE_H)
- check_include_files(sys/statvfs.h HAVE_SYS_STATVFS_H)
- check_include_files(sys/syscall.h HAVE_SYS_SYSCALL_H)
--check_include_files(sys/sysctl.h HAVE_SYS_SYSCTL_H)
- check_include_files(sys/syslimits.h HAVE_SYS_SYSLIMITS_H)
- check_include_files(sys/time.h HAVE_SYS_TIME_H)
- check_include_files(unistd.h HAVE_UNISTD_H)
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/portability/portability.cc percona-server-5.7.35-38/storage/tokudb/PerconaFT/portability/portability.cc
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/portability/portability.cc  2021-11-25 02:40:20.665500134 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/portability/portability.cc       2021-11-25 02:46:09.913328241 +0100
-@@ -60,9 +60,6 @@
- #if defined(HAVE_SYS_SYSCALL_H)
- # include <sys/syscall.h>
- #endif
--#if defined(HAVE_SYS_SYSCTL_H) && !defined(_SC_PHYS_PAGES)
--# include <sys/sysctl.h>
--#endif
- #if defined(HAVE_PTHREAD_NP_H)
- # include <pthread_np.h>
- #endif
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/config.h.in percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/config.h.in
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/config.h.in      2021-11-25 02:40:21.001500930 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/config.h.in   2021-11-25 02:42:31.834811153 +0100
-@@ -231,9 +231,6 @@
- /* Define to 1 if you have the <sys/stat.h> header file. */
- #undef HAVE_SYS_STAT_H
--/* Define to 1 if you have the <sys/sysctl.h> header file. */
--#undef HAVE_SYS_SYSCTL_H
--
- /* Define to 1 if you have the <sys/time.h> header file. */
- #undef HAVE_SYS_TIME_H
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure        2021-11-25 02:40:21.017500968 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure     2021-11-25 02:42:31.837811159 +0100
-@@ -16181,7 +16181,7 @@
--for ac_header in sys/param.h sys/sysctl.h byteswap.h
-+for ac_header in sys/param.h byteswap.h
- do
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-@@ -19545,7 +19545,6 @@
- #ifdef HAVE_SYS_PARAM_H
- #     include <sys/param.h>
- #endif
--#include <sys/sysctl.h>
- int
- main(void)
- {
-@@ -19723,7 +19722,6 @@
- #ifdef HAVE_SYS_PARAM_H
- #     include <sys/param.h>
- #endif
--#include <sys/sysctl.h>
- int
- main(void)
- {
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac     2021-11-25 02:40:21.017500968 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/configure.ac  2021-11-25 02:42:31.837811159 +0100
-@@ -476,7 +476,7 @@
-       [AC_MSG_ERROR([Required header file(s) are missing.])])
- # If any of these headers are missing, things should still work correctly:
--AC_CHECK_HEADERS([sys/param.h sys/sysctl.h byteswap.h],
-+AC_CHECK_HEADERS([sys/param.h byteswap.h],
-       [], [], [
- #ifdef HAVE_SYS_PARAM_H
- #     include <sys/param.h>
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_cpucores.m4 percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_cpucores.m4
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_cpucores.m4        2021-11-25 02:40:20.936500776 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_cpucores.m4     2021-11-25 02:42:31.838811162 +0100
-@@ -36,7 +36,6 @@
- #ifdef HAVE_SYS_PARAM_H
- #     include <sys/param.h>
- #endif
--#include <sys/sysctl.h>
- int
- main(void)
- {
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_physmem.m4 percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_physmem.m4
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_physmem.m4 2021-11-25 02:40:20.936500776 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/m4/lc_physmem.m4      2021-11-25 02:42:31.838811162 +0100
-@@ -38,7 +38,6 @@
- #ifdef HAVE_SYS_PARAM_H
- #     include <sys/param.h>
- #endif
--#include <sys/sysctl.h>
- int
- main(void)
- {
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/cpucores.h percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/cpucores.h
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/cpucores.h    2021-11-25 02:40:20.948500805 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/cpucores.h 2021-11-25 02:42:31.838811162 +0100
-@@ -22,9 +22,6 @@
- #     ifdef HAVE_SYS_PARAM_H
- #             include <sys/param.h>
- #     endif
--#     ifdef HAVE_SYS_SYSCTL_H
--#             include <sys/sysctl.h>
--#     endif
- #endif
-diff -ur percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/physmem.h percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/physmem.h
---- percona-server-5.7.35-38.orig/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/physmem.h     2021-11-25 02:40:20.948500805 +0100
-+++ percona-server-5.7.35-38/storage/tokudb/PerconaFT/third_party/xz-4.999.9beta/src/common/physmem.h  2021-11-25 02:42:31.838811162 +0100
-@@ -31,9 +31,6 @@
- #     ifdef HAVE_SYS_PARAM_H
- #             include <sys/param.h>
- #     endif
--#     ifdef HAVE_SYS_SYSCTL_H
--#             include <sys/sysctl.h>
--#     endif
- #elif defined(HAVE_PHYSMEM_SYSINFO)
- #     include <sys/sysinfo.h>
index 2f558da770603606bf0e00d99dfed3dffee57724..a47ed9d5a769704899e8bcbc20b8b2280592f6aa 100644 (file)
@@ -1,11 +1,22 @@
-diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-server-5.7.35-38/storage/sphinx/ha_sphinx.cc
---- percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc  2021-11-24 19:47:23.900607509 +0100
-+++ percona-server-5.7.35-38/storage/sphinx/ha_sphinx.cc       2021-11-24 19:47:54.875680910 +0100
+From d4273a352d22e8c5e924bc4fd094fc7d9f8e047f Mon Sep 17 00:00:00 2001
+From: riden <denis.doronin@gmail.com>
+Date: Thu, 26 Nov 2015 03:51:40 +0200
+Subject: [PATCH] MySQLSE MySQL 5.7 support
+
+---
+ mysqlse/ha_sphinx.cc    | 66 ++++++++++++++++++++++++++++++++++++++-----------
+ mysqlse/snippets_udf.cc | 22 +++++++++++++----
+ 2 files changed, 68 insertions(+), 20 deletions(-)
+
+diff --git a/storage/sphinx/ha_sphinx.cc b/storage/sphinx/ha_sphinx.cc
+index 8eabe87..e6a49a8 100644
+--- a/storage/sphinx/ha_sphinx.cc
++++ b/storage/sphinx/ha_sphinx.cc
 @@ -34,13 +34,37 @@
  #include "../mysql_priv.h"
  #endif
  
-+#if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID>=50709
++#if MYSQL_VERSION_ID>=50709
 +#include "item_timefunc.h"
 +#define sphinx_append push_back
 +#define sphinx_array std::vector
@@ -32,7 +43,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
  #ifndef __WIN__
        // UNIX-specific
 -      #include <my_net.h>
-+      #if  !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID>=50709
++      #if MYSQL_VERSION_ID>=50709
 +              #include <arpa/inet.h>
 +      #else
 +              #include <my_net.h>
@@ -40,11 +51,11 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
        #include <netdb.h>
        #include <sys/un.h>
  
-@@ -286,6 +310,12 @@
+@@ -286,6 +310,12 @@ inline void SPH_DEBUG ( const char *, ... ) {}
  #define SafeDelete(_arg)              { if ( _arg ) delete ( _arg );          (_arg) = NULL; }
  #define SafeDeleteArray(_arg) { if ( _arg ) delete [] ( _arg );       (_arg) = NULL; }
  
-+#if  !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID>=50709
++#if MYSQL_VERSION_ID>=50709
 +#ifdef __WIN__
 +typedef native_mutex_t pthread_mutex_t;
 +#endif
@@ -53,7 +64,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
  //////////////////////////////////////////////////////////////////////////////
  
  /// per-table structure that will be shared among all open Sphinx SE handlers
-@@ -602,10 +632,10 @@
+@@ -602,10 +632,10 @@ struct CSphSEQuery
                };
                char *                                          m_sName; ///< points to query buffer
                int                                                     m_iType;
@@ -67,24 +78,11 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
  
  public:
        char                    m_sParseError[256];
-@@ -634,10 +664,10 @@
-       void                    SendString ( const char * v )   { int iLen = strlen(v); SendDword(iLen); SendBytes ( v, iLen ); }
-       void                    SendFloat ( float v )                   { SendDword ( sphF2DW(v) ); }
- };
--
-+#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
- template int CSphSEQuery::ParseArray<uint32> ( uint32 **, const char * );
- template int CSphSEQuery::ParseArray<longlong> ( longlong **, const char * );
--
-+#endif
- //////////////////////////////////////////////////////////////////////////////
- #if MYSQL_VERSION_ID>50100
-@@ -733,13 +763,21 @@
+@@ -733,9 +763,13 @@ static int sphinx_init_func ( void * p )
        {
                sphinx_init = 1;
                void ( pthread_mutex_init ( &sphinx_mutex, MY_MUTEX_INIT_FAST ) );
-+              #if  !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50709
++              #if MYSQL_VERSION_ID >= 50709
 +              sphinx_hash_init ( &sphinx_open_tables, system_charset_info, 32, 0, 0,
 +                      sphinx_get_key, 0, 0, 0 );
 +              #else
@@ -95,32 +93,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
                #if MYSQL_VERSION_ID > 50100
                handlerton * hton = (handlerton*) p;
                hton->state = SHOW_OPTION_YES;
-+              #if  !defined(MARIADB_BASE_VERSION)
-               hton->db_type = DB_TYPE_FIRST_DYNAMIC;
-+              #else
-+              hton->db_type = DB_TYPE_AUTOASSIGN;
-+              #endif
-               hton->create = sphinx_create_handler;
-               hton->close_connection = sphinx_close_connection;
-               hton->show_status = sphinx_show_status;
-@@ -855,10 +893,15 @@
-               SPH_RET(TRUE);
-       }
-       CSphTLS * pTls = (CSphTLS*) thd->ha_data[sphinx_hton.slot];
--
-+      #ifndef MARIADB_BASE_VERSION
-       field_list.push_back ( new Item_empty_string ( "Type", 10 ) );
-       field_list.push_back ( new Item_empty_string ( "Name", FN_REFLEN ) );
-       field_list.push_back ( new Item_empty_string ( "Status", 10 ) );
-+      #else
-+      field_list.push_back ( new Item_empty_string ( thd, "Type", 10 ) );
-+      field_list.push_back ( new Item_empty_string ( thd, "Name", FN_REFLEN ) );
-+      field_list.push_back ( new Item_empty_string ( thd, "Status", 10 ) );
-+      #endif
-       if ( protocol->send_fields ( &field_list, Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF ) )
-               SPH_RET(TRUE);
-@@ -1321,7 +1364,7 @@
+@@ -1321,7 +1355,7 @@ CSphSEQuery::~CSphSEQuery ()
        SafeDeleteArray ( m_sQueryBuffer );
        SafeDeleteArray ( m_pWeights );
        SafeDeleteArray ( m_pBuf );
@@ -129,32 +102,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
                SafeDelete ( m_dOverrides.at(i) );
        SPH_VOID_RET();
  }
-@@ -1412,6 +1455,15 @@
-       return c=='@';
- }
-+static bool myisjson ( char c )
-+{
-+      return
-+              c=='.' ||
-+              c=='[' ||
-+              c==']';
-+}
-+
-+
- bool CSphSEQuery::ParseField ( char * sField )
- {
-@@ -1623,7 +1675,7 @@
-                               break;
-                       tFilter.m_sAttrName = sValue;
--                      while ( (*sValue) && ( myisattr(*sValue) || myismagic(*sValue) ) )
-+                      while ( (*sValue) && ( myisattr(*sValue) || myismagic(*sValue) ) || myisjson(*sValue)  )
-                               sValue++;
-                       if ( !*sValue )
-                               break;
-@@ -1789,7 +1841,7 @@
+@@ -1789,7 +1823,7 @@ bool CSphSEQuery::ParseField ( char * sField )
                                pOverride = new CSphSEQuery::Override_t;
                                pOverride->m_sName = chop(sName);
                                pOverride->m_iType = iType;
@@ -163,7 +111,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
                        }
  
                        ulonglong uId = strtoull ( sId, NULL, 10 );
-@@ -1801,8 +1853,8 @@
+@@ -1801,8 +1835,8 @@ bool CSphSEQuery::ParseField ( char * sField )
                        else
                                tValue.m_uValue = (uint32)strtoul ( sValue, NULL, 10 );
  
@@ -174,7 +122,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
                }
  
                if ( !pOverride )
-@@ -1906,11 +1958,11 @@
+@@ -1906,11 +1940,11 @@ int CSphSEQuery::BuildRequest ( char ** ppBuffer )
                iReqSize += 8 + strlen(m_sFieldWeight[i] );
        // overrides
        iReqSize += 4;
@@ -188,7 +136,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
        }
        // select
        iReqSize += 4;
-@@ -2012,14 +2064,14 @@
+@@ -2012,14 +2046,14 @@ int CSphSEQuery::BuildRequest ( char ** ppBuffer )
        SendString ( m_sComment );
  
        // overrides
@@ -207,19 +155,7 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
                {
                        SendUint64 ( pOverride->m_dIds.at(j) );
                        if ( pOverride->m_iType==SPH_ATTR_FLOAT )
-@@ -2045,9 +2097,9 @@
- //////////////////////////////////////////////////////////////////////////////
- // SPHINX HANDLER
- //////////////////////////////////////////////////////////////////////////////
--
-+#ifndef MARIADB_BASE_VERSION
- static const char * ha_sphinx_exts[] = { NullS };
--
-+#endif
- #if MYSQL_VERSION_ID<50100
- ha_sphinx::ha_sphinx ( TABLE_ARG * table )
-@@ -2073,8 +2125,10 @@
+@@ -2073,8 +2107,10 @@ ha_sphinx::ha_sphinx ( handlerton * hton, TABLE_ARG * table )
        , m_dUnboundFields ( NULL )
  {
        SPH_ENTER_METHOD();
@@ -230,202 +166,69 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve
        SPH_VOID_RET();
  }
  
-@@ -2082,11 +2136,24 @@
- // If frm_error() is called then we will use this to to find out what file extentions
- // exist for the storage engine. This is also used by the default rename_table and
- // delete_table method in handler.cc.
-+#ifndef MARIADB_BASE_VERSION
- const char ** ha_sphinx::bas_ext() const
- {
-       return ha_sphinx_exts;
- }
--
-+#else
-+ha_sphinx::~ha_sphinx()
-+{
-+  SafeDeleteArray ( m_dAttrs );
-+  SafeDeleteArray ( m_dUnboundFields );
-+  if ( m_dFields )
-+  {
-+    for (uint32 i=0; i< m_iFields; i++ )
-+      SafeDeleteArray ( m_dFields[i] );
-+    delete [] m_dFields;
-+  }
-+}
-+#endif
- // Used for opening tables. The name will be the name of the file.
- // A table is opened when it needs to be opened. For instance
-@@ -2349,11 +2416,19 @@
-                       sQuery.append ( "''" );
-               } else
--              {
-+              {       
-+                      #if  MYSQL_VERSION_ID>=100000
-+                              THD *thd= ha_thd();
-+                      #endif
-                       if ( (*ppField)->type()==MYSQL_TYPE_TIMESTAMP )
-                       {
--                              Item_field * pWrap = new Item_field ( *ppField ); // autofreed by query arena, I assume
--                              Item_func_unix_timestamp * pConv = new Item_func_unix_timestamp ( pWrap );
-+                              #if  MYSQL_VERSION_ID>=100000
-+                                      Item_field * pWrap = new (thd->mem_root) Item_field(thd, *ppField); // autofreed by query arena, I assume
-+                                      Item_func_unix_timestamp * pConv = new (thd->mem_root) Item_func_unix_timestamp(thd, pWrap);
-+                              #else
-+                                      Item_field * pWrap = new Item_field ( *ppField ); // autofreed by query arena, I assume
-+                                      Item_func_unix_timestamp * pConv = new Item_func_unix_timestamp ( pWrap );
-+                              #endif
-                               pConv->quick_fix_field();
-                               unsigned int uTs = (unsigned int) pConv->val_int();
+diff --git a/storage/sphinx/snippets_udf.cc b/storage/sphinx/snippets_udf.cc
+index d0899e8..e9f7bc0 100644
+--- a/storage/sphinx/snippets_udf.cc
++++ b/storage/sphinx/snippets_udf.cc
+@@ -17,13 +17,16 @@
+ #include <string.h>
+ #include <assert.h>
  
-@@ -2390,7 +2465,10 @@
+-#ifndef __WIN__
++#include <mysql_version.h>
++
++#ifndef _WIN32
++#if MYSQL_VERSION_ID>=50709
++#include <arpa/inet.h>
++#endif
+ #include <sys/un.h>
+ #include <netdb.h>
+ #endif
  
-       unsigned int uTimeout = 1;
-       mysql_options ( pConn, MYSQL_OPT_CONNECT_TIMEOUT, (const char*)&uTimeout );
+-#include <mysql_version.h>
 -
-+      #ifdef MARIADB_BASE_VERSION
-+        my_bool my_true= 1;
-+        mysql_options(pConn, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY, (char*) &my_true);
-+      #endif
-       if ( !mysql_real_connect ( pConn, m_pShare->m_sHost, "root", "", "", m_pShare->m_iPort, m_pShare->m_sSocket, 0 ) )
-               SPH_RET ( HandleMysqlError ( pConn, ER_CONNECT_TO_FOREIGN_DATA_SOURCE ) );
-@@ -2449,6 +2527,10 @@
-       unsigned int uTimeout = 1;
-       mysql_options ( pConn, MYSQL_OPT_CONNECT_TIMEOUT, (const char*)&uTimeout );
-+      #ifdef MARIADB_BASE_VERSION
-+        my_bool my_true= 1;
-+        mysql_options(pConn, MYSQL_OPT_USE_THREAD_SPECIFIC_MEMORY, (char*) &my_true);
-+      #endif
-       if ( !mysql_real_connect ( pConn, m_pShare->m_sHost, "root", "", "", m_pShare->m_iPort, m_pShare->m_sSocket, 0 ) )
-               SPH_RET ( HandleMysqlError ( pConn, ER_CONNECT_TO_FOREIGN_DATA_SOURCE ) );
-@@ -2756,11 +2838,19 @@
-                               break;
-                       // copy the query, and let know that we intercepted this condition
--                      Item_string * pString = (Item_string *) args[1];
--                      pTable->m_bQuery = true;
-+                      #if MYSQL_VERSION_ID>=100000
-+                        String *pString= args[1]->val_str(NULL);
-+                        pTable->m_bQuery = true;
-+                      strncpy ( pTable->m_sQuery, pString->c_ptr(), sizeof(pTable->m_sQuery) );
-+                      pTable->m_sQuery[sizeof(pTable->m_sQuery)-1] = '\0';
-+                      pTable->m_pQueryCharset = pString->charset();
-+                      #else
-+                      Item_string * pString = (Item_string *) args[1];
-+                        pTable->m_bQuery = true;
-                       strncpy ( pTable->m_sQuery, pString->str_value.c_ptr(), sizeof(pTable->m_sQuery) );
-                       pTable->m_sQuery[sizeof(pTable->m_sQuery)-1] = '\0';
-                       pTable->m_pQueryCharset = pString->str_value.charset();
-+                      #endif
-               } else
-               {
-@@ -3540,7 +3630,7 @@
+ #if MYSQL_VERSION_ID>=50515
+ #include "sql_class.h"
+ #include "sql_array.h"
+@@ -34,6 +37,13 @@
+ #include "../mysql_priv.h"
  #endif
  
-       out->type = SHOW_CHAR;
--      out->value = "";
-+      out->value =  "";
-       return 0;
- }
++#ifdef _WIN32
++#if MYSQL_VERSION_ID>=50709
++#define in_addr_t uint32
++#include <winsock2.h>
++#endif
++#endif
++
+ #include <mysys_err.h>
+ #include <my_sys.h>
  
-@@ -3673,7 +3763,25 @@
-       {0, 0, (enum_mysql_show_type)0}
- };
+@@ -90,7 +100,9 @@ void sphUnalignedWrite ( void * pPtr, const T & tVal )
  
--
-+#ifdef MARIADB_BASE_VERSION
-+maria_declare_plugin(sphinx)
-+{
-+      MYSQL_STORAGE_ENGINE_PLUGIN,
-+      &sphinx_storage_engine,
-+      sphinx_hton_name,
-+      "Sphinx developers",
-+      sphinx_hton_comment,
-+      PLUGIN_LICENSE_GPL,
-+      sphinx_init_func, // Plugin Init
-+      sphinx_done_func, // Plugin Deinit
-+      0x0202, // 2.2
-+      sphinx_status_vars,
-+      NULL,
-+      SPHINXSE_VERSION, // string version
-+MariaDB_PLUGIN_MATURITY_GAMMA
-+}
-+maria_declare_plugin_end;
-+#else
- mysql_declare_plugin(sphinx)
- {
-       MYSQL_STORAGE_ENGINE_PLUGIN,
-@@ -3690,7 +3798,7 @@
-       NULL
- }
- mysql_declare_plugin_end;
--
-+#endif
- #endif // >50100
+ #define Min(a,b) ((a)<(b)?(a):(b))
  
- //
-diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.h percona-server-5.7.35-38/storage/sphinx/ha_sphinx.h
---- percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.h   2021-11-24 19:47:23.900607509 +0100
-+++ percona-server-5.7.35-38/storage/sphinx/ha_sphinx.h        2021-11-24 19:47:55.056681337 +0100
-@@ -53,14 +53,24 @@
- #else
-                                       ha_sphinx ( handlerton * hton, TABLE_ARG * table_arg );
- #endif
--                                      ~ha_sphinx () {}
-+#ifndef MARIADB_BASE_VERSION
-+                                      ~ha_sphinx (){}
-+#else
-+                                        ~ha_sphinx ();
++#if !defined(_WIN32)
+ typedef unsigned int DWORD;
 +#endif
  
-       const char *    table_type () const             { return "SPHINX"; }    ///< SE name for display purposes
-       const char *    index_type ( uint )             { return "HASH"; }              ///< index type name for display purposes
--      const char **   bas_ext () const;                                                               ///< my file extensions
--
-+      #ifndef MARIADB_BASE_VERSION
-+      const char **   bas_ext () const;
-+      #endif
-       #if MYSQL_VERSION_ID>50100
--      ulonglong               table_flags () const    { return HA_CAN_INDEX_BLOBS; }                  ///< bitmap of implemented flags (see handler.h for more info)
-+      #ifdef MARIADB_BASE_VERSION
-+      ulonglong               table_flags () const    { return HA_CAN_INDEX_BLOBS | 
-+                                                                 HA_CAN_TABLE_CONDITION_PUSHDOWN; } ///< bitmap of implemented flags (see handler.h for more info)
-+      #else
-+      ulonglong               table_flags () const    { return HA_CAN_INDEX_BLOBS;  }
-+      #endif
-       #else
-       ulong                   table_flags () const    { return HA_CAN_INDEX_BLOBS; }                  ///< bitmap of implemented flags (see handler.h for more info)
-       #endif
-@@ -77,8 +87,12 @@
-       #else
-       virtual double  scan_time ()    { return (double)( records+deleted )/20.0 + 10; }                               ///< called in test_quick_select to determine if indexes should be used
-       #endif
--
--      virtual double  read_time ( ha_rows rows )      { return (double)rows/20.0 + 1; }                                       ///< index read time estimate
-+      #ifdef MARIADB_BASE_VERSION
-+        virtual double read_time(uint index, uint ranges, ha_rows rows)
-+      { return ranges + (double)rows/20.0 + 1; }                                      ///< index read time estimate
-+      #else
-+      virtual double  read_time ( ha_rows rows )      { return (double)rows/20.0 + 1; }
-+      #endif
+ inline DWORD sphF2DW ( float f ) { union { float f; uint32 d; } u; u.f = f; return u.d; }
  
- public:
-       int                             open ( const char * name, int mode, uint test_if_locked );
-diff -ur percona-server-5.7.35-38.orig/storage/sphinx/snippets_udf.cc percona-server-5.7.35-38/storage/sphinx/snippets_udf.cc
---- percona-server-5.7.35-38.orig/storage/sphinx/snippets_udf.cc       2021-11-24 19:47:23.900607509 +0100
-+++ percona-server-5.7.35-38/storage/sphinx/snippets_udf.cc    2021-11-24 19:47:55.056681337 +0100
-@@ -34,6 +34,9 @@
- #include "../mysql_priv.h"
+@@ -359,7 +371,7 @@ bool CSphUrl::Parse ( const char * sUrl, int iLen )
+ int CSphUrl::Connect()
+ {
+       struct sockaddr_in sin;
+-#ifndef __WIN__
++#ifndef _WIN32
+       struct sockaddr_un saun;
  #endif
  
-+#if  !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID>=50709
-+      #include <arpa/inet.h>
-+#endif
- #include <mysys_err.h>
- #include <my_sys.h>
+@@ -426,7 +438,7 @@ int CSphUrl::Connect()
+               }
+       } else
+       {
+-#ifndef __WIN__
++#ifndef _WIN32
+               iDomain = AF_UNIX;
+               iSockaddrSize = sizeof(saun);
+               pSockaddr = (struct sockaddr *) &saun;
index 36c1cd357383e173aa3729008b1e94d1fccf753e..7f18fe2c9cc7507591cf5260c8b820885e2e0c4a 100644 (file)
@@ -1,7 +1,19 @@
-diff -ur percona-server-5.7.35-38.orig/vio/viosslfactories.c percona-server-5.7.35-38/vio/viosslfactories.c
---- percona-server-5.7.35-38.orig/vio/viosslfactories.c        2021-11-24 19:48:22.417746172 +0100
-+++ percona-server-5.7.35-38/vio/viosslfactories.c     2021-11-24 19:48:50.473812651 +0100
-@@ -200,7 +200,7 @@
+Fix things so that chains of certificates work in the server and client
+certificate files.
+
+This only really works for OpenSSL-based builds, as yassl is unable to read
+multiple certificates from a file.  The patch below to yassl/src/ssl.cpp
+doesn't fix that, but just arranges that the viosslfactories.c patch won't
+have any ill effects in a yassl build.  Since we don't use yassl in Red Hat/
+Fedora builds, I'm not feeling motivated to try to fix yassl for this.
+
+See RH bug #598656.  Filed upstream at http://bugs.mysql.com/bug.php?id=54158
+
+
+diff -Naur mysql-5.1.47.orig/vio/viosslfactories.c mysql-5.1.47/vio/viosslfactories.c
+--- mysql-5.1.47.orig/vio/viosslfactories.c    2010-05-06 11:28:07.000000000 -0400
++++ mysql-5.1.47/vio/viosslfactories.c 2010-05-26 23:23:46.000000000 -0400
+@@ -106,7 +106,7 @@
      key_file= cert_file;
  
    if (cert_file &&
index b26722a8b40411d25fe66910200f6c613150e75e..ac380811704a8008c467b7433aeb4d8edc1ef035 100644 (file)
@@ -1,7 +1,7 @@
-diff -ur percona-server-5.7.35-38.orig/cmake/readline.cmake percona-server-5.7.35-38/cmake/readline.cmake
---- percona-server-5.7.35-38.orig/cmake/readline.cmake 2021-11-24 19:49:56.851969940 +0100
-+++ percona-server-5.7.35-38/cmake/readline.cmake      2021-11-24 19:50:52.286101293 +0100
-@@ -110,23 +110,23 @@
+diff -ruN mysql-5.7.21.orig/cmake/readline.cmake mysql-5.7.21/cmake/readline.cmake
+--- mysql-5.7.21.orig/cmake/readline.cmake     2017-12-28 04:46:26.000000000 +0100
++++ mysql-5.7.21/cmake/readline.cmake  2018-03-31 21:17:28.373826351 +0200
+@@ -110,23 +110,23 @@ ENDMACRO()
  
  MACRO (FIND_SYSTEM_EDITLINE)
    FIND_PATH(FOUND_EDITLINE_READLINE
@@ -29,7 +29,7 @@ diff -ur percona-server-5.7.35-38.orig/cmake/readline.cmake percona-server-5.7.3
    )
    MARK_AS_ADVANCED(EDITLINE_INCLUDE_DIR EDITLINE_LIBRARY)
  
-@@ -141,7 +141,7 @@
+@@ -139,7 +139,7 @@ MACRO (FIND_SYSTEM_EDITLINE)
      LIST(APPEND CMAKE_REQUIRED_LIBRARIES ${EDITLINE_LIBRARY})
      CHECK_CXX_SOURCE_COMPILES("
      #include <stdio.h>
@@ -38,7 +38,7 @@ diff -ur percona-server-5.7.35-38.orig/cmake/readline.cmake percona-server-5.7.3
      int main(int argc, char **argv)
      {
         HIST_ENTRY entry;
-@@ -151,14 +151,13 @@
+@@ -149,14 +149,13 @@ MACRO (FIND_SYSTEM_EDITLINE)
  
      CHECK_CXX_SOURCE_COMPILES("
      #include <stdio.h>
@@ -56,5 +56,14 @@ diff -ur percona-server-5.7.35-38.orig/cmake/readline.cmake percona-server-5.7.3
 +      rl_completion_matches(0,0);
 +      return res ? 0 : 1;
      }"
-     XLINE_HAVE_COMPLETION_INT)
+     EDITLINE_HAVE_COMPLETION_INT)
  
+@@ -168,7 +167,7 @@ MACRO (FIND_SYSTEM_EDITLINE)
+       typedef char* MYFunction(const char*, int);
+       MYFunction* myf= rl_completion_entry_function;
+       char *res= (myf)(NULL, 0);
+-      completion_matches(0,0);
++      rl_completion_matches(0,0);
+       return res != NULL;
+     }"
+     EDITLINE_HAVE_COMPLETION_CHAR)
diff --git a/mysql-dubious-exports.patch b/mysql-dubious-exports.patch
deleted file mode 100644 (file)
index a928927..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -ur percona-server-5.7.35-38.orig/include/m_string.h percona-server-5.7.35-38/include/m_string.h
---- percona-server-5.7.35-38.orig/include/m_string.h   2021-11-24 19:49:05.797848959 +0100
-+++ percona-server-5.7.35-38/include/m_string.h        2021-11-24 19:49:38.519926500 +0100
-@@ -193,6 +193,7 @@
- extern size_t strnlen(const char *s, size_t n);
- #endif
-+#define is_prefix mysql_is_prefix             /* namespace sanity */
- extern int is_prefix(const char *, const char *);
- /* Conversion routines */
-diff -ur percona-server-5.7.35-38.orig/include/mysql_com.h percona-server-5.7.35-38/include/mysql_com.h
---- percona-server-5.7.35-38.orig/include/mysql_com.h  2021-11-24 19:49:05.801848968 +0100
-+++ percona-server-5.7.35-38/include/mysql_com.h       2021-11-24 19:49:38.553926581 +0100
-@@ -522,6 +522,7 @@
- void net_end(NET *net);
- void net_clear(NET *net, my_bool check_buffer);
- void net_claim_memory_ownership(NET *net);
-+#define net_realloc mysql_net_realloc          /* namespace sanity */
- my_bool net_realloc(NET *net, size_t length);
- my_bool       net_flush(NET *net);
- my_bool       my_net_write(NET *net,const unsigned char *packet, size_t len);
-diff -ur percona-server-5.7.35-38.orig/include/mysql.h.pp percona-server-5.7.35-38/include/mysql.h.pp
---- percona-server-5.7.35-38.orig/include/mysql.h.pp   2021-11-24 19:49:05.799848964 +0100
-+++ percona-server-5.7.35-38/include/mysql.h.pp        2021-11-24 19:49:38.552926579 +0100
-@@ -128,7 +128,7 @@
- void net_end(NET *net);
- void net_clear(NET *net, my_bool check_buffer);
- void net_claim_memory_ownership(NET *net);
--my_bool net_realloc(NET *net, size_t length);
-+my_bool mysql_net_realloc(NET *net, size_t length);
- my_bool net_flush(NET *net);
- my_bool my_net_write(NET *net,const unsigned char *packet, size_t len);
- my_bool net_write_command(NET *net,unsigned char command,
-diff -ur percona-server-5.7.35-38.orig/include/my_sys.h percona-server-5.7.35-38/include/my_sys.h
---- percona-server-5.7.35-38.orig/include/my_sys.h     2021-11-24 19:49:05.798848961 +0100
-+++ percona-server-5.7.35-38/include/my_sys.h  2021-11-24 19:49:38.552926579 +0100
-@@ -261,6 +261,7 @@
- /* charsets */
- #define MY_ALL_CHARSETS_SIZE 2048
-+#define default_charset_info mysql_default_charset_info       /* namespace sanity */
- extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_charset_info;
- extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *all_charsets[MY_ALL_CHARSETS_SIZE];
- extern CHARSET_INFO compiled_charsets[];
-@@ -999,6 +1000,9 @@
- extern uint get_collation_number(const char *name);
- extern const char *get_charset_name(uint cs_number);
-+#define get_charset mysql_get_charset         /* namespace sanity */
-+#define get_charset_by_csname mysql_get_charset_by_csname
-+
- extern CHARSET_INFO *get_charset(uint cs_number, myf flags);
- extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags);
- extern CHARSET_INFO *my_collation_get_by_name(MY_CHARSET_LOADER *loader,
index 766dda85981d6ad1209b7606cb46dd677ad8b86b..a6b9ec7da61415d0130f3350c18dff7106ae6aa9 100644 (file)
@@ -1,45 +1,11 @@
-diff -ur percona-server-5.7.35-38.orig/cmake/build_configurations/compiler_options.cmake percona-server-5.7.35-38/cmake/build_configurations/compiler_options.cmake
---- percona-server-5.7.35-38.orig/cmake/build_configurations/compiler_options.cmake    2021-11-24 18:56:51.570445147 +0100
-+++ percona-server-5.7.35-38/cmake/build_configurations/compiler_options.cmake 2021-11-24 19:35:58.389983145 +0100
-@@ -32,17 +32,17 @@
-   SET(64BIT 1)
- ENDIF()
--SET(CMAKE_CXX_STANDARD 98)
-+SET(CMAKE_CXX_STANDARD 11)
-  
- # Compiler options
- IF(UNIX)  
--  MY_CHECK_CXX_COMPILER_FLAG("-std=gnu++03" GNU03_SUPPORTED)
-+  MY_CHECK_CXX_COMPILER_FLAG("-std=gnu++11" GNU11_SUPPORTED)
--  IF(GNU03_SUPPORTED)
-+  IF(GNU11_SUPPORTED)
-     IF(CMAKE_VERSION VERSION_LESS 3.1.0)
--      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++03")
-+      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
-     ELSE()
--      SET(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -std=gnu++03)
-+      SET(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -std=gnu++11)
+--- mysql-5.7.36/cmake/build_configurations/compiler_options.cmake~    2021-09-07 07:26:47.000000000 +0200
++++ mysql-5.7.36/cmake/build_configurations/compiler_options.cmake     2021-11-29 07:46:49.013266334 +0100
+@@ -73,7 +73,7 @@ IF(UNIX)
+     EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
+                     OUTPUT_VARIABLE GXX_VERSION)
+     IF(GXX_VERSION VERSION_EQUAL 6.0 OR GXX_VERSION VERSION_GREATER 6.0)
+-      STRING_PREPEND(COMMON_CXX_FLAGS "-std=gnu++03 ")
++      STRING_PREPEND(COMMON_CXX_FLAGS "-std=gnu++11 ")
      ENDIF()
-   ENDIF()
-@@ -166,13 +166,13 @@
-       ENDIF()
-       SET(COMMON_C_FLAGS            "-g ${SUNPRO_FLAGS}")
--      SET(COMMON_CXX_FLAGS          "-g0 ${SUNPRO_FLAGS} -std=c++03")
-+      SET(COMMON_CXX_FLAGS          "-g0 ${SUNPRO_FLAGS} -std=c++11")
-       # For SunPro, append our own flags rather than prepending below.
-       # We need -g0 and the misc -x flags above to reduce the size of binaries.
--      STRING_APPEND(CMAKE_C_FLAGS_DEBUG            " ${COMMON_C_FLAGS}")
--      STRING_APPEND(CMAKE_CXX_FLAGS_DEBUG          " ${COMMON_CXX_FLAGS}")
--      STRING_APPEND(CMAKE_C_FLAGS_RELWITHDEBINFO   " -xO3 ${COMMON_C_FLAGS}")
--      STRING_APPEND(CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_CXX_FLAGS}")
-+      STRING_APPEND(CMAKE_C_FLAGS_DEBUG            " ${CMAKE_C_FLAGS_DEBUG} ${COMMON_C_FLAGS}")
-+      STRING_APPEND(CMAKE_CXX_FLAGS_DEBUG          " ${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_CXX_FLAGS}")
-+      STRING_APPEND(CMAKE_C_FLAGS_RELWITHDEBINFO   " -O3 -D_FORTIFY_SOURCE=2 ${CMAKE_C_FLAGS_RELWITHDEBINFO} ${COMMON_C_FLAGS}")
-+      STRING_APPEND(CMAKE_CXX_FLAGS_RELWITHDEBINFO " -O3 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMMON_CXX_FLAGS}")
-       STRING_APPEND(CMAKE_C_FLAGS_RELEASE          " -xO3 ${COMMON_C_FLAGS}")
-       STRING_APPEND(CMAKE_CXX_FLAGS_RELEASE        " -xO3 ${COMMON_CXX_FLAGS}")
-       STRING_APPEND(CMAKE_C_FLAGS_MINSIZEREL       " -xO3 ${COMMON_C_FLAGS}")
+     # Disable inline optimizations for valgrind testing to avoid false positives
+     IF(WITH_VALGRIND)
index 6e85914848b9df15c0cb6db33707ce98c710ccfa..cce64d4166e6bc1f41507c05a604caea49a8fa30 100644 (file)
@@ -1,7 +1,6 @@
-diff -ur percona-server-5.7.35-38.orig/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h percona-server-5.7.35-38/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h
---- percona-server-5.7.35-38.orig/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h    2021-11-24 19:41:59.748839411 +0100
-+++ percona-server-5.7.35-38/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h 2021-11-24 19:43:50.561101985 +0100
-@@ -36,7 +36,9 @@
+--- mysql-5.7.27/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h.orig        2019-06-10 16:43:20.000000000 +0200
++++ mysql-5.7.27/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h     2019-07-29 19:19:29.421629353 +0200
+@@ -29,7 +29,9 @@
  #include <google/protobuf/io/tokenizer.h>
  #include <google/protobuf/io/zero_copy_stream.h>
  #include <google/protobuf/wire_format_lite.h>
diff --git a/mysql-readline.patch b/mysql-readline.patch
new file mode 100644 (file)
index 0000000..ce82211
--- /dev/null
@@ -0,0 +1,34 @@
+diff -ruNp mysql-5.7.21.orig/client/mysql.cc mysql-5.7.21/client/mysql.cc
+--- mysql-5.7.21.orig/client/mysql.cc  2017-12-28 04:46:26.000000000 +0100
++++ mysql-5.7.21/client/mysql.cc       2018-03-31 21:37:27.879569060 +0200
+@@ -67,6 +67,7 @@
+ #else
+ #include <syslog.h>
+ #include <readline.h>
++#include <history.h>
+ #define HAVE_READLINE
+ #define USE_POPEN
+ #endif
+@@ -1126,22 +1127,6 @@ static const char *embedded_server_group
+ { "server", "embedded", "mysql_SERVER", 0 };
+ #ifdef HAVE_READLINE
+-/*
+- HIST_ENTRY is defined for libedit, but not for the real readline
+- Need to redefine it for real readline to find it
+-*/
+-#if !defined(HAVE_HIST_ENTRY)
+-typedef struct _hist_entry {
+-  const char      *line;
+-  const char      *data;
+-} HIST_ENTRY; 
+-#endif
+-
+-extern "C" int add_history(const char *command); /* From readline directory */
+-extern "C" int read_history(const char *command);
+-extern "C" int write_history(const char *command);
+-extern "C" HIST_ENTRY *history_get(int num);
+-extern "C" int history_length;
+ static int not_in_history(const char *line);
+ static void initialize_readline (char *name);
+ #endif                                          /* HAVE_READLINE */
index 26517e4c261a5fe5fc007d9ea4e0843feb0a1ac3..dac55bd6fc9889f0cb292907bd926f9685de23c5 100644 (file)
@@ -1,7 +1,6 @@
-diff -ur percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am percona-server-5.7.35-38/storage/sphinx/Makefile.am
---- percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am   2016-07-19 12:42:18.000000000 +0200
-+++ percona-server-5.7.35-38/storage/sphinx/Makefile.am        2021-11-24 19:47:02.552556917 +0100
-@@ -31,19 +31,19 @@
+--- mysql-5.1.49/storage/sphinx/Makefile.am~   2009-02-13 23:26:46.000000000 +0200
++++ mysql-5.1.49/storage/sphinx/Makefile.am    2010-07-24 16:35:57.568716704 +0300
+@@ -31,7 +31,7 @@
  LDADD =
  
  DEFS= @DEFS@ \
@@ -10,6 +9,9 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am percona-server
  
  noinst_HEADERS =      ha_sphinx.h
  
+--- mysql-5.1.49/storage/sphinx/Makefile.am~   2010-07-24 16:37:48.000000000 +0300
++++ mysql-5.1.49/storage/sphinx/Makefile.am    2010-07-24 17:00:56.161565823 +0300
+@@ -38,7 +38,7 @@
  EXTRA_LTLIBRARIES =   ha_sphinx.la
  pkgplugin_LTLIBRARIES = @plugin_sphinx_shared_target@ sphinx.la
  
@@ -18,6 +20,11 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am percona-server
  ha_sphinx_la_CXXFLAGS=        $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
  ha_sphinx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
  ha_sphinx_la_SOURCES =        ha_sphinx.cc
+--- mysql-5.1.49/storage/sphinx/Makefile.am~   2010-07-24 19:14:55.000000000 +0300
++++ mysql-5.1.49/storage/sphinx/Makefile.am    2010-07-25 03:47:56.660771099 +0300
+@@ -43,7 +43,7 @@
+ ha_sphinx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
+ ha_sphinx_la_SOURCES =        ha_sphinx.cc
  
 -sphinx_la_LDFLAGS = -module
 +sphinx_la_LDFLAGS = -module -avoid-version -rpath $(MYSQLLIBdir)
diff --git a/mysql-versioning.patch b/mysql-versioning.patch
deleted file mode 100644 (file)
index 325bd46..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -urNp -x '*.orig' percona-server-5.7.37-40.org/libmysql/libmysql.map percona-server-5.7.37-40/libmysql/libmysql.map
---- percona-server-5.7.37-40.org/libmysql/libmysql.map 2022-04-04 12:10:54.703864495 +0200
-+++ percona-server-5.7.37-40/libmysql/libmysql.map     2022-04-04 12:11:12.985905674 +0200
-@@ -145,6 +145,7 @@ libmysqlclient_18 {
-       mysql_net_realloc;
- # PHP's mysqli.so requires this (via the ER() macro)
-       mysql_client_errors;
-+      client_errors;
- # mydumper requires this (added by remi)
-       my_net_read;
- };
-@@ -152,4 +153,6 @@ libmysqlclient_18 {
- libmysqlclient_18_1 {
-   global:
-       get_tty_password;
-+# for mysql-workbench 6.1
-+      mysql_options4;
- };
index 9f0867e23fd32de0f255c90e4665119e56e2c3b9..c55f9ef0c5c3acf823df7fb8d32e3d637a6fd6df 100755 (executable)
@@ -294,7 +294,7 @@ mysqlstart() {
                        --datadir=$MYSQL_DATA_DIR \
                        --pid-file=$MYSQL_PIDFILE \
                        ${MYSQL_LOG_ERROR:+--log-error="$MYSQL_LOG_ERROR"} \
-                       $MYSQL_OPTIONS 2>/dev/null &
+                       $MYSQL_OPTIONS &
        pid=$!
 
        sleep 0.1
@@ -445,7 +445,7 @@ mysqlinit() {
        if [ -f "$clusterdir/mysqld.conf" ]; then
                mysqlgetconfig "$clusterdir"
        else
-               MYSQL_USER="mysql"
+               MYSQL_USER="root"
                MYSQL_CLUSTER_DIR="$clusterdir"
                MYSQL_DATA_DIR="$clusterdir/mysqldb/db"
                MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid"
@@ -455,7 +455,7 @@ mysqlinit() {
                MYSQL_CONFIG="$MYSQL_CLUSTER_DIR/mysqld.conf"
        fi
 
-       show "Initializing MySQL cluster %s" "$clusterdir"; started
+       show "Initializing cluster %s" "$clusterdir"; started
 
        # Check if not exist init database
        if [ -d "$MYSQL_DATA_DIR/mysql" ]; then
@@ -465,7 +465,7 @@ mysqlinit() {
                exit 6
        fi
 
-       show "Installing MySQL system tables for $MYSQL_DATA_DIR"
+       show "Initializing MySQL database for $MYSQL_DATA_DIR"
        busy
        TMP=/tmp TMPDIR=/tmp
 
@@ -489,13 +489,14 @@ mysqlinit() {
        ok=0
        /usr/sbin/mysqld \
                --defaults-file=$MYSQL_CLUSTER_DIR/mysqld.conf \
-               --initialize-insecure \
+               --initialize \
                --skip-grant-tables \
                --datadir=$MYSQL_DATA_DIR \
                --user=$MYSQL_USER \
                --slave-load-tmpdir=$MYSQL_DATA_DIR \
                --tmpdir=$MYSQL_DATA_DIR \
-               --log-error=$MYSQL_ERRLOG && ok=1
+               --log-error=$MYSQL_ERRLOG \
+               && ok=1
        [ -f $MYSQL_DATA_DIR/mysql/user.frm ] || ok=0
 
        if [ "$ok" = 1 ]; then
@@ -503,17 +504,33 @@ mysqlinit() {
                cat << END_OF_MSG
 
 PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS!
-This is done, after starting database, in the order shown below,
-with:
 
-Add 'mysql_sysadmin' user (RELOAD and SHUTDOWN privileges):
-echo "CREATE USER 'mysql_sysadmin'@'localhost' IDENTIFIED BY 'SOME_RANDOM_PASSWORD'; FLUSH PRIVILEGES;" | mysql --ssl-mode=DISABLED -u root -S $MYSQL_SOCKET
-echo "GRANT RELOAD, SHUTDOWN ON *.* TO 'mysql_sysadmin'@'localhost'; FLUSH PRIVILEGES;" | mysql --ssl-mode=DISABLED -u root -S $MYSQL_SOCKET
+Start database:
+$ service mysql start
 
-Set password for root user (ALL privileges, DB admin):
-echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; FLUSH PRIVILEGES;" | mysql --ssl-mode=DISABLED -u root -S $MYSQL_SOCKET
+and set passwords:
 
-NOTE: mysql_sysadmin password should be placed to $MYSQL_CONFIG in
+For 'root' user (ALL privileges, DB admin), paste command with new password:
+ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
+FLUSH PRIVILEGES;
+
+For 'mysql_sysadmin' (RELOAD and SHUTDOWN privileges):
+CREATE USER 'mysql_sysadmin'@'localhost' IDENTIFIED BY 'sysnewpassword' PASSWORD EXPIRE NEVER;
+GRANT RELOAD, SHUTDOWN ON *.* TO 'mysql_sysadmin'@'localhost';
+FLUSH PRIVILEGES;
+
+
+Both into command:
+$ mysql -u root -p --ssl-mode=disabled -S $MYSQL_SOCKET
+
+NOTE 1:
+CURRENT TEMPORARY ROOT PASSWORD CAN BE FOUND IN LOG
+(grep for "A temporary password is generated" string):
+$MYSQL_ERRLOG
+
+
+NOTE 2:
+mysql_sysadmin password should be placed to $MYSQL_CONFIG in
 mysqladmin section. See the manual for more instructions.
 (This user is used at logs rotation and server shutdown)
 
@@ -523,11 +540,11 @@ END_OF_MSG
                cat << END_OF_MSG
 ERROR:
 ERROR:
-ERROR: Initialization of server FAILED!
+ERROR: Installation FAILED!
 ERROR:
 ERROR:
 
-Examine the logs in /var/log/mysql for more information. You can
+Examine the logs in $MYSQL_ERRLOG for more information. You can
 also try to start the mysqld daemon with:
 
 /usr/sbin/mysqld --skip-grant &
@@ -541,7 +558,7 @@ mysql> show tables
 Try 'mysqld --help' if you have problems with paths. Setting on
 logging in $MYSQL_DATA_DIR/mysqld.conf gives you a log in /var/log/mysql/query.log that
 may be helpful. The latest information about MySQL is available on the
-web at https://www.percona.com/software/mysql-database/mysql.
+web at http://www.mysql.com/.
 
 Please check TLD Linux ftp site for newer versions of this package.
 
index f1b667e62fb8332d2598e79c6cd7b4dcb3aff1da..2c449b360e7a2143adf51eb878617e5bce23678a 100644 (file)
@@ -9,19 +9,8 @@
 # - segfaults on select from non-mysql user (caused by builder environment):
 #     https://bugs.launchpad.net/pld-linux/+bug/381904
 #     (profiling disabled temporaily to workaround this)
-# - unpackaged files:
-#        /usr/COPYING.AGPLv3
-#        /usr/COPYING.GPLv2
-#        /usr/PATENTS
-#        /usr/README.md
-#        /usr/bin/mysqlxtest
-#        /usr/include/backup.h
-# NOTE:
-# - mysql 'root' user will be 'root' not 'mysql' with 5.7 package
-#   this is to make pld consistent what the rest of the world uses.
 #
 # Conditional build:
-%bcond_with    autodeps        # BR packages needed only for resolving deps
 %bcond_without innodb          # InnoDB storage engine support
 %bcond_without big_tables      # Support tables with more than 4G rows even on 32 bit platforms
 %bcond_without federated       # Federated storage engine support
 %bcond_with    systemtap       # systemtap/dtrace probes
 %bcond_without tcpd            # libwrap (tcp_wrappers) support
 %bcond_with    sphinx          # Sphinx storage engine support
-%bcond_with    tokudb          # TokuDB
-%bcond_with    rocksdb         # RocksDB
 # mysql needs boost 1.59.0 and doesn't support newer/older boost versions
-%bcond_with    system_boost    # Use system boost package
-%bcond_with    tests           # FIXME: don't run correctly
+%bcond_with    system_boost
+%bcond_with    system_protobuf # mysql doesn't build with newer (3.12+) protobuf
+%bcond_with    tests           # run test suite
 %bcond_with    ndb             # NDB is now a separate product, this here is broken, so disable it
-%bcond_with    coredumper      # coredumper support
+%bcond_without ldap            # LDAP auth support
 
-# tokudb is only supported on x86_64
-%ifnarch %{x8664}
-%undefine      with_rocksdb
-%undefine      with_tokudb
-%endif
-
-%define                rel     1
-%define                percona_rel     46
 Summary:       MySQL: a very fast and reliable SQL database engine
 Summary(de.UTF-8):     MySQL: ist eine SQL-Datenbank
 Summary(fr.UTF-8):     MySQL: un serveur SQL rapide et fiable
@@ -55,22 +35,23 @@ Summary(ru.UTF-8):  MySQL - быстрый SQL-сервер
 Summary(uk.UTF-8):     MySQL - швидкий SQL-сервер
 Summary(zh_CN.UTF-8):  MySQL数据库服务器
 Name:          mysql
-Version:       5.7.42
-Release:       %{percona_rel}.%{rel}
-License:       GPL + MySQL FLOSS Exception
+Version:       5.7.43
+Release:       1
+License:       GPL v2 + MySQL FOSS License Exception
 Group:         Applications/Databases
-Source0:       https://www.percona.com/downloads/Percona-Server-5.7/LATEST/source/tarball/percona-server-%{version}-%{percona_rel}.tar.gz
-# Source0-md5: 6f937a7fe774edad0213a75e34df19d5
+#Source0Download: https://dev.mysql.com/downloads/mysql/5.7.html#downloads
+Source0:       http://cdn.mysql.com/Downloads/MySQL-5.7/%{name}-%{version}.tar.gz
+# Source0-md5: a06d002cebf649082f0f3aaad4b6b797
 Source100:     http://www.sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz
 # Source100-md5:       5cac34f3d78a9d612ca4301abfcbd666
 %if %{without system_boost}
-Source101:      http://downloads.sourceforge.net/boost/boost_1_59_0.tar.bz2
+Source101:     http://downloads.sourceforge.net/boost/boost_1_59_0.tar.bz2
 # Source101-md5:       6aa9a5c6a4ca1016edd0ed1178e3cb87
 %endif
 Source1:       %{name}.init
 Source2:       %{name}.sysconfig
 Source3:       %{name}.logrotate
-Source4:       mysqld.conf
+Source4:       %{name}d.conf
 Source5:       %{name}-clusters.conf
 Source7:       %{name}-ndb.init
 Source8:       %{name}-ndb.sysconfig
@@ -80,40 +61,44 @@ Source11:   %{name}-ndb-cpc.init
 Source12:      %{name}-ndb-cpc.sysconfig
 Source13:      %{name}-client.conf
 Source14:      my.cnf
-Patch0:                mysql-opt.patch
-Patch1:                mysql-versioning.patch
-Patch2:                mysql-protobuf.patch
-Patch3:                build.patch
-Patch4:                mysql-sphinx.patch
-Patch5:                mysql-5.7-sphinx.patch
-Patch6:                mysql-chain-certs.patch
-Patch7:                mysql-dubious-exports.patch
-Patch8:                mysql-cmake.patch
-URL:           https://www.percona.com/software/mysql-database/percona-server
-BuildRequires: bison >= 1.875
-BuildRequires: cmake >= 2.8.2
-BuildRequires: curl-devel
-BuildRequires: readline-devel >= 6.2
-BuildRequires: libstdc++-devel >= 5:4.0
+Patch0:                %{name}-opt.patch
+Patch1:                ssl-errors.patch
+Patch2:                %{name}-protobuf.patch
+Patch3:                %{name}-5.7-sphinx.patch
+Patch4:                %{name}-sphinx.patch
+Patch5:                %{name}-chain-certs.patch
+Patch6:                %{name}-cmake.patch
+Patch7:                %{name}-readline.patch
+Patch8:                %{name}dumpslow-clusters.patch
+URL:           http://www.mysql.com/products/community/
 BuildRequires: automake
-%{?with_system_boost:BuildRequires:    boost-devel = 1.59.0}
+BuildRequires: bison >= 1.875
+%{?with_system_boost:BuildRequires:    boost-devel >= 1.59.0}
+BuildRequires: cmake >= 2.8.9
+BuildRequires: libaio-devel
+BuildRequires: libatomic-devel
+BuildRequires: libevent-devel
 BuildRequires: libhsclient-devel
+BuildRequires: libstdc++-devel >= 5:4.0
+BuildRequires: libtirpc-devel >= 1.0.0
 %{?with_tcpd:BuildRequires:    libwrap-devel}
-BuildRequires: lz4-devel >= 1:1.9.3
+BuildRequires: lz4-devel
 BuildRequires: mecab-devel
 BuildRequires: ncurses-devel >= 4.2
 %{?with_ssl:BuildRequires:     openssl-devel >= 0.9.7d}
+%{?with_ldap:BuildRequires:    openldap-devel}
 BuildRequires: pam-devel
-%{?with_autodeps:BuildRequires:        perl-DBI}
 BuildRequires: perl-devel >= 1:5.6.1
-BuildRequires: protobuf-devel
+%{?with_system_protobuf:BuildRequires: protobuf-devel >= 2.5}
 BuildRequires: python3-modules
+BuildRequires: readline-devel >= 6.2
 BuildRequires: rpcsvc-proto
+BuildRequires: rpm-build >= 4.6
 BuildRequires: rpm-perlprov >= 4.1-13
-BuildRequires: rpmbuild(macros) >= 1.597
+BuildRequires: rpmbuild(macros) >= 1.605
 BuildRequires: sed >= 4.0
 %{?with_systemtap:BuildRequires:       systemtap-sdt-devel}
-BuildRequires: zlib-devel
+BuildRequires: zlib-devel >= 1.2.12
 Requires(post,preun):  /sbin/chkconfig
 Requires(postun):      /usr/sbin/groupdel
 Requires(postun):      /usr/sbin/userdel
@@ -121,11 +106,11 @@ Requires(pre):    /bin/id
 Requires(pre): /usr/bin/getgid
 Requires(pre): /usr/sbin/groupadd
 Requires(pre): /usr/sbin/useradd
-Requires(post):        sed >= 4.0
 Requires:      %{name}-charsets = %{version}-%{release}
 Requires:      %{name}-libs = %{version}-%{release}
 Requires:      /usr/bin/setsid
 Requires:      rc-scripts >= 0.2.0
+Requires:      sed >= 4.0
 Suggests:      mysql-client
 %{?with_tcpd:Suggests: tcp_wrappers}
 Suggests:      vim-syntax-mycnf
@@ -140,118 +125,114 @@ BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define                _libexecdir     %{_sbindir}
 %define                _localstatedir  /var/lib/mysql
-%define                _mysqlhome      /home/services/%{name}
+%define                _mysqlhome      /home/services/mysql
 
 %description
-MySQL is a true multi-user, multi-threaded SQL (Structured
-Query Language) database server. SQL is the most popular database
-language in the world. MySQL is a client/server
-implementation that consists of a server daemon mysqld and many
-different client programs/libraries.
-
-The main goals of MySQL are speed, robustness and easy to
-use. MySQL was originally developed because we at Tcx needed
-a SQL server that could handle very big databases with magnitude
-higher speed than what any database vendor could offer to us. We have
-now been using MySQL since 1996 in a environment with more
-than 40 databases, 10,000 tables, of which more than 500 have more
-than 7 million rows. This is about 50G of mission critical data.
-
-The base upon which MySQL is built is a set of routines that
-have been used in a highly demanding production environment for many
-years. While MySQL is still in development, it already offers
-a rich and highly useful function set.
+MySQL is a true multi-user, multi-threaded SQL (Structured Query
+Language) database server. SQL is the most popular database language
+in the world. MySQL is a client/server implementation that consists of
+a server daemon mysqld and many different client programs/libraries.
+
+The main goals of MySQL are speed, robustness and easy to use. MySQL
+was originally developed because we at Tcx needed a SQL server that
+could handle very big databases with magnitude higher speed than what
+any database vendor could offer to us. We have now been using MySQL
+since 1996 in a environment with more than 40 databases, 10,000
+tables, of which more than 500 have more than 7 million rows. This is
+about 50G of mission critical data.
+
+The base upon which MySQL is built is a set of routines that have been
+used in a highly demanding production environment for many years.
+While MySQL is still in development, it already offers a rich and
+highly useful function set.
 
 %description -l fr.UTF-8
-MySQL est un serveur de bases de donnees SQL vraiment
-multi-usagers et multi-taches. Le langage SQL est le langage de bases
-de donnees le plus populaire au monde. MySQL est une
-implementation client/serveur qui consiste en un serveur (mysqld) et
-differents programmes/bibliotheques clientes.
-
-Les objectifs principaux de MySQL sont: vitesse, robustesse
-et facilite d'utilisation. MySQL fut originalement developpe
-parce que nous, chez Tcx, avions besoin d'un serveur SQL qui pouvait
-gerer de tres grandes bases de donnees avec une vitesse d'un ordre de
-magnitude superieur a ce que n'importe quel vendeur pouvait nous
-offrir. Nous utilisons MySQL depuis 1996 dans un
-environnement avec plus de 40 bases de donnees, 10000 tables,
-desquelles plus de 500 ont plus de 7 millions de lignes. Ceci
-represente environ 50G de donnees critiques.
-
-A la base de la conception de MySQL, on retrouve une serie de
-routines qui ont ete utilisees dans un environnement de production
-pendant plusieurs annees. Meme si MySQL est encore en
-developpement, il offre deja une riche et utile serie de fonctions.
+MySQL est un serveur de bases de donnees SQL vraiment multi-usagers et
+multi-taches. Le langage SQL est le langage de bases de donnees le
+plus populaire au monde. MySQL est une implementation client/serveur
+qui consiste en un serveur (mysqld) et differents
+programmes/bibliotheques clientes.
+
+Les objectifs principaux de MySQL sont: vitesse, robustesse et
+facilite d'utilisation. MySQL fut originalement developpe parce que
+nous, chez Tcx, avions besoin d'un serveur SQL qui pouvait gerer de
+tres grandes bases de donnees avec une vitesse d'un ordre de magnitude
+superieur a ce que n'importe quel vendeur pouvait nous offrir. Nous
+utilisons MySQL depuis 1996 dans un environnement avec plus de 40
+bases de donnees, 10000 tables, desquelles plus de 500 ont plus de 7
+millions de lignes. Ceci represente environ 50G de donnees critiques.
+
+A la base de la conception de MySQL, on retrouve une serie de routines
+qui ont ete utilisees dans un environnement de production pendant
+plusieurs annees. Meme si MySQL est encore en developpement, il offre
+deja une riche et utile serie de fonctions.
 
 %description -l pl.UTF-8
-MySQL to prawdziwie wieloużytkownikowy, wielowątkowy serwer
-baz danych SQL. SQL jest najpopularniejszym na świecie językiem
-używanym do baz danych. MySQL to implementacja klient/serwer
-składająca się z demona mysqld i wielu różnych programów i bibliotek
-klienckich.
-
-Głównymi celami MySQL-a są szybkość, potęga i łatwość
-użytkowania. MySQL oryginalnie był tworzony, ponieważ autorzy
-w Tcx potrzebowali serwera SQL do obsługi bardzo dużych baz danych z
-szybkością o wiele większą, niż mogli zaoferować inni producenci baz
-danych. Używają go od 1996 roku w środowisku z ponad 40 bazami danych,
-10 000 tabel, z których ponad 500 zawiera ponad 7 milionów rekordów -
-w sumie około 50GB krytycznych danych.
-
-Baza, na której oparty jest MySQL, składa się ze zbioru
-procedur, które były używane w bardzo wymagającym środowisku
-produkcyjnym przez wiele lat. Pomimo, że MySQL jest ciągle
-rozwijany, już oferuje bogaty i użyteczny zbiór funkcji.
+MySQL to prawdziwie wieloużytkownikowy, wielowątkowy serwer baz danych
+SQL. SQL jest najpopularniejszym na świecie językiem używanym do baz
+danych. MySQL to implementacja klient/serwer składająca się z demona
+mysqld i wielu różnych programów i bibliotek klienckich.
+
+Głównymi celami MySQL-a są szybkość, potęga i łatwość użytkowania.
+MySQL oryginalnie był tworzony, ponieważ autorzy w Tcx potrzebowali
+serwera SQL do obsługi bardzo dużych baz danych z szybkością o wiele
+większą, niż mogli zaoferować inni producenci baz danych. Używają go
+od 1996 roku w środowisku z ponad 40 bazami danych, 10 000 tabel, z
+których ponad 500 zawiera ponad 7 milionów rekordów - w sumie około
+50GB krytycznych danych.
+
+Baza, na której oparty jest MySQL, składa się ze zbioru procedur,
+które były używane w bardzo wymagającym środowisku produkcyjnym przez
+wiele lat. Pomimo, że MySQL jest ciągle rozwijany, już oferuje bogaty
+i użyteczny zbiór funkcji.
 
 %description -l de.UTF-8
-MySQL ist eine SQL-Datenbank. Allerdings ist sie im Gegensatz
-zu Oracle, DB2 oder PostgreSQL keine relationale Datenbank. Die Daten
+MySQL ist eine SQL-Datenbank. Allerdings ist sie im Gegensatz zu
+Oracle, DB2 oder PostgreSQL keine relationale Datenbank. Die Daten
 werden zwar in zweidimensionalen Tabellen gespeichert und können mit
 einem Primärschlüssel versehen werden. Es ist aber keine Definition
 eines Fremdschlüssels möglich. Der Benutzer ist somit bei einer
-MySQL-Datenbank völlig allein für die (referenzielle)
-Integrität der Daten verantwortlich. Allein durch die Nutzung externer
+MySQL-Datenbank völlig allein für die (referenzielle) Integrität der
+Daten verantwortlich. Allein durch die Nutzung externer
 Tabellenformate, wie InnoDB bzw Berkeley DB wird eine Relationalität
-ermöglicht. Diese Projekte sind aber getrennt von MySQL zu
-betrachten.
+ermöglicht. Diese Projekte sind aber getrennt von MySQL zu betrachten.
 
 %description -l pt_BR.UTF-8
-O MySQL é um servidor de banco de dados SQL realmente
-multiusuário e multi-tarefa. A linguagem SQL é a mais popular
-linguagem para banco de dados no mundo. O MySQL é uma
-implementação cliente/servidor que consiste de um servidor chamado
-mysqld e diversos programas/bibliotecas clientes. Os principais
-objetivos do MySQL são: velocidade, robustez e facilidade de
-uso. O MySQL foi originalmente desenvolvido porque nós na Tcx
-precisávamos de um servidor SQL que pudesse lidar com grandes bases de
-dados e com uma velocidade muito maior do que a que qualquer vendedor
-podia nos oferecer. Estamos usando o MySQL desde 1996 em um
-ambiente com mais de 40 bases de dados com 10.000 tabelas, das quais
-mais de 500 têm mais de 7 milhões de linhas. Isto é o equivalente a
-aproximadamente 50G de dados críticos. A base da construção do Percona
-Server é uma série de rotinas que foram usadas em um ambiente de
-produção com alta demanda por muitos anos. Mesmo o MySQL
-estando ainda em desenvolvimento, ele já oferece um conjunto de
+O MySQL é um servidor de banco de dados SQL realmente multiusuário e
+multi-tarefa. A linguagem SQL é a mais popular linguagem para banco de
+dados no mundo. O MySQL é uma implementação cliente/servidor que
+consiste de um servidor chamado mysqld e diversos
+programas/bibliotecas clientes. Os principais objetivos do MySQL são:
+velocidade, robustez e facilidade de uso. O MySQL foi originalmente
+desenvolvido porque nós na Tcx precisávamos de um servidor SQL que
+pudesse lidar com grandes bases de dados e com uma velocidade muito
+maior do que a que qualquer vendedor podia nos oferecer. Estamos
+usando o MySQL desde 1996 em um ambiente com mais de 40 bases de dados
+com 10.000 tabelas, das quais mais de 500 têm mais de 7 milhões de
+linhas. Isto é o equivalente a aproximadamente 50G de dados críticos.
+A base da construção do MySQL é uma série de rotinas que foram usadas
+em um ambiente de produção com alta demanda por muitos anos. Mesmo o
+MySQL estando ainda em desenvolvimento, ele já oferece um conjunto de
 funções muito ricas e úteis. Veja a documentação para maiores
 informações.
 
 %description -l ru.UTF-8
-MySQL - это SQL (Structured Query Language) сервер базы
´Ð°Ð½Ð½Ñ\8bÑ\85. MySQL Ð±Ñ\8bла Ð½Ð°Ð¿Ð¸Ñ\81ана Michael'ом (monty) Widenius'ом.
¡Ð¼. Ñ\84айл CREDITS Ð² Ð´Ð¸Ñ\81Ñ\82Ñ\80ибÑ\83Ñ\82иве Ð½Ð° Ð¿Ñ\80едмеÑ\82 Ð´Ñ\80Ñ\83гиÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников Ð¿Ñ\80оекÑ\82а и
¿Ñ\80оÑ\87ей Ð¸Ð½Ñ\84оÑ\80маÑ\86ии Ð¾ MySQL.
+MySQL - это SQL (Structured Query Language) сервер базы данных. MySQL
±Ñ\8bла Ð½Ð°Ð¿Ð¸Ñ\81ана Michael'ом (monty) Widenius'ом. Ð¡Ð¼. Ñ\84айл CREDITS Ð²
´Ð¸Ñ\81Ñ\82Ñ\80ибÑ\83Ñ\82иве Ð½Ð° Ð¿Ñ\80едмеÑ\82 Ð´Ñ\80Ñ\83гиÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников Ð¿Ñ\80оекÑ\82а Ð¸ Ð¿Ñ\80оÑ\87ей Ð¸Ð½Ñ\84оÑ\80маÑ\86ии
+о MySQL.
 
 %description -l uk.UTF-8
-MySQL - це SQL (Structured Query Language) сервер бази даних.
-MySQL було написано Michael'ом (monty) Widenius'ом. Див. файл
-CREDITS в дистрибутиві для інформації про інших учасників проекту та
\96нÑ\88оÑ\97 Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97.
+MySQL - це SQL (Structured Query Language) сервер бази даних. MySQL
+було написано Michael'ом (monty) Widenius'ом. Див. файл CREDITS в
+дистрибутиві для інформації про інших учасників проекту та іншої
+інформації.
 
 %package charsets
 Summary:       MySQL - character sets definitions
 Summary(pl.UTF-8):     MySQL - definicje kodowań znaków
 Group:         Applications/Databases
+BuildArch:     noarch
 
 %description charsets
 This package contains character sets definitions needed by both client
@@ -269,12 +250,12 @@ Requires: %{name}-client = %{version}-%{release}
 Requires:      %{name}-libs = %{version}-%{release}
 
 %description extras
-MySQL additional utilities except Perl scripts (they may be
-found in %{name}-extras-perl package).
+MySQL additional utilities except Perl scripts (they may be found in
+%{name}-extras-perl package).
 
 %description extras -l pl.UTF-8
-Dodatkowe narzędzia do MySQL - z wyjątkiem skryptów Perla
-(które są w pakiecie %{name}-extras-perl).
+Dodatkowe narzędzia do MySQL - z wyjątkiem skryptów Perla (które są w
+pakiecie %{name}-extras-perl).
 
 %package extras-perl
 Summary:       MySQL additional utilities written in Perl
@@ -323,7 +304,8 @@ Este pacote contém os clientes padrão para o MySQL.
 Summary:       Shared libraries for MySQL
 Summary(pl.UTF-8):     Biblioteki współdzielone MySQL
 Group:         Libraries
-Obsoletes:     libmysql10
+Requires:      zlib >= 1.2.12
+Obsoletes:     libmysql10 < 4
 Obsoletes:     mysql-doc < 4.1.12
 
 %description libs
@@ -340,10 +322,11 @@ Summary(ru.UTF-8):        MySQL - хедеры и библиотеки разработ
 Summary(uk.UTF-8):     MySQL - хедери та бібліотеки програміста
 Group:         Development/Libraries
 Requires:      %{name}-libs = %{version}-%{release}
+Requires:      libatomic-devel
 %{?with_ssl:Requires: openssl-devel}
-Requires:      zlib-devel
+Requires:      zlib-devel >= 1.2.12
 Obsoletes:     MySQL-devel
-Obsoletes:     libmysql10-devel
+Obsoletes:     libmysql10-devel < 4
 Obsoletes:     webscalesql-devel
 
 %description devel
@@ -361,8 +344,7 @@ klienckich MySQL.
 
 %description devel -l pt_BR.UTF-8
 Este pacote contém os arquivos de cabeçalho (header files) e
-bibliotecas necessárias para desenvolver aplicações clientes do
-MySQL.
+bibliotecas necessárias para desenvolver aplicações clientes do MySQL.
 
 %description devel -l ru.UTF-8
 Этот пакет содержит хедеры и библиотеки разработчика, необходимые для
@@ -404,7 +386,7 @@ Summary(uk.UTF-8):  MySQL - бенчмарки
 Group:         Applications/Databases
 Requires:      %{name} = %{version}-%{release}
 Requires:      %{name}-client
-Requires:      perl(DBD::mysql)
+Requires:      perl-DBD-mysql
 Obsoletes:     MySQL-bench
 
 %description bench
@@ -414,16 +396,14 @@ This package contains MySQL benchmark scripts and data.
 Programy testujące szybkość serwera MySQL.
 
 %description bench -l pt_BR.UTF-8
-Este pacote contém medições de desempenho de scripts e dados do
-MySQL.
+Este pacote contém medições de desempenho de scripts e dados do MySQL.
 
 %description bench -l ru.UTF-8
 Этот пакет содержит скрипты и данные для оценки производительности
 MySQL.
 
 %description bench -l uk.UTF-8
-Цей пакет містить скрипти та дані для оцінки продуктивності Percona
-Server.
+Цей пакет містить скрипти та дані для оцінки продуктивності MySQL.
 
 %package doc
 Summary:       MySQL manual
@@ -443,8 +423,7 @@ Group:              Applications/Databases
 Requires:      %{name}-libs = %{version}-%{release}
 
 %description ndb
-This package contains the standard MySQL NDB Storage Engine
-Daemon.
+This package contains the standard MySQL NDB Storage Engine Daemon.
 
 %description ndb -l pl.UTF-8
 Ten pakiet zawiera standardowego demona silnika przechowywania danych
@@ -469,12 +448,10 @@ Group:            Applications/Databases
 Requires:      %{name}-libs = %{version}-%{release}
 
 %description ndb-mgm
-This package contains the standard MySQL NDB Management
-Daemon.
+This package contains the standard MySQL NDB Management Daemon.
 
 %description ndb-mgm -l pl.UTF-8
-Ten pakiet zawiera standardowego demona zarządzającego MySQL
-NDB.
+Ten pakiet zawiera standardowego demona zarządzającego MySQL NDB.
 
 %package ndb-cpc
 Summary:       MySQL - NDB CPC Daemon
@@ -489,22 +466,19 @@ This package contains the standard MySQL NDB CPC Daemon.
 Ten pakiet zawiera standardowego demona MySQL NDB CPC.
 
 %prep
-%setup -q -n percona-server-%{version}-%{percona_rel} %{?with_sphinx:-a100} %{!?with_system_boost:-a101}
-
-# we want to use old, mysql compatible client library name
-find . -name CMakeLists.txt -exec sed -i -e 's#perconaserverclient#mysqlclient#g' "{}" ";"
-sed -i -e 's#perconaserverclient#mysqlclient#g' libmysql/libmysql.{ver.in,map} scripts/mysql_config.*
+%setup -q %{?with_sphinx:-a100} %{!?with_system_boost:-a101}
 
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
-%patch3 -p1
 %if %{with sphinx}
 # http://www.sphinxsearch.com/docs/manual-0.9.9.html#sphinxse-mysql51
 %{__mv} sphinx-*/mysqlse storage/sphinx
+%patch3 -p1
 %patch4 -p1
-%patch5 -p1
 %endif
+# really not fixed? verify
+%patch5 -p1
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
@@ -513,8 +487,9 @@ sed -i -e 's#perconaserverclient#mysqlclient#g' libmysql/libmysql.{ver.in,map} s
 [ -f sql/sql_yacc.cc ] && %{__rm} sql/sql_yacc.cc
 [ -f sql/sql_yacc.h ] && %{__rm} sql/sql_yacc.h
 
-# map has more sane versioning that default "global everything" in ver.in
-#cp -p libmysql/libmysql.map libmysql/libmysql.ver.in
+# ensure sytstem lib
+# need to keep xxhash.[ch]
+%{__rm} -rv extra/lz4/lz4*/lib/lz4*
 
 %build
 install -d build
@@ -523,20 +498,12 @@ cd build
 # (it defaults to first cluster but user may change it to whatever
 # cluster it wants)
 
-%if "%{cc_version}" >= "7.0"
-FALLTHROUGH_OPT="-Wimplicit-fallthrough=0"
-%else
-FALLTHROUGH_OPT=
-%endif
-
 CPPFLAGS="%{rpmcppflags}" \
 %cmake .. \
        -DCMAKE_BUILD_TYPE=%{!?debug:RelWithDebInfo}%{?debug:Debug} \
-       -DCMAKE_C_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT" \
-       -DCMAKE_CXX_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT" \
-       -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT -Wno-shadow" \
-       -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT -Wno-shadow" \
-       -DCOMPILATION_COMMENT="TLD Linux MySQL RPM" \
+       -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing" \
+       -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing" \
+       -DCOMPILATION_COMMENT="PLD/Linux Distribution MySQL RPM" \
        -DCURSES_INCLUDE_PATH=/usr/include/ncurses \
        %{?with_systemtap:-DENABLE_DTRACE=ON} \
        -DFEATURE_SET="community" \
@@ -547,67 +514,40 @@ CPPFLAGS="%{rpmcppflags}" \
        -DINSTALL_SQLBENCHDIR=%{_datadir} \
        -DINSTALL_SUPPORTFILESDIR=share/%{name}-support \
        -DINSTALL_MYSQLSHAREDIR=share/%{name} \
-       -DINSTALL_SECURE_FILE_PRIVDIR="" \
-       -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
+       -DMYSQL_UNIX_ADDR=/var/lib/%{name}/%{name}.sock \
        %{?debug:-DWITH_DEBUG=ON} \
        -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-       -DWITH_FAST_MUTEXES=ON \
        -DWITH_LIBWRAP=%{?with_tcpd:ON}%{!?with_tcpd:OFF} \
-       -DWITH_PAM=ON \
        -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
        -DWITH_PIC=ON \
-       -DWITH_SCALABILITY_METRICS=ON \
+       -DWITH_LZ4=system \
+       -DWITH_LIBEVENT=system \
+       %{?with_system_protobuf:-DWITH_PROTOBUF=system} \
        -DWITH_SSL=%{?with_ssl:system}%{!?with_ssl:no} \
        -DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
-       -DWITH_COREDUMPER=%{?with_coredumper:ON}%{!?with_coredumper:OFF} \
-       %{!?with_tokudb:-DWITHOUT_TOKUDB=ON} \
-       %{!?with_rocksdb:-DWITHOUT_ROCKSDB=ON} \
-%if %{without system_boost}
        %{!?with_system_boost:-DWITH_BOOST="$(pwd)/$(ls -1d ../boost_*)"} \
-%endif
-       -DWITH_LIBEVENT=system \
-       -DWITH_LZ4=system \
-       -DWITH_MECAB=system \
-       -DWITH_PROTOBUF=system \
-       -DWITH_READLINE=system \
        -DWITH_ZLIB=system \
+       -DWITH_EDITLINE=system \
+       -DWITH_MECAB=system \
        -DTMPDIR=/var/tmp
 
 %{__make}
 
-%if %{with tests}
-%{__make} test
-
-cd mysql-test
-
-MTR_BINDIR=$(pwd)/../build/ \
-%{__perl} ./mysql-test-run.pl \
-       --force \
-       --retry=0 \
-       --ssl \
-       --suite-timeout=720 \
-       --testcase-timeout=30 \
-       --mysqld=--binlog-format=mixed \
-       --force-restart \
-       --shutdown-timeout=60 \
-       --max-test-fail=0 \
-       --big-test \
-       --skip-test-list=unstable-tests
-%endif
+%{?with_tests:%{__make} test}
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,%{name},skel} \
-          $RPM_BUILD_ROOT/var/{log/{archive,}/%{name},lib/mysql} \
+install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,skel} \
+          $RPM_BUILD_ROOT/var/{log/{archive,}/mysql,lib/{mysql,mysql-files}} \
           $RPM_BUILD_ROOT%{_mysqlhome} \
           $RPM_BUILD_ROOT%{_libdir}
 
 %{__make} -C build install \
        DESTDIR=$RPM_BUILD_ROOT
 
-install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
-cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
-cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql
+cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mysql
+cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/mysql
 # This is template for configuration file which is created after 'service mysql init'
 cp -a %{SOURCE4} mysqld.conf
 cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/clusters.conf
@@ -630,12 +570,12 @@ cp -a %{SOURCE14} $RPM_BUILD_ROOT/etc/skel/.my.cnf
 
 # NDB
 %if %{with ndb}
-install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-ndb
-cp -a %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-ndb
-install -p %{SOURCE9} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-ndb-mgm
-cp -a %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-ndb-mgm
-install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-ndb-cpc
-cp -a %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-ndb-cpc
+install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb
+cp -a %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb
+install -p %{SOURCE9} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-mgm
+cp -a %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-mgm
+install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-cpc
+cp -a %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-cpc
 %endif
 
 sed -i -e 's,/usr//usr,%{_prefix},g' $RPM_BUILD_ROOT%{_bindir}/mysql_config
@@ -646,11 +586,8 @@ sed -i -e '/libs/s/-lprobes_mysql//' $RPM_BUILD_ROOT%{_bindir}/mysql_config
 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/%{name}-support
 
 # rename not to be so generic name
-mv $RPM_BUILD_ROOT%{_bindir}/{,mysql_}resolve_stack_dump
-mv $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1
-
-# move to _sysconfdir
-#mv $RPM_BUILD_ROOT{%{_bindir},%{_sysconfdir}}/mysqlaccess.conf
+%{__mv} $RPM_BUILD_ROOT%{_bindir}/{,mysql_}resolve_stack_dump
+%{__mv} $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1
 
 # not useful without -debug build
 %{!?debug:%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_resolve_stack_dump}
@@ -661,29 +598,35 @@ mv $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1
 %{?debug:nm -n $RPM_BUILD_ROOT%{_sbindir}/mysqld > $RPM_BUILD_ROOT%{_datadir}/%{name}/mysqld.sym}
 
 # do not clobber users $PATH
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_plugin
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_upgrade
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/innochecksum
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamchk
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamlog
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisampack
-#mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_fix_privilege_tables
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/my_print_defaults
-sed -i -e 's#/usr/bin/my_print_defaults#%{_sbindir}/my_print_defaults#g' $RPM_BUILD_ROOT%{_bindir}/mysql_install_db
-mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_plugin
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_upgrade
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/innochecksum
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamchk
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamlog
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisampack
+#%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_fix_privilege_tables
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/lz4_decompress
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/zlib_decompress
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/my_print_defaults
+%{__sed} -i -e 's#/usr/bin/my_print_defaults#%{_sbindir}/my_print_defaults#g' $RPM_BUILD_ROOT%{_bindir}/mysql_install_db
+%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck
 
 # delete - functionality in initscript / rpm
 # note: mysql_install_db (and thus resolveip) are needed by digikam
 %{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_safe
 %{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_multi
 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqld_{multi,safe}*
+#%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql-log-rotate
+#%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql.server
+#%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/binary-configure
 %{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/errmsg-utf8.txt
 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql.server*
 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqlman.1*
 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/comp_err.1*
 
 # we don't package those (we have no -test or -testsuite pkg) and some of them just segfault
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_client_test
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/{mysql_client_test,mysqlxtest}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/mysql/plugin/test_udf_services.so
 %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/mysql-test
 # libmysqld examples
 %{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql{_client_test_embedded,_embedded,test_embedded}
@@ -691,10 +634,11 @@ mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck
 # not needed
 %{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libdaemon_example.*
 %{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/daemon_example.ini
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/udf_example.so
 
-# not an .info file
-%{__rm} $RPM_BUILD_ROOT%{_infodir}/mysql.info
+# test plugins
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libtest*.so
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/rewrite_example.so
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/test_security_context.so
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -705,13 +649,13 @@ rm -rf $RPM_BUILD_ROOT
 
 %post
 /sbin/ldconfig
-/sbin/chkconfig --add %{name}
-%service %{name} restart
+/sbin/chkconfig --add mysql
+%service mysql restart
 
 %preun
 if [ "$1" = "0" ]; then
-       %service -q %{name} stop
-       /sbin/chkconfig --del %{name}
+       %service -q mysql stop
+       /sbin/chkconfig --del mysql
 fi
 
 %postun
@@ -722,49 +666,222 @@ if [ "$1" = "0" ]; then
 fi
 
 %post ndb
-/sbin/chkconfig --add %{name}-ndb
-%service %{name}-ndb restart "%{name} NDB engine"
+/sbin/chkconfig --add mysql-ndb
+%service mysql-ndb restart "mysql NDB engine"
 
 %preun ndb
 if [ "$1" = "0" ]; then
-       %service %{name}-ndb stop
-       /sbin/chkconfig --del %{name}-ndb
+       %service mysql-ndb stop
+       /sbin/chkconfig --del mysql-ndb
 fi
 
 %post ndb-mgm
-/sbin/chkconfig --add %{name}-ndb-mgm
-%service %{name}-ndb-mgm restart "%{name} NDB management node"
+/sbin/chkconfig --add mysql-ndb-mgm
+%service mysql-ndb-mgm restart "mysql NDB management node"
 
 %preun ndb-mgm
 if [ "$1" = "0" ]; then
-       %service %{name}-ndb-mgm stop
-       /sbin/chkconfig --del %{name}-ndb-mgm
+       %service mysql-ndb-mgm stop
+       /sbin/chkconfig --del mysql-ndb-mgm
 fi
 
 %post ndb-cpc
-/sbin/chkconfig --add %{name}-ndb-cpc
-%service %{name}-ndb-cpc restart "mysql NDB CPC"
+/sbin/chkconfig --add mysql-ndb-cpc
+%service mysql-ndb-cpc restart "mysql NDB CPC"
 
 %preun ndb-cpc
 if [ "$1" = "0" ]; then
-       %service %{name}-ndb-cpc stop
-       /sbin/chkconfig --del %{name}-ndb-cpc
+       %service mysql-ndb-cpc stop
+       /sbin/chkconfig --del mysql-ndb-cpc
 fi
 
 %post   libs -p /sbin/ldconfig
 %postun libs -p /sbin/ldconfig
 
+%triggerpostun -- mysql < 5.7.0
+# mysql < 4.0.20-2.4
+# For clusters in /etc/%{name}/clusters.conf
+if [ -f /etc/sysconfig/mysql ]; then
+       . /etc/sysconfig/mysql
+       if [ -n "$MYSQL_DB_CLUSTERS" ]; then
+               for i in "$MYSQL_DB_CLUSTERS"; do
+                       echo "$i/mysqld.conf=$i" >> /etc/%{name}/clusters.conf
+               done
+               echo "# Do not use **obsolete** option MYSQL_DB_CLUSTERS" >> /etc/sysconfig/mysql
+               echo "# USE /etc/%{name}/clusters.conf instead" >> /etc/sysconfig/mysql
+               echo "Converted clusters from MYSQL_DB_CLUSTERS to /etc/%{name}/clusters.conf."
+               echo "You NEED to fix your /etc/sysconfig/mysql and verify /etc/%{name}/clusters.conf."
+       fi
+fi
+
+# mysql < 4.1.1
+# For better compatibility with prevoius versions:
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do
+       if echo "$config" | grep -q '^/'; then
+               config_file="$config"
+       elif [ -f "/etc/%{name}/$config" ]; then
+               config_file=/etc/%{name}/$config
+       else
+               clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf)
+               if [ -z "$clusterdir" ]; then
+                       echo >&2 "Can't find cluster dir for $config!"
+                       echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf"
+                       exit 1
+               fi
+               config_file="$clusterdir/mysqld.conf"
+       fi
+
+       if [ ! -f "$config_file" ]; then
+                       echo >&2 "Lost myself! Please report this (with above errors, if any) to http://bugs.pld-linux.org/"
+                       exit 1
+       fi
+       echo "Adding option old-passwords to config: $config_file"
+       echo "If you want to use new, better passwords - remove it"
+
+       # sed magic to add 'old-passwords' to [mysqld] section
+       sed -i -e '/./{H;$!d;};x;/\[mysqld\]/{
+               a
+               a; Compatibility options:
+               aold-passwords
+       }
+       ' $config_file
+done
+
+%banner -e %{name}-4.1.x <<-EOF
+       If you want to use new help tables in MySQL 4.1.x then You'll need to import the help data:
+       mysql -u mysql mysql < %{_datadir}/%{name}/fill_help_tables.sql
+EOF
+#'
+
+# mysql < 5.1.0
+configs=""
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do
+       if echo "$config" | grep -q '^/'; then
+               config_file="$config"
+       elif [ -f "/etc/%{name}/$config" ]; then
+               config_file=/etc/%{name}/$config
+       else
+               clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf)
+               if [ -z "$clusterdir" ]; then
+                       echo >&2 "Can't find cluster dir for $config!"
+                       echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf"
+                       exit 1
+               fi
+               config_file="$clusterdir/mysqld.conf"
+       fi
+
+       if [ ! -f "$config_file" ]; then
+               echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/"
+               continue
+       fi
+       configs="$configs $config_file"
+done
+
+(
+echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.'
+echo 'Thus, you should invoke:'
+for config in $configs; do
+       sed -i -e '
+               s/set-variable\s*=\s* //
+               # use # as comment in config
+               s/^;/#/
+       ' $config
+
+       datadir=$(awk -F= '!/^#/ && $1 ~ /datadir/{print $2}' $config | xargs)
+       echo "# mysql_upgrade --datadir=$datadir"
+done
+) | %banner -e %{name}-5.1
+
+# mysql < 5.5.0
+configs=""
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do
+       if echo "$config" | grep -q '^/'; then
+               config_file="$config"
+       elif [ -f "/etc/%{name}/$config" ]; then
+               config_file=/etc/%{name}/$config
+       else
+               clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf)
+               if [ -z "$clusterdir" ]; then
+                       echo >&2 "Can't find cluster dir for $config!"
+                       echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf"
+                       exit 1
+               fi
+               config_file="$clusterdir/mysqld.conf"
+       fi
+
+       if [ ! -f "$config_file" ]; then
+               echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/"
+               continue
+       fi
+       configs="$configs $config_file"
+done
+
+(
+echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.'
+echo 'Thus, you should invoke:'
+for config in $configs; do
+       sed -i -e '
+               s/^language *= *polish/lc-messages = pl_PL/i
+               s/set-variable\s*=\s* //
+               s/^skip-locking/skip-external-locking/
+               # this is not valid for server. it is client option
+               s/^default-character-set/# client-config: &/
+               # use # as comment in config
+               s/^;/#/
+       ' $config
+
+       socket=$(awk -F= '!/^#/ && $1 ~ /socket/{print $2}' $config | xargs)
+       echo "# mysql_upgrade ${socket:+--socket=$socket}"
+done
+) | %banner -e %{name}-5.5
+
+# mysql < 5.7.0
+configs=""
+for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do
+       if echo "$config" | grep -q '^/'; then
+               config_file="$config"
+       elif [ -f "/etc/%{name}/$config" ]; then
+               config_file=/etc/%{name}/$config
+       else
+               clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf)
+               if [ -z "$clusterdir" ]; then
+                       echo >&2 "Can't find cluster dir for $config!"
+                       echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf"
+                       exit 1
+               fi
+               config_file="$clusterdir/mysqld.conf"
+       fi
+
+       if [ ! -f "$config_file" ]; then
+               echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/"
+               continue
+       fi
+       configs="$configs $config_file"
+done
+
+(
+echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.'
+echo 'Thus, you should invoke:'
+for config in $configs; do
+       sed -i -e '
+               s/^log-warnings *=/log-error-verbosity =/
+               s/^myisam-recover$/myisam-recover-options/
+               s/^innodb_mirrored_log_groups.*//
+       ' $config
+
+       socket=$(awk -F= '!/^#/ && $1 ~ /socket/{print $2}' $config | xargs)
+       echo "# mysql_upgrade ${socket:+--socket=$socket}"
+done
+) | %banner -e %{name}-5.7
+
 %files
 %defattr(644,root,root,755)
-%doc build-ps/rpm/*.cnf
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}
 %attr(754,root,root) /etc/rc.d/init.d/%{name}
 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
 %attr(640,root,mysql) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/clusters.conf
-%attr(755,root,root) %{_bindir}/ps_mysqld_helper
-%attr(755,root,root) %{_bindir}/ps_tokudb_admin
-%attr(755,root,root) %{_bindir}/ps-admin
 %attr(755,root,root) %{_sbindir}/innochecksum
+%attr(755,root,root) %{_sbindir}/lz4_decompress
 %attr(755,root,root) %{_sbindir}/my_print_defaults
 %attr(755,root,root) %{_sbindir}/myisamchk
 %attr(755,root,root) %{_sbindir}/myisamlog
@@ -773,49 +890,20 @@ fi
 %attr(755,root,root) %{_sbindir}/mysql_upgrade
 %attr(755,root,root) %{_sbindir}/mysqlcheck
 %attr(755,root,root) %{_sbindir}/mysqld
+%attr(755,root,root) %{_sbindir}/zlib_decompress
+
 %dir %{_libdir}/%{name}
 %dir %{_libdir}/%{name}/plugin
 %attr(755,root,root) %{_libdir}/%{name}/plugin/adt_null.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/audit_log.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_pam_compat.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_pam.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/auth.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/auth_socket.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/auth_test_plugin.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_ldap_sasl_client.so
+%{?with_ldap:%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_ldap_sasl_client.so}
 %attr(755,root,root) %{_libdir}/%{name}/plugin/connection_control.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/data_masking.ini
-%attr(755,root,root) %{_libdir}/%{name}/plugin/data_masking.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/dialog.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/group_replication.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_file.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_udf.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_vault.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/libpluginmecab.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libfnv1a_udf.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libfnv_udf.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libmurmur_udf.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_framework.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_services.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_services_threaded.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_session_detach.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_session_info.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_session_in_thd.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_2_sessions.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_all_col_types.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_cmds_1.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_commit.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_complex.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_errors.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_lock.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_processlist.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_replication.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_shutdown.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_sqlmode.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_stored_procedures_functions.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_views_triggers.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_x_sessions_deinit.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_x_sessions_init.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/locking_service.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/mypluglib.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/mysql_no_login.so
@@ -823,35 +911,17 @@ fi
 %attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_client.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_interface.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_server.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/query_response_time.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/replication_observers_example_plugin.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/rewrite_example.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/rewriter.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/scalability_metrics.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/semisync_master.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/semisync_slave.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/test_security_context.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/test_udf_services.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/validate_password.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/version_token.so
 %if %{with sphinx}
 %attr(755,root,root) %{_libdir}/%{name}/plugin/ha_sphinx.so
 %endif
-%if %{with tokudb}
-%attr(755,root,root) %{_bindir}/tokuft_logprint
-%attr(755,root,root) %{_bindir}/tokuftdump
-%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_tokudb.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/tokudb_backup.so
-%attr(755,root,root) %{_libdir}/libHotBackup.so
-%endif
-%if %{with rocksdb}
-%attr(755,root,root) %{_bindir}/ldb
-%attr(755,root,root) %{_bindir}/mysql_ldb
-%attr(755,root,root) %{_bindir}/sst_dump
-%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_rocksdb.so
-%endif
-# for plugins
 %{_mandir}/man1/innochecksum.1*
+%{_mandir}/man1/lz4_decompress.1*
 %{_mandir}/man1/my_print_defaults.1*
 %{_mandir}/man1/myisamchk.1*
 %{_mandir}/man1/myisamlog.1*
@@ -859,6 +929,7 @@ fi
 %{_mandir}/man1/mysql_plugin.1*
 %{_mandir}/man1/mysql_upgrade.1*
 %{_mandir}/man1/mysqlcheck.1*
+%{_mandir}/man1/zlib_decompress.1*
 %{_mandir}/man8/mysqld.8*
 
 %if %{?debug:1}0
@@ -870,24 +941,26 @@ fi
 %attr(700,mysql,mysql) %{_mysqlhome}
 # root:root is proper here for mysql.rpm while mysql:mysql is potential security hole
 %attr(751,root,root) /var/lib/mysql
-%attr(750,mysql,mysql) %dir /var/log/%{name}
-%attr(750,mysql,mysql) %dir /var/log/archive/%{name}
-%attr(640,mysql,mysql) %ghost /var/log/%{name}/*
+# https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_secure-file-priv
+%attr(770,mysql,mysql) %dir /var/lib/mysql-files
+%attr(750,mysql,mysql) %dir /var/log/mysql
+%attr(750,mysql,mysql) %dir /var/log/archive/mysql
+%attr(640,mysql,mysql) %ghost /var/log/mysql/*
 
 # This is template for configuration file which is created after 'service mysql init'
 %{_datadir}/%{name}/mysqld.conf
-%{_datadir}/%{name}/install_rewriter.sql
 %{_datadir}/%{name}/mysql_security_commands.sql
 %{_datadir}/%{name}/mysql_sys_schema.sql
-%{_datadir}/%{name}/mysql_system_tables.sql
 %{_datadir}/%{name}/mysql_system_tables_data.sql
+%{_datadir}/%{name}/mysql_system_tables.sql
 %{_datadir}/%{name}/mysql_test_data_timezone.sql
-%{_datadir}/%{name}/uninstall_rewriter.sql
 
 %{_datadir}/%{name}/english
 %{_datadir}/%{name}/dictionary.txt
 %{_datadir}/%{name}/fill_help_tables.sql
 %{_datadir}/%{name}/innodb_memcached_config.sql
+%{_datadir}/%{name}/install_rewriter.sql
+%{_datadir}/%{name}/uninstall_rewriter.sql
 # Don't mark these with %%lang. These are used depending
 # on database client settings.
 %{_datadir}/%{name}/bulgarian
@@ -923,6 +996,7 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/myisam_ftdump
 %attr(755,root,root) %{_bindir}/mysql_install_db
+%attr(755,root,root) %{_bindir}/mysql_ssl_rsa_setup
 %attr(755,root,root) %{_bindir}/mysql_secure_installation
 %attr(755,root,root) %{_bindir}/mysql_tzinfo_to_sql
 %attr(755,root,root) %{_bindir}/perror
@@ -930,6 +1004,7 @@ fi
 %attr(755,root,root) %{_bindir}/resolveip
 %{_mandir}/man1/myisam_ftdump.1*
 %{_mandir}/man1/mysql_install_db.1*
+%{_mandir}/man1/mysql_ssl_rsa_setup.1*
 %{_mandir}/man1/mysql_secure_installation.1*
 %{_mandir}/man1/mysql_tzinfo_to_sql.1*
 %{_mandir}/man1/perror.1*
@@ -943,33 +1018,27 @@ fi
 
 %files client
 %defattr(644,root,root,755)
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/skel/.my.cnf
-%attr(755,root,root) %{_bindir}/lz4_decompress
+%attr(600,root,root) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/skel/.my.cnf
 %attr(755,root,root) %{_bindir}/mysql
-%attr(755,root,root) %{_bindir}/mysql_config_editor
-%attr(755,root,root) %{_bindir}/mysql_ssl_rsa_setup
 %attr(755,root,root) %{_bindir}/mysqladmin
 %attr(755,root,root) %{_bindir}/mysqlbinlog
+%attr(755,root,root) %{_bindir}/mysql_config_editor
 %attr(755,root,root) %{_bindir}/mysqldump
 %attr(755,root,root) %{_bindir}/mysqlimport
 %attr(755,root,root) %{_bindir}/mysqlpump
 %attr(755,root,root) %{_bindir}/mysqlshow
-%attr(755,root,root) %{_bindir}/zlib_decompress
-%{_mandir}/man1/lz4_decompress.1*
 %{_mandir}/man1/mysql.1*
-%{_mandir}/man1/mysql_config_editor.1*
-%{_mandir}/man1/mysql_ssl_rsa_setup.1*
 %{_mandir}/man1/mysqladmin.1*
 %{_mandir}/man1/mysqlbinlog.1*
+%{_mandir}/man1/mysql_config_editor.1*
 %{_mandir}/man1/mysqldump.1*
 %{_mandir}/man1/mysqlimport.1*
 %{_mandir}/man1/mysqlpump.1*
 %{_mandir}/man1/mysqlshow.1*
-%{_mandir}/man1/zlib_decompress.1*
 
 %files libs
 %defattr(644,root,root,755)
-%attr(751,root,root) %dir %{_sysconfdir}/%{name}
+%attr(751,root,root) %dir %{_sysconfdir}/mysql
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/mysql-client.conf
 %{_sysconfdir}/%{name}/my.cnf
 %attr(755,root,root) %{_libdir}/libmysqlclient.so.*.*.*
@@ -983,10 +1052,10 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/mysql_config
 %attr(755,root,root) %{_libdir}/libmysqlclient.so
-%{_pkgconfigdir}/mysqlclient.pc
 %if %{with ndb}
 %attr(755,root,root) %{_libdir}/libndbclient.so
 %endif
+%{_pkgconfigdir}/mysqlclient.pc
 # static-only so far
 %{_libdir}/libmysqld.a
 %{_libdir}/libmysqlservices.a
@@ -1005,14 +1074,21 @@ fi
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/mysqlslap
 %attr(755,root,root) %{_bindir}/mysqltest
+#%dir %{_datadir}/sql-bench
+#%{_datadir}/sql-bench/[CDRl]*
+#%attr(755,root,root) %{_datadir}/sql-bench/[bcgirst]*
 %{_mandir}/man1/mysqlslap.1*
 
+#%files doc
+#%defattr(644,root,root,755)
+#%doc Docs/manual.html Docs/manual_toc.html
+
 %if %{with ndb}
 %files ndb
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_sbindir}/ndbd
-%attr(754,root,root) /etc/rc.d/init.d/%{name}-ndb
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-ndb
+%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb
 %{_mandir}/man1/ndbd_redo_log_reader.1*
 %{_mandir}/man8/ndbd.8*
 
@@ -1055,14 +1131,14 @@ fi
 %files ndb-mgm
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_sbindir}/ndb_mgmd
-%attr(754,root,root) /etc/rc.d/init.d/%{name}-ndb-mgm
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-ndb-mgm
+%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb-mgm
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-mgm
 %{_mandir}/man8/ndb_mgmd.8*
 
 %files ndb-cpc
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_sbindir}/ndb_cpcd
 %attr(754,root,root) /etc/rc.d/init.d/mysql-ndb-cpc
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-ndb-cpc
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-cpc
 %{_mandir}/man1/ndb_cpcd.1*
 %endif
index c9da04de6779faa41945bc75a57661dedc86d4ea..658fb6db3d088fa3b7c9b2e38a79beac142c60e7 100644 (file)
@@ -40,6 +40,10 @@ skip-external-locking
 # Disabling symbolic-links is recommended to prevent assorted security risks
 symbolic-links=0
 
+# Default storage engine is InnoDB since 5.5.5
+# You may revert to previous behaviour by specifiying MyISAM here
+#default-storage-engine=InnoDB
+
 # Don't listen on a TCP/IP port at all. This is a security enhancement,
 # if all processes that need to connect to mysqld run on the same host.
 # All interaction with mysqld must be made via Unix sockets.
@@ -54,9 +58,7 @@ skip-networking
 # Emergency option. Use only if you really need this.
 #skip-grant-tables
 
-# http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_default-storage-engine
-# Default storage engine is InnoDB since 5.5.5
-# You may revert to previous behaviour by specifiying MyISAM here
+# http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_default-storage-engine
 #default-storage-engine=MyISAM
 
 # Replication Master Server (default)
@@ -124,7 +126,7 @@ log-output = FILE
 
 # mysqld error log (stderr)
 log-error = /var/log/mysql/mysqld.log
-log-warnings = 2
+log-error-verbosity = 2
 
 # Log slow queries
 slow-query-log
@@ -150,7 +152,6 @@ slow-query-log-file = /var/log/mysql/slow.log
 # Internal server variables
 #
 
-explicit_defaults_for_timestamp = true
 #back_log=5
 #connect_timeout=5
 #delayed_insert_timeout=300
@@ -187,10 +188,6 @@ explicit_defaults_for_timestamp = true
 # Fulltext search options
 #ft_min_word_len=2
 
-# Turn off nonstandard TIMESTAMP behaviors
-# http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp
-explicit_defaults_for_timestamp = true
-
 #
 # MyISAM tables options
 #
@@ -200,11 +197,10 @@ explicit_defaults_for_timestamp = true
 #delay-key-write-for-all-tables
 
 # Repair automatically on open if the table wasn't closed properly.
-# http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_myisam-recover-options
+# http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_myisam-recover-options
 myisam-recover-options
-#
-#myisam_sort_buffer_size=4M
 
+#myisam_sort_buffer_size=4M
 
 # To completely disable InnoDB, use this option
 # this makes all innodb options being unknown options (including skip-innodb)
@@ -222,11 +218,8 @@ innodb_file_per_table
 
 # these are actual defaults (as of 5.0.26)
 innodb_data_home_dir = @clusterdir@/mysqldb/db
-innodb_data_file_path = ibdata1:10M:autoextend
 innodb_log_group_home_dir = @clusterdir@/mysqldb/db
 innodb_log_files_in_group=2
-innodb_log_file_size=5M
-innodb_log_buffer_size=1M
 
 #innodb_flush_log_at_trx_commit=1
 #innodb_log_arch_dir = @clusterdir@/innodb/log
diff --git a/mysqldumpslow-clusters.patch b/mysqldumpslow-clusters.patch
new file mode 100644 (file)
index 0000000..415ab93
--- /dev/null
@@ -0,0 +1,46 @@
+--- percona-server-5.6.20-68.0/scripts/mysqldumpslow.sh~       2014-08-29 10:58:05.000000000 +0300
++++ percona-server-5.6.20-68.0/scripts/mysqldumpslow.sh        2014-09-06 20:50:22.000000000 +0300
+@@ -51,8 +51,33 @@
+ $opt{'help'} and usage();
++# find config file for first defined cluster
++sub get_defaults_file {
++      my $clusters_file = '/etc/mysql/clusters.conf';
++      return unless -f $clusters_file;
++
++      open(my $fh , "< $clusters_file") or return;
++      while (<$fh>) {
++              my ($config, $clusterdir) = m{^([^#]+)\s*=\s*(.+)$};
++              next unless $config;
++
++              if ($config !~ m{/}) {
++                      my $f = "/etc/mysql/$config";
++                      return $f if -f $f;
++
++                      my $f = "$clusterdir/$config";
++                      return $f if -f $f;
++              }
++              return $config;
++      }
++      close($fh) or die $!;
++      return undef;
++}
++
+ unless (@ARGV) {
+-    my $defaults   = `my_print_defaults mysqld`;
++      my $defaults_file = get_defaults_file;
++      my $defaults_arg = "-c $defaults_file" if $defaults_file;
++   my $defaults   = `my_print_defaults $defaults_arg mysqld`;
+     my $basedir = ($defaults =~ m/--basedir=(.*)/)[0]
+       or die "Can't determine basedir from 'my_print_defaults mysqld' output: $defaults";
+     warn "basedir=$basedir\n" if $opt{v};
+@@ -61,7 +86,7 @@
+     my $slowlog = ($defaults =~ m/--slow-query-log-file=(.*)/)[0];
+     if (!$datadir or $opt{i}) {
+       # determine the datadir from the instances section of /etc/my.cnf, if any
+-      my $instances  = `my_print_defaults instances`;
++      my $instances  = `my_print_defaults $defaults_arg instances`;
+       die "Can't determine datadir from 'my_print_defaults mysqld' output: $defaults"
+           unless $instances;
+       my @instances = ($instances =~ m/^--(\w+)-/mg);
diff --git a/ssl-errors.patch b/ssl-errors.patch
new file mode 100644 (file)
index 0000000..5034b82
--- /dev/null
@@ -0,0 +1,45 @@
+diff -urp mysql-5.7.36.org/vio/viossl.c mysql-5.7.36/vio/viossl.c
+--- mysql-5.7.36.org/vio/viossl.c      2021-09-07 07:26:47.000000000 +0200
++++ mysql-5.7.36/vio/viossl.c  2021-11-29 10:34:20.106597290 +0100
+@@ -137,7 +137,7 @@ static my_bool ssl_should_retry(Vio *vio
+                                 enum enum_vio_io_event *event,
+                                 unsigned long *ssl_errno_holder)
+ {
+-  int ssl_error;
++  int ssl_error, err_error;
+   SSL *ssl= vio->ssl_arg;
+   my_bool should_retry= TRUE;
+@@ -148,12 +148,23 @@ static my_bool ssl_should_retry(Vio *vio
+   switch (ssl_error)
+   {
+   case SSL_ERROR_WANT_READ:
++    err_error = ssl_error;  // for backward compatibility.
+     *event= VIO_IO_EVENT_READ;
+     break;
+   case SSL_ERROR_WANT_WRITE:
++    err_error = ssl_error;  // for backward compatibility.
+     *event= VIO_IO_EVENT_WRITE;
+     break;
+   default:
++    /* first save the top ERR error */
++#ifdef HAVE_WOLFSSL
++    /* TODO: when wolfSSL issue 4240 is fixed (see bug 27855668) remove the
++     * "if" branch */
++    err_error = ssl_error;
++#else
++    err_error = ERR_get_error();
++#endif
++    /* now report all remaining errors on and/or clear the error stack */
+ #ifndef NDEBUG  /* Debug build */
+     /* Note: the OpenSSL error queue gets cleared in report_errors(). */
+     report_errors(ssl);
+@@ -166,7 +177,7 @@ static my_bool ssl_should_retry(Vio *vio
+     break;
+   }
+-  *ssl_errno_holder= ssl_error;
++  *ssl_errno_holder= err_error;
+   return should_retry;
+ }