From 80b79262cb4d737c86097db72b8b68322f233d81 Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Sun, 17 Dec 2023 14:42:48 +0100 Subject: [PATCH] - Percona 5.7 is no longer available, MySQL 5.7 from PLD --- build.patch | 42 -- drop-sysctl_h.patch | 184 --------- mysql-5.7-sphinx.patch | 357 ++++------------- mysql-chain-certs.patch | 20 +- mysql-cmake.patch | 23 +- mysql-dubious-exports.patch | 55 --- mysql-opt.patch | 54 +-- mysql-protobuf.patch | 7 +- mysql-readline.patch | 34 ++ mysql-sphinx.patch | 15 +- mysql-versioning.patch | 18 - mysql.init | 51 ++- mysql.spec | 750 +++++++++++++++++++---------------- mysqld.conf | 23 +- mysqldumpslow-clusters.patch | 46 +++ ssl-errors.patch | 45 +++ 16 files changed, 716 insertions(+), 1008 deletions(-) delete mode 100644 build.patch delete mode 100644 drop-sysctl_h.patch delete mode 100644 mysql-dubious-exports.patch create mode 100644 mysql-readline.patch delete mode 100644 mysql-versioning.patch create mode 100644 mysqldumpslow-clusters.patch create mode 100644 ssl-errors.patch diff --git a/build.patch b/build.patch deleted file mode 100644 index cbd9439..0000000 --- a/build.patch +++ /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 index ea8d413..0000000 --- a/drop-sysctl_h.patch +++ /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 - #include - #include --#ifdef EVENT__HAVE_SYS_SYSCTL_H --#include --#endif - #endif - #include - #include -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 header file. */ - #cmakedefine EVENT__HAVE_SYS_STAT_H 1 - --/* Define to 1 if you have the header file. */ --#cmakedefine EVENT__HAVE_SYS_SYSCTL_H 1 -- - /* Define to 1 if you have the 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 --#include - #include - #include - #include -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 - #endif --#if defined(HAVE_SYS_SYSCTL_H) && !defined(_SC_PHYS_PAGES) --# include --#endif - #if defined(HAVE_PTHREAD_NP_H) - # include - #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 header file. */ - #undef HAVE_SYS_STAT_H - --/* Define to 1 if you have the header file. */ --#undef HAVE_SYS_SYSCTL_H -- - /* Define to 1 if you have the 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 - #endif --#include - int - main(void) - { -@@ -19723,7 +19722,6 @@ - #ifdef HAVE_SYS_PARAM_H - # include - #endif --#include - 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 -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 - #endif --#include - 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 - #endif --#include - 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 - # endif --# ifdef HAVE_SYS_SYSCTL_H --# include --# 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 - # endif --# ifdef HAVE_SYS_SYSCTL_H --# include --# endif - - #elif defined(HAVE_PHYSMEM_SYSINFO) - # include diff --git a/mysql-5.7-sphinx.patch b/mysql-5.7-sphinx.patch index 2f558da..a47ed9d 100644 --- a/mysql-5.7-sphinx.patch +++ b/mysql-5.7-sphinx.patch @@ -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 +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 -+ #if !defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID>=50709 ++ #if MYSQL_VERSION_ID>=50709 + #include + #else + #include @@ -40,11 +51,11 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/ha_sphinx.cc percona-serve #include #include -@@ -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 **, const char * ); - template int CSphSEQuery::ParseArray ( 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 + #include -@@ -2390,7 +2465,10 @@ +-#ifndef __WIN__ ++#include ++ ++#ifndef _WIN32 ++#if MYSQL_VERSION_ID>=50709 ++#include ++#endif + #include + #include + #endif - unsigned int uTimeout = 1; - mysql_options ( pConn, MYSQL_OPT_CONNECT_TIMEOUT, (const char*)&uTimeout ); +-#include - -+ #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 ++#endif ++#endif ++ + #include + #include -@@ -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 -+#endif - #include - #include - +@@ -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 index 36c1cd3..7f18fe2 100644 --- a/mysql-chain-certs.patch +++ b/mysql-chain-certs.patch @@ -1,7 +1,19 @@ -diff -ur percona-server-5.7.35-38.orig/vio/viosslfactories.c percona-server-5.7.35-38/vio/viosslfactories.c ---- percona-server-5.7.35-38.orig/vio/viosslfactories.c 2021-11-24 19:48:22.417746172 +0100 -+++ percona-server-5.7.35-38/vio/viosslfactories.c 2021-11-24 19:48:50.473812651 +0100 -@@ -200,7 +200,7 @@ +Fix things so that chains of certificates work in the server and client +certificate files. + +This only really works for OpenSSL-based builds, as yassl is unable to read +multiple certificates from a file. The patch below to yassl/src/ssl.cpp +doesn't fix that, but just arranges that the viosslfactories.c patch won't +have any ill effects in a yassl build. Since we don't use yassl in Red Hat/ +Fedora builds, I'm not feeling motivated to try to fix yassl for this. + +See RH bug #598656. Filed upstream at http://bugs.mysql.com/bug.php?id=54158 + + +diff -Naur mysql-5.1.47.orig/vio/viosslfactories.c mysql-5.1.47/vio/viosslfactories.c +--- mysql-5.1.47.orig/vio/viosslfactories.c 2010-05-06 11:28:07.000000000 -0400 ++++ mysql-5.1.47/vio/viosslfactories.c 2010-05-26 23:23:46.000000000 -0400 +@@ -106,7 +106,7 @@ key_file= cert_file; if (cert_file && diff --git a/mysql-cmake.patch b/mysql-cmake.patch index b26722a..ac38081 100644 --- a/mysql-cmake.patch +++ b/mysql-cmake.patch @@ -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 @@ -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 @@ -56,5 +56,14 @@ diff -ur percona-server-5.7.35-38.orig/cmake/readline.cmake percona-server-5.7.3 + rl_completion_matches(0,0); + return res ? 0 : 1; }" - XLINE_HAVE_COMPLETION_INT) + EDITLINE_HAVE_COMPLETION_INT) +@@ -168,7 +167,7 @@ MACRO (FIND_SYSTEM_EDITLINE) + typedef char* MYFunction(const char*, int); + MYFunction* myf= rl_completion_entry_function; + char *res= (myf)(NULL, 0); +- completion_matches(0,0); ++ rl_completion_matches(0,0); + return res != NULL; + }" + EDITLINE_HAVE_COMPLETION_CHAR) diff --git a/mysql-dubious-exports.patch b/mysql-dubious-exports.patch deleted file mode 100644 index a928927..0000000 --- a/mysql-dubious-exports.patch +++ /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, diff --git a/mysql-opt.patch b/mysql-opt.patch index 766dda8..a6b9ec7 100644 --- a/mysql-opt.patch +++ b/mysql-opt.patch @@ -1,45 +1,11 @@ -diff -ur percona-server-5.7.35-38.orig/cmake/build_configurations/compiler_options.cmake percona-server-5.7.35-38/cmake/build_configurations/compiler_options.cmake ---- percona-server-5.7.35-38.orig/cmake/build_configurations/compiler_options.cmake 2021-11-24 18:56:51.570445147 +0100 -+++ percona-server-5.7.35-38/cmake/build_configurations/compiler_options.cmake 2021-11-24 19:35:58.389983145 +0100 -@@ -32,17 +32,17 @@ - SET(64BIT 1) - ENDIF() - --SET(CMAKE_CXX_STANDARD 98) -+SET(CMAKE_CXX_STANDARD 11) - - # Compiler options - IF(UNIX) -- MY_CHECK_CXX_COMPILER_FLAG("-std=gnu++03" GNU03_SUPPORTED) -+ MY_CHECK_CXX_COMPILER_FLAG("-std=gnu++11" GNU11_SUPPORTED) - -- IF(GNU03_SUPPORTED) -+ IF(GNU11_SUPPORTED) - IF(CMAKE_VERSION VERSION_LESS 3.1.0) -- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++03") -+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") - ELSE() -- SET(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -std=gnu++03) -+ SET(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -std=gnu++11) +--- mysql-5.7.36/cmake/build_configurations/compiler_options.cmake~ 2021-09-07 07:26:47.000000000 +0200 ++++ mysql-5.7.36/cmake/build_configurations/compiler_options.cmake 2021-11-29 07:46:49.013266334 +0100 +@@ -73,7 +73,7 @@ IF(UNIX) + EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion + OUTPUT_VARIABLE GXX_VERSION) + IF(GXX_VERSION VERSION_EQUAL 6.0 OR GXX_VERSION VERSION_GREATER 6.0) +- STRING_PREPEND(COMMON_CXX_FLAGS "-std=gnu++03 ") ++ STRING_PREPEND(COMMON_CXX_FLAGS "-std=gnu++11 ") ENDIF() - ENDIF() - -@@ -166,13 +166,13 @@ - ENDIF() - - SET(COMMON_C_FLAGS "-g ${SUNPRO_FLAGS}") -- SET(COMMON_CXX_FLAGS "-g0 ${SUNPRO_FLAGS} -std=c++03") -+ SET(COMMON_CXX_FLAGS "-g0 ${SUNPRO_FLAGS} -std=c++11") - # For SunPro, append our own flags rather than prepending below. - # We need -g0 and the misc -x flags above to reduce the size of binaries. -- STRING_APPEND(CMAKE_C_FLAGS_DEBUG " ${COMMON_C_FLAGS}") -- STRING_APPEND(CMAKE_CXX_FLAGS_DEBUG " ${COMMON_CXX_FLAGS}") -- STRING_APPEND(CMAKE_C_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_C_FLAGS}") -- STRING_APPEND(CMAKE_CXX_FLAGS_RELWITHDEBINFO " -xO3 ${COMMON_CXX_FLAGS}") -+ STRING_APPEND(CMAKE_C_FLAGS_DEBUG " ${CMAKE_C_FLAGS_DEBUG} ${COMMON_C_FLAGS}") -+ STRING_APPEND(CMAKE_CXX_FLAGS_DEBUG " ${CMAKE_CXX_FLAGS_DEBUG} ${COMMON_CXX_FLAGS}") -+ STRING_APPEND(CMAKE_C_FLAGS_RELWITHDEBINFO " -O3 -D_FORTIFY_SOURCE=2 ${CMAKE_C_FLAGS_RELWITHDEBINFO} ${COMMON_C_FLAGS}") -+ STRING_APPEND(CMAKE_CXX_FLAGS_RELWITHDEBINFO " -O3 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${COMMON_CXX_FLAGS}") - STRING_APPEND(CMAKE_C_FLAGS_RELEASE " -xO3 ${COMMON_C_FLAGS}") - STRING_APPEND(CMAKE_CXX_FLAGS_RELEASE " -xO3 ${COMMON_CXX_FLAGS}") - STRING_APPEND(CMAKE_C_FLAGS_MINSIZEREL " -xO3 ${COMMON_C_FLAGS}") + # Disable inline optimizations for valgrind testing to avoid false positives + IF(WITH_VALGRIND) diff --git a/mysql-protobuf.patch b/mysql-protobuf.patch index 6e85914..cce64d4 100644 --- a/mysql-protobuf.patch +++ b/mysql-protobuf.patch @@ -1,7 +1,6 @@ -diff -ur percona-server-5.7.35-38.orig/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h percona-server-5.7.35-38/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h ---- percona-server-5.7.35-38.orig/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h 2021-11-24 19:41:59.748839411 +0100 -+++ percona-server-5.7.35-38/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h 2021-11-24 19:43:50.561101985 +0100 -@@ -36,7 +36,9 @@ +--- mysql-5.7.27/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h.orig 2019-06-10 16:43:20.000000000 +0200 ++++ mysql-5.7.27/rapid/plugin/x/ngs/include/ngs_common/protocol_protobuf.h 2019-07-29 19:19:29.421629353 +0200 +@@ -29,7 +29,9 @@ #include #include #include diff --git a/mysql-readline.patch b/mysql-readline.patch new file mode 100644 index 0000000..ce82211 --- /dev/null +++ b/mysql-readline.patch @@ -0,0 +1,34 @@ +diff -ruNp mysql-5.7.21.orig/client/mysql.cc mysql-5.7.21/client/mysql.cc +--- mysql-5.7.21.orig/client/mysql.cc 2017-12-28 04:46:26.000000000 +0100 ++++ mysql-5.7.21/client/mysql.cc 2018-03-31 21:37:27.879569060 +0200 +@@ -67,6 +67,7 @@ + #else + #include + #include ++#include + #define HAVE_READLINE + #define USE_POPEN + #endif +@@ -1126,22 +1127,6 @@ static const char *embedded_server_group + { "server", "embedded", "mysql_SERVER", 0 }; + + #ifdef HAVE_READLINE +-/* +- HIST_ENTRY is defined for libedit, but not for the real readline +- Need to redefine it for real readline to find it +-*/ +-#if !defined(HAVE_HIST_ENTRY) +-typedef struct _hist_entry { +- const char *line; +- const char *data; +-} HIST_ENTRY; +-#endif +- +-extern "C" int add_history(const char *command); /* From readline directory */ +-extern "C" int read_history(const char *command); +-extern "C" int write_history(const char *command); +-extern "C" HIST_ENTRY *history_get(int num); +-extern "C" int history_length; + static int not_in_history(const char *line); + static void initialize_readline (char *name); + #endif /* HAVE_READLINE */ diff --git a/mysql-sphinx.patch b/mysql-sphinx.patch index 26517e4..dac55bd 100644 --- a/mysql-sphinx.patch +++ b/mysql-sphinx.patch @@ -1,7 +1,6 @@ -diff -ur percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am percona-server-5.7.35-38/storage/sphinx/Makefile.am ---- percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am 2016-07-19 12:42:18.000000000 +0200 -+++ percona-server-5.7.35-38/storage/sphinx/Makefile.am 2021-11-24 19:47:02.552556917 +0100 -@@ -31,19 +31,19 @@ +--- mysql-5.1.49/storage/sphinx/Makefile.am~ 2009-02-13 23:26:46.000000000 +0200 ++++ mysql-5.1.49/storage/sphinx/Makefile.am 2010-07-24 16:35:57.568716704 +0300 +@@ -31,7 +31,7 @@ LDADD = DEFS= @DEFS@ \ @@ -10,6 +9,9 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am percona-server noinst_HEADERS = ha_sphinx.h +--- mysql-5.1.49/storage/sphinx/Makefile.am~ 2010-07-24 16:37:48.000000000 +0300 ++++ mysql-5.1.49/storage/sphinx/Makefile.am 2010-07-24 17:00:56.161565823 +0300 +@@ -38,7 +38,7 @@ EXTRA_LTLIBRARIES = ha_sphinx.la pkgplugin_LTLIBRARIES = @plugin_sphinx_shared_target@ sphinx.la @@ -18,6 +20,11 @@ diff -ur percona-server-5.7.35-38.orig/storage/sphinx/Makefile.am percona-server ha_sphinx_la_CXXFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_sphinx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN ha_sphinx_la_SOURCES = ha_sphinx.cc +--- mysql-5.1.49/storage/sphinx/Makefile.am~ 2010-07-24 19:14:55.000000000 +0300 ++++ mysql-5.1.49/storage/sphinx/Makefile.am 2010-07-25 03:47:56.660771099 +0300 +@@ -43,7 +43,7 @@ + ha_sphinx_la_CFLAGS = $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN + ha_sphinx_la_SOURCES = ha_sphinx.cc -sphinx_la_LDFLAGS = -module +sphinx_la_LDFLAGS = -module -avoid-version -rpath $(MYSQLLIBdir) diff --git a/mysql-versioning.patch b/mysql-versioning.patch deleted file mode 100644 index 325bd46..0000000 --- a/mysql-versioning.patch +++ /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; - }; diff --git a/mysql.init b/mysql.init index 9f0867e..c55f9ef 100755 --- a/mysql.init +++ b/mysql.init @@ -294,7 +294,7 @@ mysqlstart() { --datadir=$MYSQL_DATA_DIR \ --pid-file=$MYSQL_PIDFILE \ ${MYSQL_LOG_ERROR:+--log-error="$MYSQL_LOG_ERROR"} \ - $MYSQL_OPTIONS 2>/dev/null & + $MYSQL_OPTIONS & pid=$! sleep 0.1 @@ -445,7 +445,7 @@ mysqlinit() { if [ -f "$clusterdir/mysqld.conf" ]; then mysqlgetconfig "$clusterdir" else - MYSQL_USER="mysql" + MYSQL_USER="root" MYSQL_CLUSTER_DIR="$clusterdir" MYSQL_DATA_DIR="$clusterdir/mysqldb/db" MYSQL_PIDFILE="$clusterdir/mysqldb/mysql.pid" @@ -455,7 +455,7 @@ mysqlinit() { MYSQL_CONFIG="$MYSQL_CLUSTER_DIR/mysqld.conf" fi - show "Initializing MySQL cluster %s" "$clusterdir"; started + show "Initializing cluster %s" "$clusterdir"; started # Check if not exist init database if [ -d "$MYSQL_DATA_DIR/mysql" ]; then @@ -465,7 +465,7 @@ mysqlinit() { exit 6 fi - show "Installing MySQL system tables for $MYSQL_DATA_DIR" + show "Initializing MySQL database for $MYSQL_DATA_DIR" busy TMP=/tmp TMPDIR=/tmp @@ -489,13 +489,14 @@ mysqlinit() { ok=0 /usr/sbin/mysqld \ --defaults-file=$MYSQL_CLUSTER_DIR/mysqld.conf \ - --initialize-insecure \ + --initialize \ --skip-grant-tables \ --datadir=$MYSQL_DATA_DIR \ --user=$MYSQL_USER \ --slave-load-tmpdir=$MYSQL_DATA_DIR \ --tmpdir=$MYSQL_DATA_DIR \ - --log-error=$MYSQL_ERRLOG && ok=1 + --log-error=$MYSQL_ERRLOG \ + && ok=1 [ -f $MYSQL_DATA_DIR/mysql/user.frm ] || ok=0 if [ "$ok" = 1 ]; then @@ -503,17 +504,33 @@ mysqlinit() { cat << END_OF_MSG PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL USERS! -This is done, after starting database, in the order shown below, -with: -Add 'mysql_sysadmin' user (RELOAD and SHUTDOWN privileges): -echo "CREATE USER 'mysql_sysadmin'@'localhost' IDENTIFIED BY 'SOME_RANDOM_PASSWORD'; FLUSH PRIVILEGES;" | mysql --ssl-mode=DISABLED -u root -S $MYSQL_SOCKET -echo "GRANT RELOAD, SHUTDOWN ON *.* TO 'mysql_sysadmin'@'localhost'; FLUSH PRIVILEGES;" | mysql --ssl-mode=DISABLED -u root -S $MYSQL_SOCKET +Start database: +$ service mysql start -Set password for root user (ALL privileges, DB admin): -echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; FLUSH PRIVILEGES;" | mysql --ssl-mode=DISABLED -u root -S $MYSQL_SOCKET +and set passwords: -NOTE: mysql_sysadmin password should be placed to $MYSQL_CONFIG in +For 'root' user (ALL privileges, DB admin), paste command with new password: +ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; +FLUSH PRIVILEGES; + +For 'mysql_sysadmin' (RELOAD and SHUTDOWN privileges): +CREATE USER 'mysql_sysadmin'@'localhost' IDENTIFIED BY 'sysnewpassword' PASSWORD EXPIRE NEVER; +GRANT RELOAD, SHUTDOWN ON *.* TO 'mysql_sysadmin'@'localhost'; +FLUSH PRIVILEGES; + + +Both into command: +$ mysql -u root -p --ssl-mode=disabled -S $MYSQL_SOCKET + +NOTE 1: +CURRENT TEMPORARY ROOT PASSWORD CAN BE FOUND IN LOG +(grep for "A temporary password is generated" string): +$MYSQL_ERRLOG + + +NOTE 2: +mysql_sysadmin password should be placed to $MYSQL_CONFIG in mysqladmin section. See the manual for more instructions. (This user is used at logs rotation and server shutdown) @@ -523,11 +540,11 @@ END_OF_MSG cat << END_OF_MSG ERROR: ERROR: -ERROR: Initialization of server FAILED! +ERROR: Installation FAILED! ERROR: ERROR: -Examine the logs in /var/log/mysql for more information. You can +Examine the logs in $MYSQL_ERRLOG for more information. You can also try to start the mysqld daemon with: /usr/sbin/mysqld --skip-grant & @@ -541,7 +558,7 @@ mysql> show tables Try 'mysqld --help' if you have problems with paths. Setting on logging in $MYSQL_DATA_DIR/mysqld.conf gives you a log in /var/log/mysql/query.log that may be helpful. The latest information about MySQL is available on the -web at https://www.percona.com/software/mysql-database/mysql. +web at http://www.mysql.com/. Please check TLD Linux ftp site for newer versions of this package. diff --git a/mysql.spec b/mysql.spec index f1b667e..2c449b3 100644 --- a/mysql.spec +++ b/mysql.spec @@ -9,19 +9,8 @@ # - segfaults on select from non-mysql user (caused by builder environment): # https://bugs.launchpad.net/pld-linux/+bug/381904 # (profiling disabled temporaily to workaround this) -# - unpackaged files: -# /usr/COPYING.AGPLv3 -# /usr/COPYING.GPLv2 -# /usr/PATENTS -# /usr/README.md -# /usr/bin/mysqlxtest -# /usr/include/backup.h -# NOTE: -# - mysql 'root' user will be 'root' not 'mysql' with 5.7 package -# this is to make pld consistent what the rest of the world uses. # # Conditional build: -%bcond_with autodeps # BR packages needed only for resolving deps %bcond_without innodb # InnoDB storage engine support %bcond_without big_tables # Support tables with more than 4G rows even on 32 bit platforms %bcond_without federated # Federated storage engine support @@ -30,22 +19,13 @@ %bcond_with systemtap # systemtap/dtrace probes %bcond_without tcpd # libwrap (tcp_wrappers) support %bcond_with sphinx # Sphinx storage engine support -%bcond_with tokudb # TokuDB -%bcond_with rocksdb # RocksDB # mysql needs boost 1.59.0 and doesn't support newer/older boost versions -%bcond_with system_boost # Use system boost package -%bcond_with tests # FIXME: don't run correctly +%bcond_with system_boost +%bcond_with system_protobuf # mysql doesn't build with newer (3.12+) protobuf +%bcond_with tests # run test suite %bcond_with ndb # NDB is now a separate product, this here is broken, so disable it -%bcond_with coredumper # coredumper support +%bcond_without ldap # LDAP auth support -# tokudb is only supported on x86_64 -%ifnarch %{x8664} -%undefine with_rocksdb -%undefine with_tokudb -%endif - -%define rel 1 -%define percona_rel 46 Summary: MySQL: a very fast and reliable SQL database engine Summary(de.UTF-8): MySQL: ist eine SQL-Datenbank Summary(fr.UTF-8): MySQL: un serveur SQL rapide et fiable @@ -55,22 +35,23 @@ Summary(ru.UTF-8): MySQL - быстрый SQL-сервер Summary(uk.UTF-8): MySQL - швидкий SQL-сервер Summary(zh_CN.UTF-8): MySQL数据库服务器 Name: mysql -Version: 5.7.42 -Release: %{percona_rel}.%{rel} -License: GPL + MySQL FLOSS Exception +Version: 5.7.43 +Release: 1 +License: GPL v2 + MySQL FOSS License Exception Group: Applications/Databases -Source0: https://www.percona.com/downloads/Percona-Server-5.7/LATEST/source/tarball/percona-server-%{version}-%{percona_rel}.tar.gz -# Source0-md5: 6f937a7fe774edad0213a75e34df19d5 +#Source0Download: https://dev.mysql.com/downloads/mysql/5.7.html#downloads +Source0: http://cdn.mysql.com/Downloads/MySQL-5.7/%{name}-%{version}.tar.gz +# Source0-md5: a06d002cebf649082f0f3aaad4b6b797 Source100: http://www.sphinxsearch.com/files/sphinx-2.2.11-release.tar.gz # Source100-md5: 5cac34f3d78a9d612ca4301abfcbd666 %if %{without system_boost} -Source101: http://downloads.sourceforge.net/boost/boost_1_59_0.tar.bz2 +Source101: http://downloads.sourceforge.net/boost/boost_1_59_0.tar.bz2 # Source101-md5: 6aa9a5c6a4ca1016edd0ed1178e3cb87 %endif Source1: %{name}.init Source2: %{name}.sysconfig Source3: %{name}.logrotate -Source4: mysqld.conf +Source4: %{name}d.conf Source5: %{name}-clusters.conf Source7: %{name}-ndb.init Source8: %{name}-ndb.sysconfig @@ -80,40 +61,44 @@ Source11: %{name}-ndb-cpc.init Source12: %{name}-ndb-cpc.sysconfig Source13: %{name}-client.conf Source14: my.cnf -Patch0: mysql-opt.patch -Patch1: mysql-versioning.patch -Patch2: mysql-protobuf.patch -Patch3: build.patch -Patch4: mysql-sphinx.patch -Patch5: mysql-5.7-sphinx.patch -Patch6: mysql-chain-certs.patch -Patch7: mysql-dubious-exports.patch -Patch8: mysql-cmake.patch -URL: https://www.percona.com/software/mysql-database/percona-server -BuildRequires: bison >= 1.875 -BuildRequires: cmake >= 2.8.2 -BuildRequires: curl-devel -BuildRequires: readline-devel >= 6.2 -BuildRequires: libstdc++-devel >= 5:4.0 +Patch0: %{name}-opt.patch +Patch1: ssl-errors.patch +Patch2: %{name}-protobuf.patch +Patch3: %{name}-5.7-sphinx.patch +Patch4: %{name}-sphinx.patch +Patch5: %{name}-chain-certs.patch +Patch6: %{name}-cmake.patch +Patch7: %{name}-readline.patch +Patch8: %{name}dumpslow-clusters.patch +URL: http://www.mysql.com/products/community/ BuildRequires: automake -%{?with_system_boost:BuildRequires: boost-devel = 1.59.0} +BuildRequires: bison >= 1.875 +%{?with_system_boost:BuildRequires: boost-devel >= 1.59.0} +BuildRequires: cmake >= 2.8.9 +BuildRequires: libaio-devel +BuildRequires: libatomic-devel +BuildRequires: libevent-devel BuildRequires: libhsclient-devel +BuildRequires: libstdc++-devel >= 5:4.0 +BuildRequires: libtirpc-devel >= 1.0.0 %{?with_tcpd:BuildRequires: libwrap-devel} -BuildRequires: lz4-devel >= 1:1.9.3 +BuildRequires: lz4-devel BuildRequires: mecab-devel BuildRequires: ncurses-devel >= 4.2 %{?with_ssl:BuildRequires: openssl-devel >= 0.9.7d} +%{?with_ldap:BuildRequires: openldap-devel} BuildRequires: pam-devel -%{?with_autodeps:BuildRequires: perl-DBI} BuildRequires: perl-devel >= 1:5.6.1 -BuildRequires: protobuf-devel +%{?with_system_protobuf:BuildRequires: protobuf-devel >= 2.5} BuildRequires: python3-modules +BuildRequires: readline-devel >= 6.2 BuildRequires: rpcsvc-proto +BuildRequires: rpm-build >= 4.6 BuildRequires: rpm-perlprov >= 4.1-13 -BuildRequires: rpmbuild(macros) >= 1.597 +BuildRequires: rpmbuild(macros) >= 1.605 BuildRequires: sed >= 4.0 %{?with_systemtap:BuildRequires: systemtap-sdt-devel} -BuildRequires: zlib-devel +BuildRequires: zlib-devel >= 1.2.12 Requires(post,preun): /sbin/chkconfig Requires(postun): /usr/sbin/groupdel Requires(postun): /usr/sbin/userdel @@ -121,11 +106,11 @@ Requires(pre): /bin/id Requires(pre): /usr/bin/getgid Requires(pre): /usr/sbin/groupadd Requires(pre): /usr/sbin/useradd -Requires(post): sed >= 4.0 Requires: %{name}-charsets = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release} Requires: /usr/bin/setsid Requires: rc-scripts >= 0.2.0 +Requires: sed >= 4.0 Suggests: mysql-client %{?with_tcpd:Suggests: tcp_wrappers} Suggests: vim-syntax-mycnf @@ -140,118 +125,114 @@ BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _libexecdir %{_sbindir} %define _localstatedir /var/lib/mysql -%define _mysqlhome /home/services/%{name} +%define _mysqlhome /home/services/mysql %description -MySQL is a true multi-user, multi-threaded SQL (Structured -Query Language) database server. SQL is the most popular database -language in the world. MySQL is a client/server -implementation that consists of a server daemon mysqld and many -different client programs/libraries. - -The main goals of MySQL are speed, robustness and easy to -use. MySQL was originally developed because we at Tcx needed -a SQL server that could handle very big databases with magnitude -higher speed than what any database vendor could offer to us. We have -now been using MySQL since 1996 in a environment with more -than 40 databases, 10,000 tables, of which more than 500 have more -than 7 million rows. This is about 50G of mission critical data. - -The base upon which MySQL is built is a set of routines that -have been used in a highly demanding production environment for many -years. While MySQL is still in development, it already offers -a rich and highly useful function set. +MySQL is a true multi-user, multi-threaded SQL (Structured Query +Language) database server. SQL is the most popular database language +in the world. MySQL is a client/server implementation that consists of +a server daemon mysqld and many different client programs/libraries. + +The main goals of MySQL are speed, robustness and easy to use. MySQL +was originally developed because we at Tcx needed a SQL server that +could handle very big databases with magnitude higher speed than what +any database vendor could offer to us. We have now been using MySQL +since 1996 in a environment with more than 40 databases, 10,000 +tables, of which more than 500 have more than 7 million rows. This is +about 50G of mission critical data. + +The base upon which MySQL is built is a set of routines that have been +used in a highly demanding production environment for many years. +While MySQL is still in development, it already offers a rich and +highly useful function set. %description -l fr.UTF-8 -MySQL est un serveur de bases de donnees SQL vraiment -multi-usagers et multi-taches. Le langage SQL est le langage de bases -de donnees le plus populaire au monde. MySQL est une -implementation client/serveur qui consiste en un serveur (mysqld) et -differents programmes/bibliotheques clientes. - -Les objectifs principaux de MySQL sont: vitesse, robustesse -et facilite d'utilisation. MySQL fut originalement developpe -parce que nous, chez Tcx, avions besoin d'un serveur SQL qui pouvait -gerer de tres grandes bases de donnees avec une vitesse d'un ordre de -magnitude superieur a ce que n'importe quel vendeur pouvait nous -offrir. Nous utilisons MySQL depuis 1996 dans un -environnement avec plus de 40 bases de donnees, 10000 tables, -desquelles plus de 500 ont plus de 7 millions de lignes. Ceci -represente environ 50G de donnees critiques. - -A la base de la conception de MySQL, on retrouve une serie de -routines qui ont ete utilisees dans un environnement de production -pendant plusieurs annees. Meme si MySQL est encore en -developpement, il offre deja une riche et utile serie de fonctions. +MySQL est un serveur de bases de donnees SQL vraiment multi-usagers et +multi-taches. Le langage SQL est le langage de bases de donnees le +plus populaire au monde. MySQL est une implementation client/serveur +qui consiste en un serveur (mysqld) et differents +programmes/bibliotheques clientes. + +Les objectifs principaux de MySQL sont: vitesse, robustesse et +facilite d'utilisation. MySQL fut originalement developpe parce que +nous, chez Tcx, avions besoin d'un serveur SQL qui pouvait gerer de +tres grandes bases de donnees avec une vitesse d'un ordre de magnitude +superieur a ce que n'importe quel vendeur pouvait nous offrir. Nous +utilisons MySQL depuis 1996 dans un environnement avec plus de 40 +bases de donnees, 10000 tables, desquelles plus de 500 ont plus de 7 +millions de lignes. Ceci represente environ 50G de donnees critiques. + +A la base de la conception de MySQL, on retrouve une serie de routines +qui ont ete utilisees dans un environnement de production pendant +plusieurs annees. Meme si MySQL est encore en developpement, il offre +deja une riche et utile serie de fonctions. %description -l pl.UTF-8 -MySQL to prawdziwie wieloużytkownikowy, wielowątkowy serwer -baz danych SQL. SQL jest najpopularniejszym na świecie językiem -używanym do baz danych. MySQL to implementacja klient/serwer -składająca się z demona mysqld i wielu różnych programów i bibliotek -klienckich. - -Głównymi celami MySQL-a są szybkość, potęga i łatwość -użytkowania. MySQL oryginalnie był tworzony, ponieważ autorzy -w Tcx potrzebowali serwera SQL do obsługi bardzo dużych baz danych z -szybkością o wiele większą, niż mogli zaoferować inni producenci baz -danych. Używają go od 1996 roku w środowisku z ponad 40 bazami danych, -10 000 tabel, z których ponad 500 zawiera ponad 7 milionów rekordów - -w sumie około 50GB krytycznych danych. - -Baza, na której oparty jest MySQL, składa się ze zbioru -procedur, które były używane w bardzo wymagającym środowisku -produkcyjnym przez wiele lat. Pomimo, że MySQL jest ciągle -rozwijany, już oferuje bogaty i użyteczny zbiór funkcji. +MySQL to prawdziwie wieloużytkownikowy, wielowątkowy serwer baz danych +SQL. SQL jest najpopularniejszym na świecie językiem używanym do baz +danych. MySQL to implementacja klient/serwer składająca się z demona +mysqld i wielu różnych programów i bibliotek klienckich. + +Głównymi celami MySQL-a są szybkość, potęga i łatwość użytkowania. +MySQL oryginalnie był tworzony, ponieważ autorzy w Tcx potrzebowali +serwera SQL do obsługi bardzo dużych baz danych z szybkością o wiele +większą, niż mogli zaoferować inni producenci baz danych. Używają go +od 1996 roku w środowisku z ponad 40 bazami danych, 10 000 tabel, z +których ponad 500 zawiera ponad 7 milionów rekordów - w sumie około +50GB krytycznych danych. + +Baza, na której oparty jest MySQL, składa się ze zbioru procedur, +które były używane w bardzo wymagającym środowisku produkcyjnym przez +wiele lat. Pomimo, że MySQL jest ciągle rozwijany, już oferuje bogaty +i użyteczny zbiór funkcji. %description -l de.UTF-8 -MySQL ist eine SQL-Datenbank. Allerdings ist sie im Gegensatz -zu Oracle, DB2 oder PostgreSQL keine relationale Datenbank. Die Daten +MySQL ist eine SQL-Datenbank. Allerdings ist sie im Gegensatz zu +Oracle, DB2 oder PostgreSQL keine relationale Datenbank. Die Daten werden zwar in zweidimensionalen Tabellen gespeichert und können mit einem Primärschlüssel versehen werden. Es ist aber keine Definition eines Fremdschlüssels möglich. Der Benutzer ist somit bei einer -MySQL-Datenbank völlig allein für die (referenzielle) -Integrität der Daten verantwortlich. Allein durch die Nutzung externer +MySQL-Datenbank völlig allein für die (referenzielle) Integrität der +Daten verantwortlich. Allein durch die Nutzung externer Tabellenformate, wie InnoDB bzw Berkeley DB wird eine Relationalität -ermöglicht. Diese Projekte sind aber getrennt von MySQL zu -betrachten. +ermöglicht. Diese Projekte sind aber getrennt von MySQL zu betrachten. %description -l pt_BR.UTF-8 -O MySQL é um servidor de banco de dados SQL realmente -multiusuário e multi-tarefa. A linguagem SQL é a mais popular -linguagem para banco de dados no mundo. O MySQL é uma -implementação cliente/servidor que consiste de um servidor chamado -mysqld e diversos programas/bibliotecas clientes. Os principais -objetivos do MySQL são: velocidade, robustez e facilidade de -uso. O MySQL foi originalmente desenvolvido porque nós na Tcx -precisávamos de um servidor SQL que pudesse lidar com grandes bases de -dados e com uma velocidade muito maior do que a que qualquer vendedor -podia nos oferecer. Estamos usando o MySQL desde 1996 em um -ambiente com mais de 40 bases de dados com 10.000 tabelas, das quais -mais de 500 têm mais de 7 milhões de linhas. Isto é o equivalente a -aproximadamente 50G de dados críticos. A base da construção do Percona -Server é uma série de rotinas que foram usadas em um ambiente de -produção com alta demanda por muitos anos. Mesmo o MySQL -estando ainda em desenvolvimento, ele já oferece um conjunto de +O MySQL é um servidor de banco de dados SQL realmente multiusuário e +multi-tarefa. A linguagem SQL é a mais popular linguagem para banco de +dados no mundo. O MySQL é uma implementação cliente/servidor que +consiste de um servidor chamado mysqld e diversos +programas/bibliotecas clientes. Os principais objetivos do MySQL são: +velocidade, robustez e facilidade de uso. O MySQL foi originalmente +desenvolvido porque nós na Tcx precisávamos de um servidor SQL que +pudesse lidar com grandes bases de dados e com uma velocidade muito +maior do que a que qualquer vendedor podia nos oferecer. Estamos +usando o MySQL desde 1996 em um ambiente com mais de 40 bases de dados +com 10.000 tabelas, das quais mais de 500 têm mais de 7 milhões de +linhas. Isto é o equivalente a aproximadamente 50G de dados críticos. +A base da construção do MySQL é uma série de rotinas que foram usadas +em um ambiente de produção com alta demanda por muitos anos. Mesmo o +MySQL estando ainda em desenvolvimento, ele já oferece um conjunto de funções muito ricas e úteis. Veja a documentação para maiores informações. %description -l ru.UTF-8 -MySQL - это SQL (Structured Query Language) сервер базы -данных. MySQL была написана Michael'ом (monty) Widenius'ом. -См. файл CREDITS в дистрибутиве на предмет других участников проекта и -прочей информации о MySQL. +MySQL - это SQL (Structured Query Language) сервер базы данных. MySQL +была написана Michael'ом (monty) Widenius'ом. См. файл CREDITS в +дистрибутиве на предмет других участников проекта и прочей информации +о MySQL. %description -l uk.UTF-8 -MySQL - це SQL (Structured Query Language) сервер бази даних. -MySQL було написано Michael'ом (monty) Widenius'ом. Див. файл -CREDITS в дистрибутиві для інформації про інших учасників проекту та -іншої інформації. +MySQL - це SQL (Structured Query Language) сервер бази даних. MySQL +було написано Michael'ом (monty) Widenius'ом. Див. файл CREDITS в +дистрибутиві для інформації про інших учасників проекту та іншої +інформації. %package charsets Summary: MySQL - character sets definitions Summary(pl.UTF-8): MySQL - definicje kodowań znaków Group: Applications/Databases +BuildArch: noarch %description charsets This package contains character sets definitions needed by both client @@ -269,12 +250,12 @@ Requires: %{name}-client = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release} %description extras -MySQL additional utilities except Perl scripts (they may be -found in %{name}-extras-perl package). +MySQL additional utilities except Perl scripts (they may be found in +%{name}-extras-perl package). %description extras -l pl.UTF-8 -Dodatkowe narzędzia do MySQL - z wyjątkiem skryptów Perla -(które są w pakiecie %{name}-extras-perl). +Dodatkowe narzędzia do MySQL - z wyjątkiem skryptów Perla (które są w +pakiecie %{name}-extras-perl). %package extras-perl Summary: MySQL additional utilities written in Perl @@ -323,7 +304,8 @@ Este pacote contém os clientes padrão para o MySQL. Summary: Shared libraries for MySQL Summary(pl.UTF-8): Biblioteki współdzielone MySQL Group: Libraries -Obsoletes: libmysql10 +Requires: zlib >= 1.2.12 +Obsoletes: libmysql10 < 4 Obsoletes: mysql-doc < 4.1.12 %description libs @@ -340,10 +322,11 @@ Summary(ru.UTF-8): MySQL - хедеры и библиотеки разработ Summary(uk.UTF-8): MySQL - хедери та бібліотеки програміста Group: Development/Libraries Requires: %{name}-libs = %{version}-%{release} +Requires: libatomic-devel %{?with_ssl:Requires: openssl-devel} -Requires: zlib-devel +Requires: zlib-devel >= 1.2.12 Obsoletes: MySQL-devel -Obsoletes: libmysql10-devel +Obsoletes: libmysql10-devel < 4 Obsoletes: webscalesql-devel %description devel @@ -361,8 +344,7 @@ klienckich MySQL. %description devel -l pt_BR.UTF-8 Este pacote contém os arquivos de cabeçalho (header files) e -bibliotecas necessárias para desenvolver aplicações clientes do -MySQL. +bibliotecas necessárias para desenvolver aplicações clientes do MySQL. %description devel -l ru.UTF-8 Этот пакет содержит хедеры и библиотеки разработчика, необходимые для @@ -404,7 +386,7 @@ Summary(uk.UTF-8): MySQL - бенчмарки Group: Applications/Databases Requires: %{name} = %{version}-%{release} Requires: %{name}-client -Requires: perl(DBD::mysql) +Requires: perl-DBD-mysql Obsoletes: MySQL-bench %description bench @@ -414,16 +396,14 @@ This package contains MySQL benchmark scripts and data. Programy testujące szybkość serwera MySQL. %description bench -l pt_BR.UTF-8 -Este pacote contém medições de desempenho de scripts e dados do -MySQL. +Este pacote contém medições de desempenho de scripts e dados do MySQL. %description bench -l ru.UTF-8 Этот пакет содержит скрипты и данные для оценки производительности MySQL. %description bench -l uk.UTF-8 -Цей пакет містить скрипти та дані для оцінки продуктивності Percona -Server. +Цей пакет містить скрипти та дані для оцінки продуктивності MySQL. %package doc Summary: MySQL manual @@ -443,8 +423,7 @@ Group: Applications/Databases Requires: %{name}-libs = %{version}-%{release} %description ndb -This package contains the standard MySQL NDB Storage Engine -Daemon. +This package contains the standard MySQL NDB Storage Engine Daemon. %description ndb -l pl.UTF-8 Ten pakiet zawiera standardowego demona silnika przechowywania danych @@ -469,12 +448,10 @@ Group: Applications/Databases Requires: %{name}-libs = %{version}-%{release} %description ndb-mgm -This package contains the standard MySQL NDB Management -Daemon. +This package contains the standard MySQL NDB Management Daemon. %description ndb-mgm -l pl.UTF-8 -Ten pakiet zawiera standardowego demona zarządzającego MySQL -NDB. +Ten pakiet zawiera standardowego demona zarządzającego MySQL NDB. %package ndb-cpc Summary: MySQL - NDB CPC Daemon @@ -489,22 +466,19 @@ This package contains the standard MySQL NDB CPC Daemon. Ten pakiet zawiera standardowego demona MySQL NDB CPC. %prep -%setup -q -n percona-server-%{version}-%{percona_rel} %{?with_sphinx:-a100} %{!?with_system_boost:-a101} - -# we want to use old, mysql compatible client library name -find . -name CMakeLists.txt -exec sed -i -e 's#perconaserverclient#mysqlclient#g' "{}" ";" -sed -i -e 's#perconaserverclient#mysqlclient#g' libmysql/libmysql.{ver.in,map} scripts/mysql_config.* +%setup -q %{?with_sphinx:-a100} %{!?with_system_boost:-a101} %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch3 -p1 %if %{with sphinx} # http://www.sphinxsearch.com/docs/manual-0.9.9.html#sphinxse-mysql51 %{__mv} sphinx-*/mysqlse storage/sphinx +%patch3 -p1 %patch4 -p1 -%patch5 -p1 %endif +# really not fixed? verify +%patch5 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 @@ -513,8 +487,9 @@ sed -i -e 's#perconaserverclient#mysqlclient#g' libmysql/libmysql.{ver.in,map} s [ -f sql/sql_yacc.cc ] && %{__rm} sql/sql_yacc.cc [ -f sql/sql_yacc.h ] && %{__rm} sql/sql_yacc.h -# map has more sane versioning that default "global everything" in ver.in -#cp -p libmysql/libmysql.map libmysql/libmysql.ver.in +# ensure sytstem lib +# need to keep xxhash.[ch] +%{__rm} -rv extra/lz4/lz4*/lib/lz4* %build install -d build @@ -523,20 +498,12 @@ cd build # (it defaults to first cluster but user may change it to whatever # cluster it wants) -%if "%{cc_version}" >= "7.0" -FALLTHROUGH_OPT="-Wimplicit-fallthrough=0" -%else -FALLTHROUGH_OPT= -%endif - CPPFLAGS="%{rpmcppflags}" \ %cmake .. \ -DCMAKE_BUILD_TYPE=%{!?debug:RelWithDebInfo}%{?debug:Debug} \ - -DCMAKE_C_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT" \ - -DCMAKE_CXX_FLAGS_DEBUG="-fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT" \ - -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT -Wno-shadow" \ - -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing $FALLTHROUGH_OPT -Wno-shadow" \ - -DCOMPILATION_COMMENT="TLD Linux MySQL RPM" \ + -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{rpmcflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{rpmcxxflags} -DNDEBUG -fno-omit-frame-pointer -fno-strict-aliasing" \ + -DCOMPILATION_COMMENT="PLD/Linux Distribution MySQL RPM" \ -DCURSES_INCLUDE_PATH=/usr/include/ncurses \ %{?with_systemtap:-DENABLE_DTRACE=ON} \ -DFEATURE_SET="community" \ @@ -547,67 +514,40 @@ CPPFLAGS="%{rpmcppflags}" \ -DINSTALL_SQLBENCHDIR=%{_datadir} \ -DINSTALL_SUPPORTFILESDIR=share/%{name}-support \ -DINSTALL_MYSQLSHAREDIR=share/%{name} \ - -DINSTALL_SECURE_FILE_PRIVDIR="" \ - -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ + -DMYSQL_UNIX_ADDR=/var/lib/%{name}/%{name}.sock \ %{?debug:-DWITH_DEBUG=ON} \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ - -DWITH_FAST_MUTEXES=ON \ -DWITH_LIBWRAP=%{?with_tcpd:ON}%{!?with_tcpd:OFF} \ - -DWITH_PAM=ON \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_PIC=ON \ - -DWITH_SCALABILITY_METRICS=ON \ + -DWITH_LZ4=system \ + -DWITH_LIBEVENT=system \ + %{?with_system_protobuf:-DWITH_PROTOBUF=system} \ -DWITH_SSL=%{?with_ssl:system}%{!?with_ssl:no} \ -DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \ - -DWITH_COREDUMPER=%{?with_coredumper:ON}%{!?with_coredumper:OFF} \ - %{!?with_tokudb:-DWITHOUT_TOKUDB=ON} \ - %{!?with_rocksdb:-DWITHOUT_ROCKSDB=ON} \ -%if %{without system_boost} %{!?with_system_boost:-DWITH_BOOST="$(pwd)/$(ls -1d ../boost_*)"} \ -%endif - -DWITH_LIBEVENT=system \ - -DWITH_LZ4=system \ - -DWITH_MECAB=system \ - -DWITH_PROTOBUF=system \ - -DWITH_READLINE=system \ -DWITH_ZLIB=system \ + -DWITH_EDITLINE=system \ + -DWITH_MECAB=system \ -DTMPDIR=/var/tmp %{__make} -%if %{with tests} -%{__make} test - -cd mysql-test - -MTR_BINDIR=$(pwd)/../build/ \ -%{__perl} ./mysql-test-run.pl \ - --force \ - --retry=0 \ - --ssl \ - --suite-timeout=720 \ - --testcase-timeout=30 \ - --mysqld=--binlog-format=mixed \ - --force-restart \ - --shutdown-timeout=60 \ - --max-test-fail=0 \ - --big-test \ - --skip-test-list=unstable-tests -%endif +%{?with_tests:%{__make} test} %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,%{name},skel} \ - $RPM_BUILD_ROOT/var/{log/{archive,}/%{name},lib/mysql} \ +install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql,skel} \ + $RPM_BUILD_ROOT/var/{log/{archive,}/mysql,lib/{mysql,mysql-files}} \ $RPM_BUILD_ROOT%{_mysqlhome} \ $RPM_BUILD_ROOT%{_libdir} %{__make} -C build install \ DESTDIR=$RPM_BUILD_ROOT -install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name} -cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{name} -cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/%{name} +install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql +cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/mysql +cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/logrotate.d/mysql # This is template for configuration file which is created after 'service mysql init' cp -a %{SOURCE4} mysqld.conf cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/clusters.conf @@ -630,12 +570,12 @@ cp -a %{SOURCE14} $RPM_BUILD_ROOT/etc/skel/.my.cnf # NDB %if %{with ndb} -install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-ndb -cp -a %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-ndb -install -p %{SOURCE9} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-ndb-mgm -cp -a %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-ndb-mgm -install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-ndb-cpc -cp -a %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/%{name}-ndb-cpc +install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb +cp -a %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb +install -p %{SOURCE9} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-mgm +cp -a %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-mgm +install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/mysql-ndb-cpc +cp -a %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/mysql-ndb-cpc %endif sed -i -e 's,/usr//usr,%{_prefix},g' $RPM_BUILD_ROOT%{_bindir}/mysql_config @@ -646,11 +586,8 @@ sed -i -e '/libs/s/-lprobes_mysql//' $RPM_BUILD_ROOT%{_bindir}/mysql_config %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/%{name}-support # rename not to be so generic name -mv $RPM_BUILD_ROOT%{_bindir}/{,mysql_}resolve_stack_dump -mv $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1 - -# move to _sysconfdir -#mv $RPM_BUILD_ROOT{%{_bindir},%{_sysconfdir}}/mysqlaccess.conf +%{__mv} $RPM_BUILD_ROOT%{_bindir}/{,mysql_}resolve_stack_dump +%{__mv} $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1 # not useful without -debug build %{!?debug:%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_resolve_stack_dump} @@ -661,29 +598,35 @@ mv $RPM_BUILD_ROOT%{_mandir}/man1/{,mysql_}resolve_stack_dump.1 %{?debug:nm -n $RPM_BUILD_ROOT%{_sbindir}/mysqld > $RPM_BUILD_ROOT%{_datadir}/%{name}/mysqld.sym} # do not clobber users $PATH -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_plugin -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_upgrade -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/innochecksum -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamchk -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamlog -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisampack -#mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_fix_privilege_tables -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/my_print_defaults -sed -i -e 's#/usr/bin/my_print_defaults#%{_sbindir}/my_print_defaults#g' $RPM_BUILD_ROOT%{_bindir}/mysql_install_db -mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_plugin +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_upgrade +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/innochecksum +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamchk +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisamlog +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/myisampack +#%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysql_fix_privilege_tables +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/lz4_decompress +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/zlib_decompress +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/my_print_defaults +%{__sed} -i -e 's#/usr/bin/my_print_defaults#%{_sbindir}/my_print_defaults#g' $RPM_BUILD_ROOT%{_bindir}/mysql_install_db +%{__mv} $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck # delete - functionality in initscript / rpm # note: mysql_install_db (and thus resolveip) are needed by digikam %{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_safe %{__rm} $RPM_BUILD_ROOT%{_bindir}/mysqld_multi %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqld_{multi,safe}* +#%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql-log-rotate +#%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/mysql.server +#%{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/binary-configure %{__rm} $RPM_BUILD_ROOT%{_datadir}/%{name}/errmsg-utf8.txt %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysql.server* %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/mysqlman.1* %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/comp_err.1* # we don't package those (we have no -test or -testsuite pkg) and some of them just segfault -%{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql_client_test +%{__rm} $RPM_BUILD_ROOT%{_bindir}/{mysql_client_test,mysqlxtest} +%{__rm} $RPM_BUILD_ROOT%{_libdir}/mysql/plugin/test_udf_services.so %{__rm} -r $RPM_BUILD_ROOT%{_datadir}/mysql-test # libmysqld examples %{__rm} $RPM_BUILD_ROOT%{_bindir}/mysql{_client_test_embedded,_embedded,test_embedded} @@ -691,10 +634,11 @@ mv $RPM_BUILD_ROOT{%{_bindir},%{_sbindir}}/mysqlcheck # not needed %{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libdaemon_example.* %{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/daemon_example.ini -%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/udf_example.so -# not an .info file -%{__rm} $RPM_BUILD_ROOT%{_infodir}/mysql.info +# test plugins +%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/libtest*.so +%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/rewrite_example.so +%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugin/test_security_context.so %clean rm -rf $RPM_BUILD_ROOT @@ -705,13 +649,13 @@ rm -rf $RPM_BUILD_ROOT %post /sbin/ldconfig -/sbin/chkconfig --add %{name} -%service %{name} restart +/sbin/chkconfig --add mysql +%service mysql restart %preun if [ "$1" = "0" ]; then - %service -q %{name} stop - /sbin/chkconfig --del %{name} + %service -q mysql stop + /sbin/chkconfig --del mysql fi %postun @@ -722,49 +666,222 @@ if [ "$1" = "0" ]; then fi %post ndb -/sbin/chkconfig --add %{name}-ndb -%service %{name}-ndb restart "%{name} NDB engine" +/sbin/chkconfig --add mysql-ndb +%service mysql-ndb restart "mysql NDB engine" %preun ndb if [ "$1" = "0" ]; then - %service %{name}-ndb stop - /sbin/chkconfig --del %{name}-ndb + %service mysql-ndb stop + /sbin/chkconfig --del mysql-ndb fi %post ndb-mgm -/sbin/chkconfig --add %{name}-ndb-mgm -%service %{name}-ndb-mgm restart "%{name} NDB management node" +/sbin/chkconfig --add mysql-ndb-mgm +%service mysql-ndb-mgm restart "mysql NDB management node" %preun ndb-mgm if [ "$1" = "0" ]; then - %service %{name}-ndb-mgm stop - /sbin/chkconfig --del %{name}-ndb-mgm + %service mysql-ndb-mgm stop + /sbin/chkconfig --del mysql-ndb-mgm fi %post ndb-cpc -/sbin/chkconfig --add %{name}-ndb-cpc -%service %{name}-ndb-cpc restart "mysql NDB CPC" +/sbin/chkconfig --add mysql-ndb-cpc +%service mysql-ndb-cpc restart "mysql NDB CPC" %preun ndb-cpc if [ "$1" = "0" ]; then - %service %{name}-ndb-cpc stop - /sbin/chkconfig --del %{name}-ndb-cpc + %service mysql-ndb-cpc stop + /sbin/chkconfig --del mysql-ndb-cpc fi %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig +%triggerpostun -- mysql < 5.7.0 +# mysql < 4.0.20-2.4 +# For clusters in /etc/%{name}/clusters.conf +if [ -f /etc/sysconfig/mysql ]; then + . /etc/sysconfig/mysql + if [ -n "$MYSQL_DB_CLUSTERS" ]; then + for i in "$MYSQL_DB_CLUSTERS"; do + echo "$i/mysqld.conf=$i" >> /etc/%{name}/clusters.conf + done + echo "# Do not use **obsolete** option MYSQL_DB_CLUSTERS" >> /etc/sysconfig/mysql + echo "# USE /etc/%{name}/clusters.conf instead" >> /etc/sysconfig/mysql + echo "Converted clusters from MYSQL_DB_CLUSTERS to /etc/%{name}/clusters.conf." + echo "You NEED to fix your /etc/sysconfig/mysql and verify /etc/%{name}/clusters.conf." + fi +fi + +# mysql < 4.1.1 +# For better compatibility with prevoius versions: +for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do + if echo "$config" | grep -q '^/'; then + config_file="$config" + elif [ -f "/etc/%{name}/$config" ]; then + config_file=/etc/%{name}/$config + else + clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf) + if [ -z "$clusterdir" ]; then + echo >&2 "Can't find cluster dir for $config!" + echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf" + exit 1 + fi + config_file="$clusterdir/mysqld.conf" + fi + + if [ ! -f "$config_file" ]; then + echo >&2 "Lost myself! Please report this (with above errors, if any) to http://bugs.pld-linux.org/" + exit 1 + fi + echo "Adding option old-passwords to config: $config_file" + echo "If you want to use new, better passwords - remove it" + + # sed magic to add 'old-passwords' to [mysqld] section + sed -i -e '/./{H;$!d;};x;/\[mysqld\]/{ + a + a; Compatibility options: + aold-passwords + } + ' $config_file +done + +%banner -e %{name}-4.1.x <<-EOF + If you want to use new help tables in MySQL 4.1.x then You'll need to import the help data: + mysql -u mysql mysql < %{_datadir}/%{name}/fill_help_tables.sql +EOF +#' + +# mysql < 5.1.0 +configs="" +for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do + if echo "$config" | grep -q '^/'; then + config_file="$config" + elif [ -f "/etc/%{name}/$config" ]; then + config_file=/etc/%{name}/$config + else + clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf) + if [ -z "$clusterdir" ]; then + echo >&2 "Can't find cluster dir for $config!" + echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf" + exit 1 + fi + config_file="$clusterdir/mysqld.conf" + fi + + if [ ! -f "$config_file" ]; then + echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/" + continue + fi + configs="$configs $config_file" +done + +( +echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.' +echo 'Thus, you should invoke:' +for config in $configs; do + sed -i -e ' + s/set-variable\s*=\s* // + # use # as comment in config + s/^;/#/ + ' $config + + datadir=$(awk -F= '!/^#/ && $1 ~ /datadir/{print $2}' $config | xargs) + echo "# mysql_upgrade --datadir=$datadir" +done +) | %banner -e %{name}-5.1 + +# mysql < 5.5.0 +configs="" +for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do + if echo "$config" | grep -q '^/'; then + config_file="$config" + elif [ -f "/etc/%{name}/$config" ]; then + config_file=/etc/%{name}/$config + else + clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf) + if [ -z "$clusterdir" ]; then + echo >&2 "Can't find cluster dir for $config!" + echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf" + exit 1 + fi + config_file="$clusterdir/mysqld.conf" + fi + + if [ ! -f "$config_file" ]; then + echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/" + continue + fi + configs="$configs $config_file" +done + +( +echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.' +echo 'Thus, you should invoke:' +for config in $configs; do + sed -i -e ' + s/^language *= *polish/lc-messages = pl_PL/i + s/set-variable\s*=\s* // + s/^skip-locking/skip-external-locking/ + # this is not valid for server. it is client option + s/^default-character-set/# client-config: &/ + # use # as comment in config + s/^;/#/ + ' $config + + socket=$(awk -F= '!/^#/ && $1 ~ /socket/{print $2}' $config | xargs) + echo "# mysql_upgrade ${socket:+--socket=$socket}" +done +) | %banner -e %{name}-5.5 + +# mysql < 5.7.0 +configs="" +for config in $(awk -F= '!/^#/ && /=/{print $1}' /etc/%{name}/clusters.conf); do + if echo "$config" | grep -q '^/'; then + config_file="$config" + elif [ -f "/etc/%{name}/$config" ]; then + config_file=/etc/%{name}/$config + else + clusterdir=$(awk -F= "/^$config/{print \$2}" /etc/%{name}/clusters.conf) + if [ -z "$clusterdir" ]; then + echo >&2 "Can't find cluster dir for $config!" + echo >&2 "Please remove extra (leading) spaces from /etc/%{name}/clusters.conf" + exit 1 + fi + config_file="$clusterdir/mysqld.conf" + fi + + if [ ! -f "$config_file" ]; then + echo >&2 "ERROR: Can't find real config file for $config! Please report this (with above errors, if any) to http://bugs.pld-linux.org/" + continue + fi + configs="$configs $config_file" +done + +( +echo 'You should run MySQL upgrade script *after* restarting MySQL server for all MySQL clusters.' +echo 'Thus, you should invoke:' +for config in $configs; do + sed -i -e ' + s/^log-warnings *=/log-error-verbosity =/ + s/^myisam-recover$/myisam-recover-options/ + s/^innodb_mirrored_log_groups.*// + ' $config + + socket=$(awk -F= '!/^#/ && $1 ~ /socket/{print $2}' $config | xargs) + echo "# mysql_upgrade ${socket:+--socket=$socket}" +done +) | %banner -e %{name}-5.7 + %files %defattr(644,root,root,755) -%doc build-ps/rpm/*.cnf %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name} %attr(754,root,root) /etc/rc.d/init.d/%{name} %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name} %attr(640,root,mysql) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/clusters.conf -%attr(755,root,root) %{_bindir}/ps_mysqld_helper -%attr(755,root,root) %{_bindir}/ps_tokudb_admin -%attr(755,root,root) %{_bindir}/ps-admin %attr(755,root,root) %{_sbindir}/innochecksum +%attr(755,root,root) %{_sbindir}/lz4_decompress %attr(755,root,root) %{_sbindir}/my_print_defaults %attr(755,root,root) %{_sbindir}/myisamchk %attr(755,root,root) %{_sbindir}/myisamlog @@ -773,49 +890,20 @@ fi %attr(755,root,root) %{_sbindir}/mysql_upgrade %attr(755,root,root) %{_sbindir}/mysqlcheck %attr(755,root,root) %{_sbindir}/mysqld +%attr(755,root,root) %{_sbindir}/zlib_decompress + %dir %{_libdir}/%{name} %dir %{_libdir}/%{name}/plugin %attr(755,root,root) %{_libdir}/%{name}/plugin/adt_null.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/audit_log.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_pam_compat.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/auth_pam.so %attr(755,root,root) %{_libdir}/%{name}/plugin/auth.so %attr(755,root,root) %{_libdir}/%{name}/plugin/auth_socket.so %attr(755,root,root) %{_libdir}/%{name}/plugin/auth_test_plugin.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_ldap_sasl_client.so +%{?with_ldap:%attr(755,root,root) %{_libdir}/%{name}/plugin/authentication_ldap_sasl_client.so} %attr(755,root,root) %{_libdir}/%{name}/plugin/connection_control.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/data_masking.ini -%attr(755,root,root) %{_libdir}/%{name}/plugin/data_masking.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/dialog.so %attr(755,root,root) %{_libdir}/%{name}/plugin/group_replication.so %attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_file.so %attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_udf.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/keyring_vault.so %attr(755,root,root) %{_libdir}/%{name}/plugin/libpluginmecab.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libfnv1a_udf.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libfnv_udf.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libmurmur_udf.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_framework.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_services.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_services_threaded.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_session_detach.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_session_info.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_session_in_thd.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_2_sessions.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_all_col_types.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_cmds_1.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_commit.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_complex.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_errors.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_lock.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_processlist.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_replication.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_shutdown.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_sqlmode.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_stored_procedures_functions.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_sql_views_triggers.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_x_sessions_deinit.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/libtest_x_sessions_init.so %attr(755,root,root) %{_libdir}/%{name}/plugin/locking_service.so %attr(755,root,root) %{_libdir}/%{name}/plugin/mypluglib.so %attr(755,root,root) %{_libdir}/%{name}/plugin/mysql_no_login.so @@ -823,35 +911,17 @@ fi %attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_client.so %attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_interface.so %attr(755,root,root) %{_libdir}/%{name}/plugin/qa_auth_server.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/query_response_time.so %attr(755,root,root) %{_libdir}/%{name}/plugin/replication_observers_example_plugin.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/rewrite_example.so %attr(755,root,root) %{_libdir}/%{name}/plugin/rewriter.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/scalability_metrics.so %attr(755,root,root) %{_libdir}/%{name}/plugin/semisync_master.so %attr(755,root,root) %{_libdir}/%{name}/plugin/semisync_slave.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/test_security_context.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/test_udf_services.so %attr(755,root,root) %{_libdir}/%{name}/plugin/validate_password.so %attr(755,root,root) %{_libdir}/%{name}/plugin/version_token.so %if %{with sphinx} %attr(755,root,root) %{_libdir}/%{name}/plugin/ha_sphinx.so %endif -%if %{with tokudb} -%attr(755,root,root) %{_bindir}/tokuft_logprint -%attr(755,root,root) %{_bindir}/tokuftdump -%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_tokudb.so -%attr(755,root,root) %{_libdir}/%{name}/plugin/tokudb_backup.so -%attr(755,root,root) %{_libdir}/libHotBackup.so -%endif -%if %{with rocksdb} -%attr(755,root,root) %{_bindir}/ldb -%attr(755,root,root) %{_bindir}/mysql_ldb -%attr(755,root,root) %{_bindir}/sst_dump -%attr(755,root,root) %{_libdir}/%{name}/plugin/ha_rocksdb.so -%endif -# for plugins %{_mandir}/man1/innochecksum.1* +%{_mandir}/man1/lz4_decompress.1* %{_mandir}/man1/my_print_defaults.1* %{_mandir}/man1/myisamchk.1* %{_mandir}/man1/myisamlog.1* @@ -859,6 +929,7 @@ fi %{_mandir}/man1/mysql_plugin.1* %{_mandir}/man1/mysql_upgrade.1* %{_mandir}/man1/mysqlcheck.1* +%{_mandir}/man1/zlib_decompress.1* %{_mandir}/man8/mysqld.8* %if %{?debug:1}0 @@ -870,24 +941,26 @@ fi %attr(700,mysql,mysql) %{_mysqlhome} # root:root is proper here for mysql.rpm while mysql:mysql is potential security hole %attr(751,root,root) /var/lib/mysql -%attr(750,mysql,mysql) %dir /var/log/%{name} -%attr(750,mysql,mysql) %dir /var/log/archive/%{name} -%attr(640,mysql,mysql) %ghost /var/log/%{name}/* +# https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_secure-file-priv +%attr(770,mysql,mysql) %dir /var/lib/mysql-files +%attr(750,mysql,mysql) %dir /var/log/mysql +%attr(750,mysql,mysql) %dir /var/log/archive/mysql +%attr(640,mysql,mysql) %ghost /var/log/mysql/* # This is template for configuration file which is created after 'service mysql init' %{_datadir}/%{name}/mysqld.conf -%{_datadir}/%{name}/install_rewriter.sql %{_datadir}/%{name}/mysql_security_commands.sql %{_datadir}/%{name}/mysql_sys_schema.sql -%{_datadir}/%{name}/mysql_system_tables.sql %{_datadir}/%{name}/mysql_system_tables_data.sql +%{_datadir}/%{name}/mysql_system_tables.sql %{_datadir}/%{name}/mysql_test_data_timezone.sql -%{_datadir}/%{name}/uninstall_rewriter.sql %{_datadir}/%{name}/english %{_datadir}/%{name}/dictionary.txt %{_datadir}/%{name}/fill_help_tables.sql %{_datadir}/%{name}/innodb_memcached_config.sql +%{_datadir}/%{name}/install_rewriter.sql +%{_datadir}/%{name}/uninstall_rewriter.sql # Don't mark these with %%lang. These are used depending # on database client settings. %{_datadir}/%{name}/bulgarian @@ -923,6 +996,7 @@ fi %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/myisam_ftdump %attr(755,root,root) %{_bindir}/mysql_install_db +%attr(755,root,root) %{_bindir}/mysql_ssl_rsa_setup %attr(755,root,root) %{_bindir}/mysql_secure_installation %attr(755,root,root) %{_bindir}/mysql_tzinfo_to_sql %attr(755,root,root) %{_bindir}/perror @@ -930,6 +1004,7 @@ fi %attr(755,root,root) %{_bindir}/resolveip %{_mandir}/man1/myisam_ftdump.1* %{_mandir}/man1/mysql_install_db.1* +%{_mandir}/man1/mysql_ssl_rsa_setup.1* %{_mandir}/man1/mysql_secure_installation.1* %{_mandir}/man1/mysql_tzinfo_to_sql.1* %{_mandir}/man1/perror.1* @@ -943,33 +1018,27 @@ fi %files client %defattr(644,root,root,755) -%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/skel/.my.cnf -%attr(755,root,root) %{_bindir}/lz4_decompress +%attr(600,root,root) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/skel/.my.cnf %attr(755,root,root) %{_bindir}/mysql -%attr(755,root,root) %{_bindir}/mysql_config_editor -%attr(755,root,root) %{_bindir}/mysql_ssl_rsa_setup %attr(755,root,root) %{_bindir}/mysqladmin %attr(755,root,root) %{_bindir}/mysqlbinlog +%attr(755,root,root) %{_bindir}/mysql_config_editor %attr(755,root,root) %{_bindir}/mysqldump %attr(755,root,root) %{_bindir}/mysqlimport %attr(755,root,root) %{_bindir}/mysqlpump %attr(755,root,root) %{_bindir}/mysqlshow -%attr(755,root,root) %{_bindir}/zlib_decompress -%{_mandir}/man1/lz4_decompress.1* %{_mandir}/man1/mysql.1* -%{_mandir}/man1/mysql_config_editor.1* -%{_mandir}/man1/mysql_ssl_rsa_setup.1* %{_mandir}/man1/mysqladmin.1* %{_mandir}/man1/mysqlbinlog.1* +%{_mandir}/man1/mysql_config_editor.1* %{_mandir}/man1/mysqldump.1* %{_mandir}/man1/mysqlimport.1* %{_mandir}/man1/mysqlpump.1* %{_mandir}/man1/mysqlshow.1* -%{_mandir}/man1/zlib_decompress.1* %files libs %defattr(644,root,root,755) -%attr(751,root,root) %dir %{_sysconfdir}/%{name} +%attr(751,root,root) %dir %{_sysconfdir}/mysql %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/mysql-client.conf %{_sysconfdir}/%{name}/my.cnf %attr(755,root,root) %{_libdir}/libmysqlclient.so.*.*.* @@ -983,10 +1052,10 @@ fi %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/mysql_config %attr(755,root,root) %{_libdir}/libmysqlclient.so -%{_pkgconfigdir}/mysqlclient.pc %if %{with ndb} %attr(755,root,root) %{_libdir}/libndbclient.so %endif +%{_pkgconfigdir}/mysqlclient.pc # static-only so far %{_libdir}/libmysqld.a %{_libdir}/libmysqlservices.a @@ -1005,14 +1074,21 @@ fi %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/mysqlslap %attr(755,root,root) %{_bindir}/mysqltest +#%dir %{_datadir}/sql-bench +#%{_datadir}/sql-bench/[CDRl]* +#%attr(755,root,root) %{_datadir}/sql-bench/[bcgirst]* %{_mandir}/man1/mysqlslap.1* +#%files doc +#%defattr(644,root,root,755) +#%doc Docs/manual.html Docs/manual_toc.html + %if %{with ndb} %files ndb %defattr(644,root,root,755) %attr(755,root,root) %{_sbindir}/ndbd -%attr(754,root,root) /etc/rc.d/init.d/%{name}-ndb -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-ndb +%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb %{_mandir}/man1/ndbd_redo_log_reader.1* %{_mandir}/man8/ndbd.8* @@ -1055,14 +1131,14 @@ fi %files ndb-mgm %defattr(644,root,root,755) %attr(755,root,root) %{_sbindir}/ndb_mgmd -%attr(754,root,root) /etc/rc.d/init.d/%{name}-ndb-mgm -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-ndb-mgm +%attr(754,root,root) /etc/rc.d/init.d/mysql-ndb-mgm +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-mgm %{_mandir}/man8/ndb_mgmd.8* %files ndb-cpc %defattr(644,root,root,755) %attr(755,root,root) %{_sbindir}/ndb_cpcd %attr(754,root,root) /etc/rc.d/init.d/mysql-ndb-cpc -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}-ndb-cpc +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-cpc %{_mandir}/man1/ndb_cpcd.1* %endif diff --git a/mysqld.conf b/mysqld.conf index c9da04d..658fb6d 100644 --- a/mysqld.conf +++ b/mysqld.conf @@ -40,6 +40,10 @@ skip-external-locking # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 +# Default storage engine is InnoDB since 5.5.5 +# You may revert to previous behaviour by specifiying MyISAM here +#default-storage-engine=InnoDB + # Don't listen on a TCP/IP port at all. This is a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets. @@ -54,9 +58,7 @@ skip-networking # Emergency option. Use only if you really need this. #skip-grant-tables -# http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_default-storage-engine -# Default storage engine is InnoDB since 5.5.5 -# You may revert to previous behaviour by specifiying MyISAM here +# http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_default-storage-engine #default-storage-engine=MyISAM # Replication Master Server (default) @@ -124,7 +126,7 @@ log-output = FILE # mysqld error log (stderr) log-error = /var/log/mysql/mysqld.log -log-warnings = 2 +log-error-verbosity = 2 # Log slow queries slow-query-log @@ -150,7 +152,6 @@ slow-query-log-file = /var/log/mysql/slow.log # Internal server variables # -explicit_defaults_for_timestamp = true #back_log=5 #connect_timeout=5 #delayed_insert_timeout=300 @@ -187,10 +188,6 @@ explicit_defaults_for_timestamp = true # Fulltext search options #ft_min_word_len=2 -# Turn off nonstandard TIMESTAMP behaviors -# http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp -explicit_defaults_for_timestamp = true - # # MyISAM tables options # @@ -200,11 +197,10 @@ explicit_defaults_for_timestamp = true #delay-key-write-for-all-tables # Repair automatically on open if the table wasn't closed properly. -# http://dev.mysql.com/doc/refman/5.6/en/server-options.html#option_mysqld_myisam-recover-options +# http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_myisam-recover-options myisam-recover-options -# -#myisam_sort_buffer_size=4M +#myisam_sort_buffer_size=4M # To completely disable InnoDB, use this option # this makes all innodb options being unknown options (including skip-innodb) @@ -222,11 +218,8 @@ innodb_file_per_table # these are actual defaults (as of 5.0.26) innodb_data_home_dir = @clusterdir@/mysqldb/db -innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = @clusterdir@/mysqldb/db innodb_log_files_in_group=2 -innodb_log_file_size=5M -innodb_log_buffer_size=1M #innodb_flush_log_at_trx_commit=1 #innodb_log_arch_dir = @clusterdir@/innodb/log diff --git a/mysqldumpslow-clusters.patch b/mysqldumpslow-clusters.patch new file mode 100644 index 0000000..415ab93 --- /dev/null +++ b/mysqldumpslow-clusters.patch @@ -0,0 +1,46 @@ +--- percona-server-5.6.20-68.0/scripts/mysqldumpslow.sh~ 2014-08-29 10:58:05.000000000 +0300 ++++ percona-server-5.6.20-68.0/scripts/mysqldumpslow.sh 2014-09-06 20:50:22.000000000 +0300 +@@ -51,8 +51,33 @@ + + $opt{'help'} and usage(); + ++# find config file for first defined cluster ++sub get_defaults_file { ++ my $clusters_file = '/etc/mysql/clusters.conf'; ++ return unless -f $clusters_file; ++ ++ open(my $fh , "< $clusters_file") or return; ++ while (<$fh>) { ++ my ($config, $clusterdir) = m{^([^#]+)\s*=\s*(.+)$}; ++ next unless $config; ++ ++ if ($config !~ m{/}) { ++ my $f = "/etc/mysql/$config"; ++ return $f if -f $f; ++ ++ my $f = "$clusterdir/$config"; ++ return $f if -f $f; ++ } ++ return $config; ++ } ++ close($fh) or die $!; ++ return undef; ++} ++ + unless (@ARGV) { +- my $defaults = `my_print_defaults mysqld`; ++ my $defaults_file = get_defaults_file; ++ my $defaults_arg = "-c $defaults_file" if $defaults_file; ++ my $defaults = `my_print_defaults $defaults_arg mysqld`; + my $basedir = ($defaults =~ m/--basedir=(.*)/)[0] + or die "Can't determine basedir from 'my_print_defaults mysqld' output: $defaults"; + warn "basedir=$basedir\n" if $opt{v}; +@@ -61,7 +86,7 @@ + my $slowlog = ($defaults =~ m/--slow-query-log-file=(.*)/)[0]; + if (!$datadir or $opt{i}) { + # determine the datadir from the instances section of /etc/my.cnf, if any +- my $instances = `my_print_defaults instances`; ++ my $instances = `my_print_defaults $defaults_arg instances`; + die "Can't determine datadir from 'my_print_defaults mysqld' output: $defaults" + unless $instances; + my @instances = ($instances =~ m/^--(\w+)-/mg); diff --git a/ssl-errors.patch b/ssl-errors.patch new file mode 100644 index 0000000..5034b82 --- /dev/null +++ b/ssl-errors.patch @@ -0,0 +1,45 @@ +diff -urp mysql-5.7.36.org/vio/viossl.c mysql-5.7.36/vio/viossl.c +--- mysql-5.7.36.org/vio/viossl.c 2021-09-07 07:26:47.000000000 +0200 ++++ mysql-5.7.36/vio/viossl.c 2021-11-29 10:34:20.106597290 +0100 +@@ -137,7 +137,7 @@ static my_bool ssl_should_retry(Vio *vio + enum enum_vio_io_event *event, + unsigned long *ssl_errno_holder) + { +- int ssl_error; ++ int ssl_error, err_error; + SSL *ssl= vio->ssl_arg; + my_bool should_retry= TRUE; + +@@ -148,12 +148,23 @@ static my_bool ssl_should_retry(Vio *vio + switch (ssl_error) + { + case SSL_ERROR_WANT_READ: ++ err_error = ssl_error; // for backward compatibility. + *event= VIO_IO_EVENT_READ; + break; + case SSL_ERROR_WANT_WRITE: ++ err_error = ssl_error; // for backward compatibility. + *event= VIO_IO_EVENT_WRITE; + break; + default: ++ /* first save the top ERR error */ ++#ifdef HAVE_WOLFSSL ++ /* TODO: when wolfSSL issue 4240 is fixed (see bug 27855668) remove the ++ * "if" branch */ ++ err_error = ssl_error; ++#else ++ err_error = ERR_get_error(); ++#endif ++ /* now report all remaining errors on and/or clear the error stack */ + #ifndef NDEBUG /* Debug build */ + /* Note: the OpenSSL error queue gets cleared in report_errors(). */ + report_errors(ssl); +@@ -166,7 +177,7 @@ static my_bool ssl_should_retry(Vio *vio + break; + } + +- *ssl_errno_holder= ssl_error; ++ *ssl_errno_holder= err_error; + + return should_retry; + } -- 2.45.1