]> TLD Linux GIT Repositories - packages/mysql.git/commitdiff
- MySQL 8.2 from PLD
authorMarcin Krol <hawk@tld-linux.org>
Sat, 16 Dec 2023 17:00:28 +0000 (18:00 +0100)
committerMarcin Krol <hawk@tld-linux.org>
Sat, 16 Dec 2023 17:00:28 +0000 (18:00 +0100)
18 files changed:
build.patch [deleted file]
drop-sysctl_h.patch [deleted file]
mysql-5.7-sphinx.patch
mysql-chain-certs.patch [deleted file]
mysql-clusters.conf
mysql-cmake.patch
mysql-dubious-exports.patch [deleted file]
mysql-opt.patch
mysql-protobuf.patch [deleted file]
mysql-readline.patch [new file with mode: 0644]
mysql-sphinx.patch
mysql-system-xxhash.patch [new file with mode: 0644]
mysql-versioning.patch [deleted file]
mysql.init
mysql.logrotate
mysql.spec
mysqld.conf
mysqldumpslow-clusters.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;
diff --git a/mysql-chain-certs.patch b/mysql-chain-certs.patch
deleted file mode 100644 (file)
index 36c1cd3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-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 @@
-     key_file= cert_file;
-   if (cert_file &&
--      SSL_CTX_use_certificate_file(ctx, cert_file, SSL_FILETYPE_PEM) <= 0)
-+      SSL_CTX_use_certificate_chain_file(ctx, cert_file) <= 0)
-   {
-     *error= SSL_INITERR_CERT;
-     DBUG_PRINT("error",("%s from file '%s'", sslGetErrString(*error), cert_file));
index c61764728841f159671632f80cb7c4e8d8c1c7d9..02d9bebc649131cf76aad7a5ed2b81fae6faf269 100644 (file)
@@ -7,4 +7,4 @@
 # /config/location.conf=/cluster/directory
 # If you give config name without path it defaults to /etc/mysql/
 
-mysqld.conf=/var/lib/mysql
+mysqld.conf=/var/lib/mysql{MYSQL_MAJOR}/01
index b26722a8b40411d25fe66910200f6c613150e75e..b22b2f1f15baef0fc55e331ae05fe1fbe6814882 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,25 @@ 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)
+--- mysql-8.1.0/CMakeLists.txt~        2023-06-21 09:52:10.000000000 +0200
++++ mysql-8.1.0/CMakeLists.txt 2023-10-20 10:08:46.673284042 +0200
+@@ -20,6 +20,8 @@
+ # along with this program; if not, write to the Free Software
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
++variable_watch(CMAKE_EXECUTABLE_SUFFIX)
++
+ MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
+ IF(WIN32)
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..b48ce5d3278c161139a4593adacfddc194ef39f6 100644 (file)
@@ -1,45 +1,57 @@
-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.27/cmake/build_configurations/compiler_options.cmake.orig        2019-06-10 16:43:20.000000000 +0200
++++ mysql-5.7.27/cmake/build_configurations/compiler_options.cmake     2019-07-29 05:55:55.892824445 +0200
+@@ -50,8 +50,8 @@
+     IF(C_NO_EXPENSIVE_OPTIMIZATIONS)
+       SET(COMMON_C_FLAGS "${COMMON_C_FLAGS} -fno-expensive-optimizations")
+     ENDIF()
+-    SET(CMAKE_C_FLAGS_DEBUG          "${COMMON_C_FLAGS}")
+-    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}")
++    SET(CMAKE_C_FLAGS_DEBUG          "${CMAKE_C_FLAGS_DEBUG} ${COMMON_C_FLAGS}")
++    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_C_FLAGS_RELWITHDEBINFO} ${COMMON_C_FLAGS}")
+   ENDIF()
+   IF(CMAKE_COMPILER_IS_GNUCXX)
+     SET(COMMON_CXX_FLAGS               "-g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing")
+@@ -59,7 +59,7 @@
+     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)
+-      SET(COMMON_CXX_FLAGS             "${COMMON_CXX_FLAGS} -std=gnu++03")
++      SET(COMMON_CXX_FLAGS             "${COMMON_CXX_FLAGS} -std=gnu++11")
      ENDIF()
+     # Disable inline optimizations for valgrind testing to avoid false positives
+     IF(WITH_VALGRIND)
+@@ -80,15 +80,15 @@
+     IF(CXX_NO_EXPENSIVE_OPTIMIZATIONS)
+       SET(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -fno-expensive-optimizations")
+     ENDIF()
+-    SET(CMAKE_CXX_FLAGS_DEBUG          "${COMMON_CXX_FLAGS}")
+-    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")
++    SET(CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_CXX_FLAGS}")
++    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMMON_CXX_FLAGS}")
    ENDIF()
  
-@@ -166,13 +166,13 @@
+   # Default Clang flags
+   IF(CMAKE_C_COMPILER_ID MATCHES "Clang")
+     SET(COMMON_C_FLAGS               "-g -fno-omit-frame-pointer -fno-strict-aliasing")
+-    SET(CMAKE_C_FLAGS_DEBUG          "${COMMON_C_FLAGS}")
+-    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_C_FLAGS}")
++    SET(CMAKE_C_FLAGS_DEBUG          "${CMAKE_C_FLAGS_DEBUG} ${COMMON_C_FLAGS}")
++    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_C_FLAGS_RELWITHDEBINFO} ${COMMON_C_FLAGS}")
+   ENDIF()
+   IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+     SET(COMMON_CXX_FLAGS               "-g -fno-omit-frame-pointer -fno-strict-aliasing")
+@@ -95,11 +95,11 @@
+     IF(CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 6.0 OR
+         CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
+       IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+-        SET(COMMON_CXX_FLAGS           "${COMMON_CXX_FLAGS} -std=gnu++03")
++        SET(COMMON_CXX_FLAGS           "${COMMON_CXX_FLAGS} -std=gnu++11")
        ENDIF()
+     ENDIF()
+-    SET(CMAKE_CXX_FLAGS_DEBUG          "${COMMON_CXX_FLAGS}")
+-    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${COMMON_CXX_FLAGS}")
++    SET(CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_CXX_FLAGS}")
++    SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMMON_CXX_FLAGS}")
+   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}")
+   # Solaris flags
diff --git a/mysql-protobuf.patch b/mysql-protobuf.patch
deleted file mode 100644 (file)
index 6e85914..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-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 @@
- #include <google/protobuf/io/tokenizer.h>
- #include <google/protobuf/io/zero_copy_stream.h>
- #include <google/protobuf/wire_format_lite.h>
-+#if GOOGLE_PROTOBUF_VERSION < 3008000
- #include <google/protobuf/wire_format_lite_inl.h>
-+#endif
- #include <google/protobuf/dynamic_message.h>
- #include "mysqlx_connection.pb.h"
diff --git a/mysql-readline.patch b/mysql-readline.patch
new file mode 100644 (file)
index 0000000..ca2af06
--- /dev/null
@@ -0,0 +1,33 @@
+--- mysql-8.0.20/client/mysql.cc~      2020-05-12 19:39:17.000000000 +0200
++++ mysql-8.0.20/client/mysql.cc       2020-05-12 19:49:31.903300850 +0200
+@@ -79,6 +79,7 @@
+ #define LOG_USER 0
+ #else
+ #include <readline.h>
++#include <history.h>
+ #include <syslog.h>
+ #define HAVE_READLINE
+@@ -1134,22 +1134,6 @@ static COMMANDS commands[] = {
+ static const char *load_default_groups[] = {"mysql", "client", nullptr};
+ #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-system-xxhash.patch b/mysql-system-xxhash.patch
new file mode 100644 (file)
index 0000000..9ca5514
--- /dev/null
@@ -0,0 +1,168 @@
+--- mysql-8.0.30/plugin/group_replication/libmysqlgcs/src/bindings/xcom/gcs_message_stage_split.cc.orig        2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/plugin/group_replication/libmysqlgcs/src/bindings/xcom/gcs_message_stage_split.cc     2022-10-09 14:33:34.598098038 +0200
+@@ -126,7 +126,7 @@ Gcs_sender_id calculate_sender_id(const
+   std::string info(node.get_member_id().get_member_id());
+   info.append(node.get_member_uuid().actual_value);
+-  return GCS_XXH64(info.c_str(), info.size(), 0);
++  return XXH64(info.c_str(), info.size(), 0);
+ }
+ bool Gcs_message_stage_split_v2::update_members_information(
+--- mysql-8.0.30/plugin/group_replication/libmysqlgcs/src/bindings/xcom/gcs_xxhash.h.orig      2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/plugin/group_replication/libmysqlgcs/src/bindings/xcom/gcs_xxhash.h   2022-10-09 08:41:35.109178797 +0200
+@@ -25,10 +25,6 @@
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+-// Define a namespace prefix to all xxhash functions. This is done to
+-// avoid conflict with xxhash symbols in liblz4.
+-#define XXH_NAMESPACE GCS_
+-
+-#include "xxhash.h"
++#include <xxhash.h>
+ #endif  // GCS_XXHASH_H_INCLUDED
+--- mysql-8.0.30/plugin/group_replication/libmysqlgcs/CMakeLists.txt.orig      2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/plugin/group_replication/libmysqlgcs/CMakeLists.txt   2022-10-09 08:42:55.768741827 +0200
+@@ -140,7 +140,6 @@ SET(GCS_SOURCES
+   src/bindings/xcom/gcs_xcom_statistics_interface.cc
+   src/bindings/xcom/gcs_xcom_proxy.cc
+   src/bindings/xcom/gcs_xcom_communication_protocol_changer.cc
+-  ${BUNDLED_LZ4_PATH}/xxhash.c # required by gcs_message_stage_split
+   src/bindings/xcom/gcs_message_stage_split.cc
+   src/bindings/xcom/gcs_xcom_synode.cc
+   src/bindings/xcom/gcs_xcom_expels_in_progress.cc)
+@@ -219,6 +218,7 @@ ADD_LIBRARY(mysqlgcs STATIC ${XCOM_SOURC
+ # Dependency on mysys from gcs_logging_system.cc
+ # but pick up symbols from the server:
+ # TARGET_LINK_LIBRARIES(mysqlgcs mysys)
++TARGET_LINK_LIBRARIES(mysqlgcs xxhash)
+ IF(CMAKE_VERSION VERSION_GREATER "3.19" AND NOT APPLE_XCODE)
+   # New in version 3.19:
+--- mysql-8.0.30/sql/CMakeLists.txt.orig       2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/sql/CMakeLists.txt    2022-10-09 08:53:20.935355008 +0200
+@@ -755,7 +755,6 @@ SET(SQL_SOURCE
+   ${CONF_SOURCES}
+   ${SQL_SHARED_SOURCES}
+   ${SQL_HEADERS}
+-  ${BUNDLED_LZ4_PATH}/xxhash.c
+   ../libmysql/errmsg.cc
+   ../sql-common/client.cc
+   ../sql-common/client_plugin.cc
+@@ -813,11 +812,6 @@ IF(WIN32)
+       )
+ ENDIF()
+-MY_ADD_COMPILE_DEFINITIONS(
+-  ${BUNDLED_LZ4_PATH}/xxhash.c
+-  COMPILE_DEFINITIONS XXH_NAMESPACE=MY_
+-  )
+-
+ # Workaround for Apple Clang bug on ARM.
+ # When linking mysqld (and executables using server_unittest_library)
+ # we get linker warnings about
+@@ -842,13 +836,6 @@ IF(APPLE_ARM)
+     )
+ ENDIF()
+-ADD_COMPILE_FLAGS(
+-  ${BUNDLED_LZ4_PATH}/xxhash.c
+-  iterators/hash_join_iterator.cc
+-  rpl_write_set_handler.cc
+-  COMPILE_FLAGS -I${CMAKE_SOURCE_DIR}/extra/lz4 -I${BUNDLED_LZ4_PATH}
+-  )
+-
+ # Fixes "C1128: number of sections exceeded object file format limit" in MSVC
+ IF(WIN32)
+   ADD_COMPILE_FLAGS(
+@@ -924,7 +911,7 @@ ADD_DEPENDENCIES(sql_main GenBootstrapPr
+ ADD_DEPENDENCIES(sql_main GenSysSchema)
+ TARGET_LINK_LIBRARIES(sql_main ${MYSQLD_STATIC_PLUGIN_LIBS}
+   mysql_server_component_services mysys strings vio
+-  binlogevents_static ${LIBWRAP} ${LIBDL} ${SSL_LIBRARIES})
++  binlogevents_static xxhash ${LIBWRAP} ${LIBDL} ${SSL_LIBRARIES})
+ # sql/immutable_string.h uses
+ # google::protobuf::io::CodedOutputStream::WriteVarint64ToArray
+--- mysql-8.0.30/sql/iterators/hash_join_iterator.cc.orig      2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/sql/iterators/hash_join_iterator.cc   2022-10-09 17:45:57.618897459 +0200
+@@ -32,7 +32,7 @@
+ #include "field_types.h"
+ #include "my_alloc.h"
+ #include "my_bit.h"
+-#include "my_xxhash.h"
++#include <xxhash.h>
+ #include "my_inttypes.h"
+ #include "my_sys.h"
+@@ -307,7 +307,7 @@ static bool WriteRowToChunk(
+   const uint64_t join_key_hash =
+       join_key_and_row_buffer->length() == 0
+           ? kZeroKeyLengthHash
+-          : MY_XXH64(join_key_and_row_buffer->ptr(),
++          : XXH64(join_key_and_row_buffer->ptr(),
+                      join_key_and_row_buffer->length(), xxhash_seed);
+   assert((chunks->size() & (chunks->size() - 1)) == 0);
+--- mysql-8.0.30/sql/rpl_write_set_handler.cc.orig     2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/sql/rpl_write_set_handler.cc  2022-10-09 20:07:41.099496817 +0200
+@@ -37,7 +37,7 @@
+ #include "my_dbug.h"
+ #include "my_inttypes.h"
+ #include "my_murmur3.h"  // murmur3_32
+-#include "my_xxhash.h"   // IWYU pragma: keep
++#include <xxhash.h>
+ #include "mysql_com.h"
+ #include "sql-common/json_binary.h"
+ #include "sql-common/json_dom.h"
+@@ -75,7 +75,7 @@ uint64 calc_hash(ulong algorithm, type T
+   if (algorithm == HASH_ALGORITHM_MURMUR32)
+     return (murmur3_32((const uchar *)T, len, 0));
+   else
+-    return (MY_XXH64((const uchar *)T, len, 0));
++    return (XXH64((const uchar *)T, len, 0));
+ }
+ #ifndef NDEBUG
+--- mysql-8.0.30/unittest/gunit/hash_join-t.cc.orig    2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/unittest/gunit/hash_join-t.cc 2022-10-09 20:36:43.693389709 +0200
+@@ -28,7 +28,7 @@
+ #include "include/my_murmur3.h"
+ #include "my_alloc.h"
+-#include "my_xxhash.h"
++#include <xxhash.h>
+ #include "sql/item_cmpfunc.h"
+ #include "sql/iterators/hash_join_buffer.h"
+ #include "sql/iterators/hash_join_iterator.h"
+@@ -204,7 +204,7 @@ static void BM_XXHash64ShortData(size_t
+   size_t sum = 0;
+   for (size_t i = 0; i < num_iterations; ++i) {
+-    sum += MY_XXH64(&data[0], data.size(), 0);
++    sum += XXH64(&data[0], data.size(), 0);
+   }
+   StopBenchmarkTiming();
+@@ -223,7 +223,7 @@ static void BM_XXHash64LongData(size_t n
+   size_t sum = 0;
+   for (size_t i = 0; i < num_iterations; ++i) {
+-    sum += MY_XXH64(&data[0], data.size(), 0);
++    sum += XXH64(&data[0], data.size(), 0);
+   }
+   StopBenchmarkTiming();
+--- mysql-8.0.30/unittest/gunit/innodb/ut0rnd-t.cc.orig        2022-07-06 23:36:34.000000000 +0200
++++ mysql-8.0.30/unittest/gunit/innodb/ut0rnd-t.cc     2022-10-09 20:46:00.157041753 +0200
+@@ -33,7 +33,7 @@
+ #include "storage/innobase/include/ut0crc32.h"
+ #include "storage/innobase/include/ut0rnd.h"
+-#include "my_xxhash.h"
++#include <xxhash.h>
+ namespace innodb_ut0rnd_unittest {
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..c0a7a2677aeeb4c9f6608217b5a9b07d19345563 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# mysql                A very fast and reliable SQL database engine
+# mysql{MYSQL_MAJOR}           A very fast and reliable SQL database engine
 #
 # chkconfig:   2345 84 25
 #
 . /etc/sysconfig/network
 
 # Get service config
-if [ -f /etc/sysconfig/mysql ]; then
-       . /etc/sysconfig/mysql
+if [ -f /etc/sysconfig/mysql{MYSQL_MAJOR} ]; then
+       . /etc/sysconfig/mysql{MYSQL_MAJOR}
 else
-       nls "Error: %s not found" /etc/sysconfig/mysql
-       nls "%s can't be run." MySQL
+       nls "Error: %s not found" /etc/sysconfig/mysql{MYSQL_MAJOR}
+       nls "%s can't be run." MySQL{MYSQL_MAJOR}
        exit 1
 fi
 
 if [ -n "$MYSQL_DB_CLUSTERS" ]; then
-       nls "Warning: MYSQL_DB_CLUSTERS is set. It's obsolete. Use %s instead." /etc/mysql/clusters.conf
+       nls "Warning: MYSQL_DB_CLUSTERS is set. It's obsolete. Use %s instead." /etc/mysql{MYSQL_MAJOR}/clusters.conf
 fi
 
-if [ -f /etc/mysql/clusters.conf ]; then
-       MYSQL_DB_CLUSTERS=$(awk -F= '!/^#/ && /=/{print $2}' /etc/mysql/clusters.conf)
+if [ -f /etc/mysql{MYSQL_MAJOR}/clusters.conf ]; then
+       MYSQL_DB_CLUSTERS=$(awk -F= '!/^#/ && /=/{print $2}' /etc/mysql{MYSQL_MAJOR}/clusters.conf)
        if [ -z "$MYSQL_DB_CLUSTERS" ]; then
                nls "Warning: there are no configured clusters."
        fi
 
 else
-       nls "Warning: Missing clusters config file %s" /etc/mysql/clusters.conf
+       nls "Warning: Missing clusters config file %s" /etc/mysql{MYSQL_MAJOR}/clusters.conf
        if [ -z "$MYSQL_DB_CLUSTERS" ]; then
                nls "Warning: there are no configured clusters."
-               nls "Using default cluster /var/lib/mysql (compatibility mode)"
-               MYSQL_DB_CLUSTERS=/var/lib/mysql
+               nls "Using default cluster /var/lib/mysql{MYSQL_MAJOR} (compatibility mode)"
+               MYSQL_DB_CLUSTERS=/var/lib/mysql{MYSQL_MAJOR}/01
        fi
 fi
 
@@ -44,14 +44,14 @@ fi
 # Check that networking is up
 if is_yes "${NETWORKING}"; then
        if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status -a "$1" != init ]; then
-               msg_network_down MySQL
+               msg_network_down MySQL{MYSQL_MAJOR}
                exit 1
        fi
 else
        exit 0
 fi
 
-sharedir=/usr/share/mysql
+sharedir=/usr/share/mysql{MYSQL_MAJOR}
 
 action="$1"
 
@@ -60,9 +60,9 @@ if [ $# -gt 1 ]; then
        shift
        # perform action for specified clusters only
        for a in "$@"; do
-               # try auto resolving from /etc/mysql/clusters.conf
+               # try auto resolving from /etc/mysql{MYSQL_MAJOR}/clusters.conf
                if [[ "$a" != /* ]]; then
-                       m=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $1}' /etc/mysql/clusters.conf)
+                       m=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $1}' /etc/mysql{MYSQL_MAJOR}/clusters.conf)
                        if [ -z "$m" ]; then
                                echo >&2 "Cluster name '$a' did not match anything!"
                                exit 1
@@ -71,7 +71,7 @@ if [ $# -gt 1 ]; then
                                echo >&2 "Cluster name '$a' ambiguous:" $m
                                exit 1
                        fi
-                       a=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $2}' /etc/mysql/clusters.conf)
+                       a=$(awk -va="$a" -F= 'substr($0, 1, length(a)) == a {print $2}' /etc/mysql{MYSQL_MAJOR}/clusters.conf)
                fi
                DB_CLUSTERS="$DB_CLUSTERS $a"
        done
@@ -80,7 +80,7 @@ else
 fi
 
 # global error log, if mysqld.conf hasn't migrated to log-error style
-MYSQL_ERRLOG=/var/log/mysql/mysqld.log
+MYSQL_ERRLOG=/var/log/mysql{MYSQL_MAJOR}/mysqld.log
 MYSQL_STOP_WAIT_TIME=${MYSQL_STOP_WAIT_TIME:-900}
 
 #
@@ -125,7 +125,7 @@ mysqlstatus() {
        fi
 
        if [ "$mode" = "start" ]; then
-               MYSQL_GREP_PID=$(grep -alE "^/usr/sbin/mysqld.*${MYSQL_PIDFILE}" /proc/[0-9]*/cmdline 2> /dev/null | awk -F "/" '{ print $3; exit; }')
+               MYSQL_GREP_PID=$(grep -alE "^/usr/sbin/mysqld{MYSQL_MAJOR}.*${MYSQL_PIDFILE}" /proc/[0-9]*/cmdline 2> /dev/null | awk -F "/" '{ print $3; exit; }')
                if [ -n "$MYSQL_GREP_PID" ]; then
                        MYSQL_PID=$MYSQL_GREP_PID
                        if grep -qa "$MYSQL_PIDFILE" /proc/$MYSQL_PID/cmdline 2> /dev/null; then
@@ -159,20 +159,14 @@ mysqlgetconfig() {
        local clusterdir="$1" config_file
        local mode="$2"
 
-       # emulate old behaviour if only one cluster specified
-       if [ "$clusterdir" = "$MYSQL_DB_CLUSTERS" -a "$clusterdir" = "/var/lib/mysql" -a -f /etc/mysqld.conf ]; then
-               MYSQL_RA_COMPAT=yes
-               config_file=/etc/mysqld.conf
-       else
-               local config=$(awk -F= -vclusterdir="$clusterdir" '!/^#/{ if (clusterdir == $2) print $1}' /etc/mysql/clusters.conf)
-               if [[ $config = /* ]]; then
-                       config_file="$config"
-               elif [ -f "/etc/mysql/$config" ]; then
-                       config_file="/etc/mysql/$config"
-               else
-                       config_file="$clusterdir/mysqld.conf"
-               fi
-       fi
+        local config=$(awk -F= -vclusterdir="$clusterdir" '!/^#/{ if (clusterdir == $2) print $1}' /etc/mysql{MYSQL_MAJOR}/clusters.conf)
+        if [[ $config = /* ]]; then
+                config_file="$config"
+        elif [ -f "/etc/mysql{MYSQL_MAJOR}/$config" ]; then
+                config_file="/etc/mysql{MYSQL_MAJOR}/$config"
+        else
+                config_file="$clusterdir/mysqld.conf"
+        fi
 
        MYSQL_CLUSTER_DIR="$clusterdir"
 
@@ -189,7 +183,7 @@ mysqlgetconfig() {
 
        if [ ! -f "$config_file" ]; then
                nls "Error: config file %s not found" "$config_file"
-               nls "MySQL can't be run. Did you initialize DB by doing \`$0 init'?"
+               nls "MySQL{MYSQL_MAJOR} can't be run. Did you initialize DB by doing \`$0 init'?"
                if [ "$mode" = "status" ]; then 
                        exit 3
                else
@@ -248,11 +242,7 @@ mysqlgetconfig() {
                unset MYSQL_LOG_ERROR
        fi
 
-       if is_yes "$MYSQL_RA_COMPAT"; then
-               MYSQL_DATA_DIR_SUB=""
-       else
-               MYSQL_DATA_DIR_SUB="/mysqldb"
-       fi
+       MYSQL_DATA_DIR_SUB="/mysqldb"
 
        if [ -z "$MYSQL_DATA_DIR" -o "$MYSQL_DATA_DIR" != "${clusterdir}${MYSQL_DATA_DIR_SUB}/db" ]; then
                nls "Error: datadir specified in %s should be %s" "$config_file" "$clusterdir${MYSQL_DATA_DIR_SUB}/db"
@@ -267,7 +257,7 @@ mysqlgetconfig() {
        fi
 
        if [ -z "$MYSQL_USER" ]; then
-               echo "$(nls 'MySQL user not configured properly')"'!' >&2
+               echo "$(nls 'MySQL{MYSQL_MAJOR} user not configured properly')"'!' >&2
                nls "Edit %s and configure it." "$config_file" >&2
                exit 6
        fi
@@ -278,23 +268,23 @@ mysqlstart() {
        local clusterdir="$1"
        mysqlgetconfig "$clusterdir"
        if [ ! -d "$MYSQL_DATA_DIR/mysql" ]; then
-               nls "MySQL cluster %s not initialized." "$clusterdir"
+               nls "MySQL{MYSQL_MAJOR} cluster %s not initialized." "$clusterdir"
                nls "Try \`%s init %s' before start." "$0" "$clusterdir"
                exit 6
        fi
 
-       msg_starting "MySQL $clusterdir"; busy
+       msg_starting "MySQL{MYSQL_MAJOR} $clusterdir"; busy
        [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && DEFAULT_SERVICE_RUN_NICE_LEVEL=0
        rm -f "$MYSQL_PIDFILE"
 
 
        TMPDIR=/tmp nice -n ${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} \
-               /usr/bin/setsid /usr/sbin/mysqld \
+               /usr/bin/setsid /usr/sbin/mysqld{MYSQL_MAJOR} \
                        --defaults-file=$MYSQL_CONFIG \
                        --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
@@ -302,7 +292,7 @@ mysqlstart() {
        # it takes longer for mysqld to start and create pidfile if it has to recover innodb transactions
        if [ "$MYSQL_STATUS" = "starting" ]; then
                echo ""
-               show "Waiting for MySQL to start"
+               show "Waiting for MySQL{MYSQL_MAJOR} to start"
                busy
 
                # while the pid is running, mysql is starting up
@@ -336,7 +326,7 @@ mysqlstop() {
 
        # try graceful shutdown -- send shutdown command
        # requires mysql_sysadmin user proper privs
-       /usr/bin/mysqladmin --defaults-file=$MYSQL_CONFIG ${MYSQL_SOCKET:+--socket=$MYSQL_SOCKET} shutdown >/dev/null 2>&1
+       /usr/bin/mysqladmin{MYSQL_MAJOR} --defaults-file=$MYSQL_CONFIG ${MYSQL_SOCKET:+--socket=$MYSQL_SOCKET} shutdown >/dev/null 2>&1
        mysqlstatus "$clusterdir" stop
 
        if [ "$MYSQL_PID" != "unknown" ]; then
@@ -360,13 +350,13 @@ mysqlstop() {
 # report slave status
 # uses MYSQL_SOCKET - path to mysql socket
 slave_status() {
-       if [ ! -x /usr/bin/mysql ]; then
-               echo >&2 "Slave status not available: 'mysql' program not installed."
+       if [ ! -x /usr/bin/mysql{MYSQL_MAJOR} ]; then
+               echo >&2 "Slave status not available: 'mysql{MYSQL_MAJOR}' program not installed."
                return
        fi
 
        # see if slave status can be reported
-       local err=0 slave_status=$(mysql --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" -e 'show slave status\G')
+       local err=0 slave_status=$(mysql{MYSQL_MAJOR} --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" -e 'show slave status\G')
        if [ -z "$slave_status" ]; then
                # slave not setup
                return
@@ -426,26 +416,20 @@ mysqlsubsys() {
        for mysqldir in $DB_CLUSTERS; do
                mysqlstatus "$mysqldir"
                if [ "$MYSQL_STATUS" = "running" ]; then
-                       touch /var/lock/subsys/mysql
+                       touch /var/lock/subsys/mysql{MYSQL_MAJOR}
                        return
                fi
        done
-       rm -f /var/lock/subsys/mysql
+       rm -f /var/lock/subsys/mysql{MYSQL_MAJOR}
 }
 
 mysqlinit() {
        local clusterdir="$1"
 
-       if [ -f /etc/mysqld.conf ]; then
-               nls "Running in \`no cluster compat' mode: can't initialize database."
-               nls "Move /etc/mysqld.conf away and rerun \`$0 init' (new config will be in $clusterdir)."
-               exit 1
-       fi
-
        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 +439,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 +449,7 @@ mysqlinit() {
                exit 6
        fi
 
-       show "Installing MySQL system tables for $MYSQL_DATA_DIR"
+       show "Initializing MySQL{MYSQL_MAJOR} database for $MYSQL_DATA_DIR"
        busy
        TMP=/tmp TMPDIR=/tmp
 
@@ -487,33 +471,49 @@ mysqlinit() {
        fi
 
        ok=0
-       /usr/sbin/mysqld \
+       /usr/sbin/mysqld{MYSQL_MAJOR} \
                --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
-       [ -f $MYSQL_DATA_DIR/mysql/user.frm ] || ok=0
+               --log-error=$MYSQL_ERRLOG \
+               && ok=1
+       [ -f $MYSQL_DATA_DIR/mysql.ibd ] || ok=0
 
        if [ "$ok" = 1 ]; then
                ok
                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:
+PLEASE REMEMBER TO CHANGE A PASSWORD FOR THE MySQL{MYSQL_MAJOR} USERS!
+
+Start database:
+$ service mysql{MYSQL_MAJOR} start
+
+and set passwords:
+
+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, SHUTDOWN and REPLICATION CLIENT privileges):
+CREATE USER 'mysql_sysadmin'@'localhost' IDENTIFIED BY 'sysnewpassword' PASSWORD EXPIRE NEVER;
+GRANT RELOAD, SHUTDOWN, REPLICATION CLIENT ON *.* TO 'mysql_sysadmin'@'localhost';
+FLUSH PRIVILEGES;
+
+
+Both into command:
+$ mysql{MYSQL_MAJOR} -u root -p --ssl-mode=disabled -S $MYSQL_SOCKET
 
-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
+NOTE 1:
+CURRENT TEMPORARY ROOT PASSWORD CAN BE FOUND IN LOG
+(grep for "A temporary password is generated" string):
+$MYSQL_ERRLOG
 
-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
 
-NOTE: mysql_sysadmin password should be placed to $MYSQL_CONFIG in
+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,27 +523,27 @@ 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 &
+/usr/sbin/mysqld{MYSQL_MAJOR} --skip-grant &
 
 You can use the command line tool mysql to connect to the mysql
 database and look at the grant tables:
 
-shell> mysql -u root mysql
+shell> mysql{MYSQL_MAJOR} -u mysql mysql
 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
+logging in $MYSQL_DATA_DIR/mysqld.conf gives you a log in /var/log/mysql{MYSQL_MAJOR}/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.
+Please check PLD Linux ftp site for newer versions of this package.
 
 Please consult the MySQL manual section: 'Problems running
 mysql_install_db', and the manual section that describes problems on
@@ -554,13 +554,13 @@ END_OF_MSG
        fi
 
        # if it's first server, register as default
-       if [ ! -e /var/lib/mysql/mysql.sock ] || [ -L /var/lib/mysql/mysql.sock ] && [ -z "$(readlink /var/lib/mysql/mysql.sock)" ]; then
-               sock=${MYSQL_SOCKET#/var/lib/mysql/} # make it relative if possible
-               ln -s "$sock" /var/lib/mysql/mysql.sock
+       if [ ! -e /var/lib/mysql{MYSQL_MAJOR}/mysql.sock ] || [ -L /var/lib/mysql{MYSQL_MAJOR}/mysql.sock ] && [ -z "$(readlink /var/lib/mysql{MYSQL_MAJOR}/mysql.sock)" ]; then
+               sock=${MYSQL_SOCKET#/var/lib/mysql{MYSQL_MAJOR}/} # make it relative if possible
+               ln -s "$sock" /var/lib/mysql{MYSQL_MAJOR}/mysql.sock
        fi
        # same for config, move to /etc
-       if [ ! -e /etc/mysql/mysqld.conf ]; then
-               mv "$MYSQL_CLUSTER_DIR/mysqld.conf" /etc/mysql/mysqld.conf
+       if [ ! -e /etc/mysql{MYSQL_MAJOR}/mysqld.conf ]; then
+               mv "$MYSQL_CLUSTER_DIR/mysqld.conf" /etc/mysql{MYSQL_MAJOR}/mysqld.conf
        fi
 }
 
@@ -595,8 +595,8 @@ stop() {
 }
 
 condrestart() {
-       if [ ! -f /var/lock/subsys/mysql ]; then
-               msg_not_running "MySQL"
+       if [ ! -f /var/lock/subsys/mysql{MYSQL_MAJOR} ]; then
+               msg_not_running "MySQL{MYSQL_MAJOR}"
                RETVAL=$1
                return
        fi
@@ -614,7 +614,7 @@ status() {
                        RETVAL=0
                        addr=${MYSQL_BIND_ADDRESS:-0.0.0.0}
                        port=${MYSQL_PORT:-3306}
-                       socket=${MYSQL_SOCKET:-/var/lib/mysql/mysql.sock}
+                       socket=${MYSQL_SOCKET:-/var/lib/mysql{MYSQL_MAJOR}/mysql.sock}
                        pid=$MYSQL_PID
                        nls "MySQL cluster %s, pid %s\n" "$mysqldir" "$pid"
                        [ -z "$MYSQL_SKIP_NETWORKING" ] && nls "\ttcp:%s:%s\n" "$addr" "$port"
@@ -631,7 +631,7 @@ status() {
                echo
        done
 
-       for pid in $(/sbin/pidof mysqld); do
+       for pid in $(/sbin/pidof mysqld{MYSQL_MAJOR}); do
                if [[ $pids != */$pid/* ]]; then
                        running="$running $pid"
                fi
@@ -648,7 +648,7 @@ status() {
                        if [ "$MYSQL_STATUS" = "running" ]; then
                                addr=${MYSQL_BIND_ADDRESS:-0.0.0.0}
                                port=${MYSQL_PORT:-3306}
-                               socket=${MYSQL_SOCKET:-/var/lib/mysql/mysql.sock}
+                               socket=${MYSQL_SOCKET:-/var/lib/mysql{MYSQL_MAJOR}/mysql.sock}
                                nls "MySQL cluster %s, pid %s\n" "$mysqldir" "$pid"
                                [ -z "$MYSQL_SKIP_NETWORKING" ] && nls "\ttcp:%s:%s\n" "$addr" "$port"
                                nls "\tunix: %s\n" "$socket"
@@ -693,8 +693,8 @@ case "$action" in
        for mysqldir in $DB_CLUSTERS; do
                mysqlgetconfig "$mysqldir"
                # just if mysqld is really running
-               if /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" ping >/dev/null 2>&1; then
-                       /usr/bin/mysqladmin --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" flush-logs
+               if /usr/bin/mysqladmin{MYSQL_MAJOR} --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" ping >/dev/null 2>&1; then
+                       /usr/bin/mysqladmin{MYSQL_MAJOR} --defaults-file="$MYSQL_CONFIG" --socket="$MYSQL_SOCKET" flush-logs
                fi
        done
        ;;
index 4bb78ceb9acd84287db5a16baef4e66400b9d1a3..26a4e694eb257789b81ea8bac3c49d488ae55e8e 100644 (file)
 #
 # You must do this for every active cluster defined in /etc/mysql/clusters.conf
 
-/var/log/mysql/query.log
-/var/log/mysql/mysqld.log
-/var/log/mysql/slow.log
-/var/log/mysql/update*
+/var/log/mysql{MYSQL_MAJOR}/query.log
+/var/log/mysql{MYSQL_MAJOR}/mysqld.log
+/var/log/mysql{MYSQL_MAJOR}/slow.log
+/var/log/mysql{MYSQL_MAJOR}/update*
 {
-       olddir /var/log/archive/mysql
+       olddir /var/log/archive/mysql{MYSQL_MAJOR}
        notifempty
        missingok
        create 640 mysql mysql
@@ -29,6 +29,6 @@
        daily
 
        postrotate
-               /sbin/service mysql flush-logs
+               /sbin/service mysql{MYSQL_MAJOR} flush-logs
        endscript
 }
index f1b667e62fb8332d2598e79c6cd7b4dcb3aff1da..b01f597041934986f2f15369e34f2c500022d36b 100644 (file)
@@ -1,4 +1,6 @@
 # TODO:
+# - -DWITH_AUTHENTICATION_KERBEROS=ON (BR: MIT krb5)
+# - -DWITH_AUTHENTICATION_FIDO=ON (using system libfido?)
 # - mysqldump ... (invalid usage) prints to stdout not stderr (idiotic if you want to create dump and get usage in .sql)
 # - http://bugs.mysql.com/bug.php?id=16470
 # - innodb are dynamic (= as plugins) ?
 # - 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_without raid            # RAID support
 %bcond_without ssl             # OpenSSL support
-%bcond_with    systemtap       # systemtap/dtrace probes
+%bcond_without 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
+# mysql needs boost 1.77.0 and doesn't support newer/older boost versions
+%bcond_with    system_boost
+%bcond_without 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 (requires MIT Kerberos)
 
-# 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
@@ -54,66 +35,77 @@ Summary(pt_BR.UTF-8):       MySQL: Um servidor SQL rápido e confiável
 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
+%define majorver        8.2
+Name:          mysql%{majorver}
+Version:       8.2.0
+Release:        0.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/8.2.html#downloads
+Source0:       http://cdn.mysql.com/Downloads/MySQL-%{majorver}/mysql-%{version}.tar.gz
+# Source0-md5: 9ddeecbdb046cd4a8a4340445206130d
 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-md5:       6aa9a5c6a4ca1016edd0ed1178e3cb87
+Source101:     http://downloads.sourceforge.net/boost/boost_1_77_0.tar.bz2
+# Source101-md5:       09dc857466718f27237144c6f2432d86
 %endif
-Source1:       %{name}.init
-Source2:       %{name}.sysconfig
-Source3:       %{name}.logrotate
+Source1:       mysql.init
+Source2:       mysql.sysconfig
+Source3:       mysql.logrotate
 Source4:       mysqld.conf
-Source5:       %{name}-clusters.conf
-Source7:       %{name}-ndb.init
-Source8:       %{name}-ndb.sysconfig
-Source9:       %{name}-ndb-mgm.init
-Source10:      %{name}-ndb-mgm.sysconfig
-Source11:      %{name}-ndb-cpc.init
-Source12:      %{name}-ndb-cpc.sysconfig
-Source13:      %{name}-client.conf
+Source5:       mysql-clusters.conf
+Source7:       mysql-ndb.init
+Source8:       mysql-ndb.sysconfig
+Source9:       mysql-ndb-mgm.init
+Source10:      mysql-ndb-mgm.sysconfig
+Source11:      mysql-ndb-cpc.init
+Source12:      mysql-ndb-cpc.sysconfig
+Source13:      mysql-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
+Patch1:                mysql-system-xxhash.patch
+
+Patch17:       mysql-5.7-sphinx.patch
+Patch18:       mysql-sphinx.patch
+
+Patch24:       mysql-cmake.patch
+Patch25:       mysql-readline.patch
+
+Patch26:       mysqldumpslow-clusters.patch
+URL:           http://www.mysql.com/products/community/
 BuildRequires: bison >= 1.875
+%{?with_system_boost:BuildRequires:    boost-devel >= 1.77.0}
 BuildRequires: cmake >= 2.8.2
-BuildRequires: curl-devel
-BuildRequires: readline-devel >= 6.2
-BuildRequires: libstdc++-devel >= 5:4.0
-BuildRequires: automake
-%{?with_system_boost:BuildRequires:    boost-devel = 1.59.0}
+%{?with_ldap:BuildRequires:    cyrus-sasl-devel}
+# for configure and tests
+%{?with_ldap:BuildRequires:    cyrus-sasl-scram}
+#%{?with_ldap:BuildRequires:   krb5-devel}
+BuildRequires: libaio-devel
+BuildRequires: libevent-devel
 BuildRequires: libhsclient-devel
+BuildRequires: libstdc++-devel >= 5:7.1
 %{?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_ssl:BuildRequires:     openssl-devel >= 1.1.1}
+%{?with_ldap:BuildRequires:    openldap-devel}
 BuildRequires: pam-devel
-%{?with_autodeps:BuildRequires:        perl-DBI}
 BuildRequires: perl-devel >= 1:5.6.1
-BuildRequires: protobuf-devel
-BuildRequires: python3-modules
+BuildRequires: protobuf-devel >= 2.5
+BuildRequires: python-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: xxHash-devel
+BuildRequires: zlib-devel >= 1.2.12
+BuildRequires: zstd-devel
+Requires(post):        sed >= 4.0
 Requires(post,preun):  /sbin/chkconfig
 Requires(postun):      /usr/sbin/groupdel
 Requires(postun):      /usr/sbin/userdel
@@ -121,137 +113,134 @@ 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
-Suggests:      mysql-client
+Suggests:      %{name}-client
 %{?with_tcpd:Suggests: tcp_wrappers}
 Suggests:      vim-syntax-mycnf
 Provides:      MySQL-server
 Provides:      group(mysql)
 Provides:      msqlormysql
 Provides:      user(mysql)
-Obsoletes:     MySQL
-Obsoletes:     mysql-server
+Obsoletes:     MySQL < 3.22.27
+Obsoletes:     mysql-server < 4
 Conflicts:     logrotate < 3.8.0
-BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+# "MySQL supports only 64-bit platforms."
+BuildArch:      %{x8664} %{arch64}
+BuildRoot:     %{tmpdir}/mysql-%{version}-root-%(id -u -n)
 
 %define                _libexecdir     %{_sbindir}
-%define                _localstatedir  /var/lib/mysql
+%define                _localstatedir  /var/lib/%{name}
 %define                _mysqlhome      /home/services/%{name}
 
 %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 +258,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
@@ -299,7 +288,7 @@ Group:              Applications/Databases
 Requires:      %{name}-charsets = %{version}-%{release}
 Requires:      %{name}-libs = %{version}-%{release}
 Requires:      readline >= 6.2
-Obsoletes:     MySQL-client
+Obsoletes:     MySQL-client < 3.22.27
 
 %description client
 This package contains the standard MySQL clients.
@@ -323,7 +312,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 +330,10 @@ Summary(ru.UTF-8):        MySQL - хедеры и библиотеки разработ
 Summary(uk.UTF-8):     MySQL - хедери та бібліотеки програміста
 Group:         Development/Libraries
 Requires:      %{name}-libs = %{version}-%{release}
-%{?with_ssl:Requires: openssl-devel}
-Requires:      zlib-devel
-Obsoletes:     MySQL-devel
-Obsoletes:     libmysql10-devel
+%{?with_ssl:Requires:  openssl-devel >= 1.1.1}
+Requires:      zlib-devel >= 1.2.12
+Obsoletes:     MySQL-devel < 3.22.27
+Obsoletes:     libmysql10-devel < 4
 Obsoletes:     webscalesql-devel
 
 %description devel
@@ -361,8 +351,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
 Этот пакет содержит хедеры и библиотеки разработчика, необходимые для
@@ -379,7 +368,7 @@ Summary(ru.UTF-8):  MySQL - статические библиотеки
 Summary(uk.UTF-8):     MySQL - статичні бібліотеки
 Group:         Development/Libraries
 Requires:      %{name}-devel = %{version}-%{release}
-Obsoletes:     MySQL-static
+Obsoletes:     MySQL-static < 3.22.27
 
 %description static
 MySQL static libraries.
@@ -404,8 +393,8 @@ Summary(uk.UTF-8):  MySQL - бенчмарки
 Group:         Applications/Databases
 Requires:      %{name} = %{version}-%{release}
 Requires:      %{name}-client
-Requires:      perl(DBD::mysql)
-Obsoletes:     MySQL-bench
+Requires:      perl-DBD-mysql
+Obsoletes:     MySQL-bench < 3.22.27
 
 %description bench
 This package contains MySQL benchmark scripts and data.
@@ -414,16 +403,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 +430,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 +455,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,32 +473,32 @@ 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}
+%setup -q %{?with_sphinx:-a100} %{!?with_system_boost:-a101} -n mysql-%{version}
 
-# 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.*
+#%patch0 -p1
+# FIXME
+#%patch1 -p1
 
-%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
-%patch4 -p1
-%patch5 -p1
+%patch17 -p1
+%patch18 -p1
 %endif
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
+
+%patch24 -p1
+%patch25 -p1
+
+#%patch26 -p1
 
 # to get these files rebuild
 [ -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]
+# FIXME
+#%{__rm} -rv extra/lz4/lz4**
 
 %build
 install -d build
@@ -523,96 +507,73 @@ 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_EXECUTABLE_SUFFIX=string:%{majorver} \
        -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" \
        -DINSTALL_LAYOUT=RPM \
        -DINSTALL_LIBDIR=%{_lib} \
+        -DINSTALL_PRIV_LIBDIR=%{_libdir}/%{name}/private \
        -DINSTALL_MYSQLTESTDIR_RPM="" \
        -DINSTALL_PLUGINDIR=%{_lib}/%{name}/plugin \
+        -DINSTALL_SECURE_FILE_PRIVDIR=/var/lib/%{name}-files \
        -DINSTALL_SQLBENCHDIR=%{_datadir} \
        -DINSTALL_SUPPORTFILESDIR=share/%{name}-support \
        -DINSTALL_MYSQLSHAREDIR=share/%{name} \
-       -DINSTALL_SECURE_FILE_PRIVDIR="" \
-       -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
+        -DROUTER_INSTALL_LIBDIR=%{_libdir}/%{name}router/private \
+        -DROUTER_INSTALL_PLUGINDIR=%{_libdir}/%{name}router \
+       -DMYSQL_UNIX_ADDR=/var/lib/%{name}/mysql.sock \
        %{?debug:-DWITH_DEBUG=ON} \
        -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-       -DWITH_FAST_MUTEXES=ON \
+       %{!?with_ldap:-DWITH_AUTHENTICATION_LDAP=OFF} \
        -DWITH_LIBWRAP=%{?with_tcpd:ON}%{!?with_tcpd:OFF} \
-       -DWITH_PAM=ON \
        -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
        -DWITH_PIC=ON \
-       -DWITH_SCALABILITY_METRICS=ON \
-       -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
+       %{?with_ldap:-DWITH_LDAP=system} \
+       -DWITH_KERBEROS=system \
        -DWITH_LIBEVENT=system \
        -DWITH_LZ4=system \
-       -DWITH_MECAB=system \
        -DWITH_PROTOBUF=system \
-       -DWITH_READLINE=system \
+       -DWITH_SASL=system \
+        -DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
+       -DWITH_SSL=%{?with_ssl:system}%{!?with_ssl:no} \
+       %{!?with_system_boost:-DWITH_BOOST="$(pwd)/$(ls -1d ../boost_*)"} \
        -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} \
+          $RPM_BUILD_ROOT/var/{log/{archive,}/%{name},lib/{%{name},%{name}-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}
+sed -e 's#{MYSQL_MAJOR}#%{majorver}#g' %{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}
+sed -e 's#{MYSQL_MAJOR}#%{majorver}#g' %{SOURCE3} > $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
 # 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
+sed -e 's#{MYSQL_MAJOR}#%{majorver}#g' %{SOURCE4} > mysqld.conf
+sed -e 's#{MYSQL_MAJOR}#%{majorver}#g' %{SOURCE5} > $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/clusters.conf
 touch $RPM_BUILD_ROOT/var/log/%{name}/{mysqld,query,slow}.log
 
+mv $RPM_BUILD_ROOT/etc/logrotate.d/{mysqlrouter,%{name}router}
+
 # remove innodb directives from mysqld.conf if mysqld is configured without
 %if %{without innodb}
        cp mysqld.conf mysqld.tmp
@@ -646,62 +607,68 @@ 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
 
 # not useful without -debug build
-%{!?debug:%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_resolve_stack_dump}
-%{!?debug:%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql_resolve_stack_dump.1}
 # generate symbols file, so one can generate backtrace using it
 # mysql_resolve_stack_dump -s %{_datadir}/%{name}/mysqld.sym -n mysqld.stack.
 # http://dev.mysql.com/doc/refman/5.0/en/using-stack-trace.html
 %{?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_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
+%{__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}/errmsg-utf8.txt
+#%{__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%{_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}/%{name}/plugin/test_udf_services.so
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/component_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}
 
 # 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
+
+# fix names for parallel coinstallation
+for f in $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/* ; do
+    fb=$(basename "$f")
+    mv "${f}" "${f}%{majorver}"
+    for m in $RPM_BUILD_ROOT%{_mandir}/man*; do
+        mnr=$(echo -n $m | tail -c 1)
+        if [ -f "${m}/${fb}.${mnr}" ]; then
+            mv "${m}/${fb}.${mnr}" "$m/${fb}%{majorver}.${mnr}"
+        fi
+    done
+done
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %pre
 %groupadd -g 89 mysql
-%useradd -u 89 -d %{_mysqlhome} -s /bin/false -g mysql -c "MySQL Server" mysql
+%useradd -u 89 -d %{_mysqlhome} -s /bin/false -g mysql -c "%{name} Server" mysql
 
 %post
 /sbin/ldconfig
@@ -743,7 +710,7 @@ fi
 
 %post ndb-cpc
 /sbin/chkconfig --add %{name}-ndb-cpc
-%service %{name}-ndb-cpc restart "mysql NDB CPC"
+%service %{name}-ndb-cpc restart "%{name} NDB CPC"
 
 %preun ndb-cpc
 if [ "$1" = "0" ]; then
@@ -751,115 +718,113 @@ if [ "$1" = "0" ]; then
        /sbin/chkconfig --del %{name}-ndb-cpc
 fi
 
-%post   libs -p /sbin/ldconfig
-%postun libs -p /sbin/ldconfig
+%post  libs -p /sbin/ldconfig
+%postun        libs -p /sbin/ldconfig
 
 %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(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}router
 %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}/my_print_defaults
-%attr(755,root,root) %{_sbindir}/myisamchk
-%attr(755,root,root) %{_sbindir}/myisamlog
-%attr(755,root,root) %{_sbindir}/myisampack
-%attr(755,root,root) %{_sbindir}/mysql_plugin
-%attr(755,root,root) %{_sbindir}/mysql_upgrade
-%attr(755,root,root) %{_sbindir}/mysqlcheck
-%attr(755,root,root) %{_sbindir}/mysqld
+%attr(755,root,root) %{_bindir}/ibd2sdi%{majorver}
+%attr(755,root,root) %{_bindir}/mysql_migrate_keyring%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlrouter%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlrouter_keyring%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlrouter_passwd%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlrouter_plugin_info%{majorver}
+%attr(755,root,root) %{_sbindir}/innochecksum%{majorver}
+%attr(755,root,root) %{_sbindir}/my_print_defaults%{majorver}
+%attr(755,root,root) %{_sbindir}/myisamchk%{majorver}
+%attr(755,root,root) %{_sbindir}/myisamlog%{majorver}
+%attr(755,root,root) %{_sbindir}/myisampack%{majorver}
+%attr(755,root,root) %{_sbindir}/mysql_upgrade%{majorver}
+%attr(755,root,root) %{_sbindir}/mysqlcheck%{majorver}
+%attr(755,root,root) %{_sbindir}/mysqld%{majorver}
+
 %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
+#%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_fido_client.so
+#%{?with_ldap:%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_ldap_sasl_client.so}
+#%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_oci_client.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_audit_api_message_emit.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_keyring_file.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_log_filter_dragnet.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_log_sink_json.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_log_sink_syseventlog.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_mysqlbackup.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_mysqlx_global_reset.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_pfs_example.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_pfs_example_component_population.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_query_attributes.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_reference_cache.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_udf_*_func.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_validate_password.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/conflicting_variables.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/ddl_rewriter.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/group_replication.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_mock.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_clone.so
 %attr(755,root,root) %{_libdir}/%{name}/plugin/mysql_no_login.so
-%attr(755,root,root) %{_libdir}/%{name}/plugin/mysqlx.so
 %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_replica.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/semisync_source.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/my_print_defaults.1*
-%{_mandir}/man1/myisamchk.1*
-%{_mandir}/man1/myisamlog.1*
-%{_mandir}/man1/myisampack.1*
-%{_mandir}/man1/mysql_plugin.1*
-%{_mandir}/man1/mysql_upgrade.1*
-%{_mandir}/man1/mysqlcheck.1*
-%{_mandir}/man8/mysqld.8*
+%dir %{_libdir}/%{name}/private
+%{_libdir}/%{name}/private/icudt*l
+%dir %{_libdir}/%{name}router
+%attr(755,root,root) %{_libdir}/%{name}router/connection_pool.so
+%attr(755,root,root) %{_libdir}/%{name}router/destination_status.so
+%attr(755,root,root) %{_libdir}/%{name}router/http_auth_backend.so
+%attr(755,root,root) %{_libdir}/%{name}router/http_auth_realm.so
+%attr(755,root,root) %{_libdir}/%{name}router/http_server.so
+%attr(755,root,root) %{_libdir}/%{name}router/io.so
+%attr(755,root,root) %{_libdir}/%{name}router/keepalive.so
+%attr(755,root,root) %{_libdir}/%{name}router/metadata_cache.so
+%attr(755,root,root) %{_libdir}/%{name}router/rest_api.so
+%attr(755,root,root) %{_libdir}/%{name}router/rest_connection_pool.so
+%attr(755,root,root) %{_libdir}/%{name}router/rest_metadata_cache.so
+%attr(755,root,root) %{_libdir}/%{name}router/rest_router.so
+%attr(755,root,root) %{_libdir}/%{name}router/rest_routing.so
+%attr(755,root,root) %{_libdir}/%{name}router/router_openssl.so
+%attr(755,root,root) %{_libdir}/%{name}router/router_protobuf.so
+%attr(755,root,root) %{_libdir}/%{name}router/routing.so
+%dir %{_libdir}/%{name}router/private
+%attr(755,root,root) %{_libdir}/%{name}router/private/libmysqlharness*.so*
+%attr(755,root,root) %{_libdir}/%{name}router/private/libmysqlrouter*.so*
+%{_mandir}/man1/ibd2sdi%{majorver}.1*
+%{_mandir}/man1/innochecksum%{majorver}.1*
+%{_mandir}/man1/my_print_defaults%{majorver}.1*
+%{_mandir}/man1/myisamchk%{majorver}.1*
+%{_mandir}/man1/myisamlog%{majorver}.1*
+%{_mandir}/man1/myisampack%{majorver}.1*
+%{_mandir}/man1/mysql_upgrade%{majorver}.1*
+%{_mandir}/man1/mysqlcheck%{majorver}.1*
+%{_mandir}/man1/mysqlrouter%{majorver}.1*
+%{_mandir}/man1/mysqlrouter_passwd%{majorver}.1*
+%{_mandir}/man1/mysqlrouter_plugin_info%{majorver}.1*
+%{_mandir}/man8/mysqld%{majorver}.8*
 
 %if %{?debug:1}0
 %attr(755,root,root) %{_bindir}/*resolve_stack_dump
@@ -869,25 +834,21 @@ 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(751,root,root) /var/lib/%{name}
+%attr(750,mysql,mysql) %dir /var/lib/%{name}-files
 %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}/*
 
 # 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_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}/messages_to_clients.txt
+%{_datadir}/%{name}/messages_to_error_log.txt
+%{_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
@@ -921,51 +882,41 @@ fi
 
 %files extras
 %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_secure_installation
-%attr(755,root,root) %{_bindir}/mysql_tzinfo_to_sql
-%attr(755,root,root) %{_bindir}/perror
-%attr(755,root,root) %{_bindir}/replace
-%attr(755,root,root) %{_bindir}/resolveip
-%{_mandir}/man1/myisam_ftdump.1*
-%{_mandir}/man1/mysql_install_db.1*
-%{_mandir}/man1/mysql_secure_installation.1*
-%{_mandir}/man1/mysql_tzinfo_to_sql.1*
-%{_mandir}/man1/perror.1*
-%{_mandir}/man1/replace.1*
-%{_mandir}/man1/resolveip.1*
+%attr(755,root,root) %{_bindir}/myisam_ftdump%{majorver}
+%attr(755,root,root) %{_bindir}/mysql_secure_installation%{majorver}
+%attr(755,root,root) %{_bindir}/mysql_ssl_rsa_setup%{majorver}
+%attr(755,root,root) %{_bindir}/mysql_tzinfo_to_sql%{majorver}
+%attr(755,root,root) %{_bindir}/perror%{majorver}
+%{_mandir}/man1/myisam_ftdump%{majorver}.1*
+%{_mandir}/man1/mysql_ssl_rsa_setup%{majorver}.1*
+%{_mandir}/man1/mysql_secure_installation%{majorver}.1*
+%{_mandir}/man1/mysql_tzinfo_to_sql%{majorver}.1*
+%{_mandir}/man1/perror%{majorver}.1*
 
 %files extras-perl
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/mysqldumpslow
-%{_mandir}/man1/mysqldumpslow.1*
+%attr(755,root,root) %{_bindir}/mysqldumpslow%{majorver}
+%{_mandir}/man1/mysqldumpslow%{majorver}.1*
 
 %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(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}/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/mysqldump.1*
-%{_mandir}/man1/mysqlimport.1*
-%{_mandir}/man1/mysqlpump.1*
-%{_mandir}/man1/mysqlshow.1*
-%{_mandir}/man1/zlib_decompress.1*
+%attr(600,root,root) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/skel/.my.cnf
+%attr(755,root,root) %{_bindir}/mysql%{majorver}
+%attr(755,root,root) %{_bindir}/mysqladmin%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlbinlog%{majorver}
+%attr(755,root,root) %{_bindir}/mysql_config_editor%{majorver}
+%attr(755,root,root) %{_bindir}/mysqldump%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlimport%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlpump%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlshow%{majorver}
+%{_mandir}/man1/mysql%{majorver}.1*
+%{_mandir}/man1/mysqladmin%{majorver}.1*
+%{_mandir}/man1/mysqlbinlog%{majorver}.1*
+%{_mandir}/man1/mysql_config_editor%{majorver}.1*
+%{_mandir}/man1/mysqldump%{majorver}.1*
+%{_mandir}/man1/mysqlimport%{majorver}.1*
+%{_mandir}/man1/mysqlpump%{majorver}.1*
+%{_mandir}/man1/mysqlshow%{majorver}.1*
 
 %files libs
 %defattr(644,root,root,755)
@@ -973,7 +924,7 @@ fi
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/mysql-client.conf
 %{_sysconfdir}/%{name}/my.cnf
 %attr(755,root,root) %{_libdir}/libmysqlclient.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libmysqlclient.so.20
+%attr(755,root,root) %ghost %{_libdir}/libmysqlclient.so.22
 %if %{with ndb}
 %attr(755,root,root) %{_libdir}/libndbclient.so.*.*.*
 %attr(755,root,root) %ghost %{_libdir}/libndbclient.so.3
@@ -981,18 +932,16 @@ fi
 
 %files devel
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/mysql_config
+%attr(755,root,root) %{_bindir}/mysql_config%{majorver}
 %attr(755,root,root) %{_libdir}/libmysqlclient.so
-%{_pkgconfigdir}/mysqlclient.pc
 %if %{with ndb}
 %attr(755,root,root) %{_libdir}/libndbclient.so
 %endif
-# static-only so far
-%{_libdir}/libmysqld.a
+%{_pkgconfigdir}/mysqlclient.pc
 %{_libdir}/libmysqlservices.a
 %{_includedir}/mysql
 %{_aclocaldir}/mysql.m4
-%{_mandir}/man1/mysql_config.1*
+%{_mandir}/man1/mysql_config%{majorver}.1*
 
 %files static
 %defattr(644,root,root,755)
@@ -1001,68 +950,115 @@ fi
 %{_libdir}/libndbclient.a
 %endif
 
+# rename to test or split?
 %files bench
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/mysqlslap
-%attr(755,root,root) %{_bindir}/mysqltest
-%{_mandir}/man1/mysqlslap.1*
+%attr(755,root,root) %{_bindir}/comp_err%{majorver}
+%attr(755,root,root) %{_bindir}/mysql_keyring_encryption_test%{majorver}
+%attr(755,root,root) %{_bindir}/mysqlslap%{majorver}
+%attr(755,root,root) %{_bindir}/mysqltest%{majorver}
+%attr(755,root,root) %{_bindir}/mysqltest_safe_process%{majorver}
+%attr(755,root,root) %{_bindir}/zlib_decompress%{majorver}
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_example_component1.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_example_component2.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_example_component3.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_log_sink_test.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_audit_api_message.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_backup_lock_service.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_component_deinit.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_host_application_signal.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_mysql_current_thread_reader.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_mysql_runtime_error.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_mysql_system_variable_set.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_pfs_notification.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_pfs_resource_group.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_sensitive_system_variables.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_status_var_service.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_status_var_service_int.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_status_var_service_reg_only.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_status_var_service_str.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_status_var_service_unreg_only.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_string_service.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_string_service_charset.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_string_service_long.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_sys_var_service.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_sys_var_service_int.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_sys_var_service_same.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_sys_var_service_str.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_system_variable_source.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_table_access.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/component_test_udf_registration.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/pfs_example_plugin_employee.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/test_services_host_application_signal.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/test_services_plugin_registry.so
+%attr(755,root,root) %{_libdir}/%{name}/plugin/udf_example.so
+#%dir %{_datadir}/sql-bench
+#%{_datadir}/sql-bench/[CDRl]*
+#%attr(755,root,root) %{_datadir}/sql-bench/[bcgirst]*
+%{_mandir}/man1/lz4_decompress.1*
+%{_mandir}/man1/mysqlslap%{majorver}.1*
+%{_mandir}/man1/zlib_decompress%{majorver}.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(755,root,root) %{_sbindir}/ndbd%{majorver}
 %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
-%{_mandir}/man1/ndbd_redo_log_reader.1*
-%{_mandir}/man8/ndbd.8*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb
+%{_mandir}/man1/ndbd_redo_log_reader%{majorver}.1*
+%{_mandir}/man8/ndbd%{majorver}.8*
 
 %files ndb-client
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/ndb_config
-%attr(755,root,root) %{_bindir}/ndb_delete_all
-%attr(755,root,root) %{_bindir}/ndb_desc
-%attr(755,root,root) %{_bindir}/ndb_drop_index
-%attr(755,root,root) %{_bindir}/ndb_drop_table
-%attr(755,root,root) %{_bindir}/ndb_error_reporter
-%attr(755,root,root) %{_bindir}/ndb_mgm
-%attr(755,root,root) %{_bindir}/ndb_print_backup_file
-%attr(755,root,root) %{_bindir}/ndb_print_schema_file
-%attr(755,root,root) %{_bindir}/ndb_print_sys_file
-%attr(755,root,root) %{_bindir}/ndb_restore
-%attr(755,root,root) %{_bindir}/ndb_select_all
-%attr(755,root,root) %{_bindir}/ndb_select_count
-%attr(755,root,root) %{_bindir}/ndb_show_tables
-%attr(755,root,root) %{_bindir}/ndb_size.pl
-%attr(755,root,root) %{_bindir}/ndb_test_platform
-%attr(755,root,root) %{_bindir}/ndb_waiter
-%{_mandir}/man1/ndb_config.1*
-%{_mandir}/man1/ndb_delete_all.1*
-%{_mandir}/man1/ndb_desc.1*
-%{_mandir}/man1/ndb_drop_index.1*
-%{_mandir}/man1/ndb_drop_table.1*
-%{_mandir}/man1/ndb_error_reporter.1*
-%{_mandir}/man1/ndb_mgm.1*
-%{_mandir}/man1/ndb_print_backup_file.1*
-%{_mandir}/man1/ndb_print_schema_file.1*
-%{_mandir}/man1/ndb_print_sys_file.1*
-%{_mandir}/man1/ndb_restore.1*
-%{_mandir}/man1/ndb_select_all.1*
-%{_mandir}/man1/ndb_select_count.1*
-%{_mandir}/man1/ndb_show_tables.1*
-%{_mandir}/man1/ndb_size.pl.1*
-%{_mandir}/man1/ndb_waiter.1*
+%attr(755,root,root) %{_bindir}/ndb_config%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_delete_all%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_desc%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_drop_index%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_drop_table%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_error_reporter%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_mgm%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_print_backup_file%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_print_schema_file%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_print_sys_file%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_restore%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_select_all%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_select_count%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_show_tables%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_size.pl%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_test_platform%{majorver}
+%attr(755,root,root) %{_bindir}/ndb_waiter%{majorver}
+%{_mandir}/man1/ndb_config%{majorver}.1*
+%{_mandir}/man1/ndb_delete_all%{majorver}.1*
+%{_mandir}/man1/ndb_desc%{majorver}.1*
+%{_mandir}/man1/ndb_drop_index%{majorver}.1*
+%{_mandir}/man1/ndb_drop_table%{majorver}.1*
+%{_mandir}/man1/ndb_error_reporter%{majorver}.1*
+%{_mandir}/man1/ndb_mgm%{majorver}.1*
+%{_mandir}/man1/ndb_print_backup_file%{majorver}.1*
+%{_mandir}/man1/ndb_print_schema_file%{majorver}.1*
+%{_mandir}/man1/ndb_print_sys_file%{majorver}.1*
+%{_mandir}/man1/ndb_restore%{majorver}.1*
+%{_mandir}/man1/ndb_select_all%{majorver}.1*
+%{_mandir}/man1/ndb_select_count%{majorver}.1*
+%{_mandir}/man1/ndb_show_tables%{majorver}.1*
+%{_mandir}/man1/ndb_size.pl%{majorver}.1*
+%{_mandir}/man1/ndb_waiter%{majorver}.1*
 
 %files ndb-mgm
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_sbindir}/ndb_mgmd
+%attr(755,root,root) %{_sbindir}/ndb_mgmd%{majorver}
 %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
-%{_mandir}/man8/ndb_mgmd.8*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-mgm
+%{_mandir}/man8/ndb_mgmd%{majorver}.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
-%{_mandir}/man1/ndb_cpcd.1*
+%attr(755,root,root) %{_sbindir}/ndb_cpcd%{majorver}
+%attr(754,root,root) /etc/rc.d/init.d/%{name}-ndb-cpc
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-cpc
+%{_mandir}/man1/ndb_cpcd%{majorver}.1*
 %endif
index c9da04de6779faa41945bc75a57661dedc86d4ea..09808af2c7c9bc1441e6f344ef6644fba0b38f52 100644 (file)
@@ -13,33 +13,11 @@ port        = 3306
 user        = mysql
 
 # ssl options
-#ssl-ca = /etc/ssl/certs/mysql/ca-cert.pem
-#ssl-cert = /etc/ssl/certs/mysql/server-cert.pem
-#ssl-key = /etc/ssl/certs/mysql/server-key.pem
+#ssl-ca = /etc/ssl/certs/mysql{MYSQL_MAJOR}/ca-cert.pem
+#ssl-cert = /etc/ssl/certs/mysql{MYSQL_MAJOR}/server-cert.pem
+#ssl-key = /etc/ssl/certs/mysql{MYSQL_MAJOR}/server-key.pem
 #ssl-cipher = DHE-RSA-AES256-SHA
 
-#character-set-server=latin2
-#collation-server=latin2_general_ci
-#skip-character-set-client-handshake
-
-# This variable controls the password hashing method used by the PASSWORD()
-# function. It also influences password hashing performed by CREATE USER and
-# GRANT statements that specify a password using an IDENTIFIED BY clause.
-# http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_old_passwords
-# Value | Password Hashing Method  | Associated Authentication Plugin
-#   0   | MySQL 4.1 native hashing | mysql_native_password
-#   1   | Pre-4.1 ("old") hashing  | mysql_old_password
-#   2   | SHA-256 hashing          | sha256_password
-# If you set old_passwords=2, follow the instructions for using the sha256_password plugin at
-# http://dev.mysql.com/doc/refman/5.6/en/sha256-authentication-plugin.html
-#old-passwords=0
-
-# Don't use system locking
-skip-external-locking
-
-# Disabling symbolic-links is recommended to prevent assorted security risks
-symbolic-links=0
-
 # 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,64 +32,6 @@ 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
-#default-storage-engine=MyISAM
-
-# Replication Master Server (default)
-# binary logging is required for replication
-#log-bin=mysql-bin
-
-# max size of master binlog files
-#max_binlog_size=256M
-
-# If non-zero, binary logs will be purged after expire_logs_days days; possible
-# purges happen at startup and at binary log rotation.
-#expire-logs-days=30
-
-# Normally, a slave does not log to its own binary log any updates that are
-# received from a master server. This option tells the slave to log the updates
-# performed by its SQL thread to its own binary log. For this option to have
-# any effect, the slave must also be started with the --log-bin option to
-# enable binary logging. --log-slave-updates is used when you want to chain
-# replication servers.
-#log-slave-updates
-
-# required unique id between 1 and 2^32 - 1
-# defaults to 1 if master-host is not set but will not function as a master if omitted
-#server-id=2
-
-# To set up N master servers, set the variables like this:
-# Set auto_increment_increment to N on each master.
-# Set each of the N masters to have a different auto_increment_offset, using the values 1, 2, ..., N
-#auto-increment-offset=1
-#auto-increment-increment=2
-
-# databases to be included in binlog
-#binlog-do-db=db1
-# or excluded
-#binlog-ignore-db=mysql
-#binlog-ignore-db=test
-
-# slave setup
-#relay-log=slave-relay-bin
-#report-host=db-slave.example.org
-
-# skip startup of slave
-#skip-slave-start
-
-# master does not ignore them, but we do
-#replicate-ignore-db=mysql
-#replicate-ignore-db=test
-#replicate-ignore-table=db1.tbl1
-#replicate-ignore-table=db2.tbl2
-
-#replicate-rewrite-db=delfi->delfi_ro
-
-# replication local log
-#max_relay_log_size=256M
-
 # https://dev.mysql.com/doc/refman/5.6/en/log-destinations.html
 # global option where logs be written
 # affects slow-query-log, general-log direcives
@@ -123,19 +43,19 @@ skip-networking
 log-output = FILE
 
 # mysqld error log (stderr)
-log-error = /var/log/mysql/mysqld.log
-log-warnings = 2
+log-error = /var/log/mysql{MYSQL_MAJOR}/mysqld.log
+log-error-verbosity = 2
 
 # Log slow queries
 slow-query-log
-slow-query-log-file = /var/log/mysql/slow.log
+slow-query-log-file = /var/log/mysql{MYSQL_MAJOR}/slow.log
 
 # Log connections and queries. It slows down MySQL so it's disabled by default
 #general-log
-#general-log-file = /var/log/mysql/query.log
+#general-log-file = /var/log/mysql{MYSQL_MAJOR}/query.log
 
 # Log all updates.
-#log-update = /var/log/mysql/update
+#log-update = /var/log/mysql{MYSQL_MAJOR}/update
 # Log some extra information to update log
 #log-long-format
 
@@ -146,96 +66,6 @@ slow-query-log-file = /var/log/mysql/slow.log
 # colon (:), in this case they are used in a round-robin fashion.
 #tmpdir      = /var/tmp
 
-#
-# Internal server variables
-#
-
-explicit_defaults_for_timestamp = true
-#back_log=5
-#connect_timeout=5
-#delayed_insert_timeout=300
-#delayed_insert_limit=100
-#flush_time=0
-#join_buffer_size=131072
-#key_buffer_size=8M
-#read_rnd_buffer_size=256K
-#read_buffer_size=132K
-#long_query_time=10
-#max_allowed_packet=1M
-#max_connections=100
-#max_user_connections=0
-#max_connect_errors=10
-#max_delayed_threads=20
-#delayed_queue_size=1000
-#max_join_size=4294967295
-#max_sort_length=1024
-#max_write_lock_count=4294967295
-#net_buffer_length=16384
-#record_buffer=131072
-#sort_buffer_size=2M
-#table_cache=64
-#tmp_table_size=1M
-#max_heap_table_size=32M
-#thread_cache_size=16
-#thread_stack=65536
-# http://www.mysqlperformanceblog.com/2012/06/04/thread_concurrency-doesnt-do-what-you-expect/
-# thread_concurrency is deprecated, removed in 5.6.1 and works on old Solaris versions < 9
-#wait_timeout=28800
-#query_cache_size=8M
-#query_cache_limit=1M
-
-# 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
-#
-
-# Don't flush key buffers between writes for any MyISAM
-# set this if you have dedicated slave server where writes aren't important
-#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
-myisam-recover-options
-#
-#myisam_sort_buffer_size=4M
-
-
-# To completely disable InnoDB, use this option
-# this makes all innodb options being unknown options (including skip-innodb)
-# @deprecated
-#ignore-builtin-innodb
-
-#
-# InnoDB tables options (see MySQL manual)
-#
-#skip-innodb
-
-# http://stackoverflow.com/questions/2646373/mysql-data-file-wont-shrink
-# http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
-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
-#innodb_log_archive=0
-#innodb_buffer_pool_size=80M
-#innodb_additional_mem_pool_size=10M
-#innodb_file_io_threads=4
-#innodb_lock_wait_timeout=50
-
 # used for logs rotation or status check for replications
 [client]
 user        = mysql_sysadmin
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);