Merge 10.4 into 10.5
This commit is contained in:
commit
624dd71b94
123
.clang-format
123
.clang-format
@ -1,18 +1,117 @@
|
||||
SpaceBeforeAssignmentOperators: false
|
||||
SpaceAfterCStyleCast: true
|
||||
|
||||
BreakBeforeBraces: Custom
|
||||
---
|
||||
Language: Cpp
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllConstructorInitializersOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: MultiLine
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BraceWrapping:
|
||||
AfterClass: true
|
||||
AfterCaseLabel: true
|
||||
AfterClass: true
|
||||
AfterControlStatement: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
AfterEnum: true
|
||||
AfterFunction: true
|
||||
AfterNamespace: true
|
||||
AfterStruct: true
|
||||
AfterUnion: true
|
||||
AfterExternBlock: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
BeforeCatch: true
|
||||
BeforeElse: true
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Custom
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakInheritanceList: BeforeColon
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 79
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||
Priority: 3
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
IncludeIsMainRegex: '(Test)?$'
|
||||
IndentCaseLabels: false
|
||||
IndentPPDirectives: None
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
Language: Cpp
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyBreakTemplateDeclaration: 10
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Right
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: false
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: true
|
||||
SpaceBeforeInheritanceColon: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
StatementMacros:
|
||||
- Q_UNUSED
|
||||
- QT_REQUIRE_VERSION
|
||||
TabWidth: 8
|
||||
UseTab: Never
|
||||
...
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -83,6 +83,7 @@ make_dist.cmake
|
||||
mariadb-*.*.*.tar.gz
|
||||
mariadb-*.*.*/
|
||||
mysql-test/lib/My/SafeProcess/my_safe_process
|
||||
mysql-test/lib/My/SafeProcess/wsrep_check_version
|
||||
mysql-test/mtr
|
||||
mysql-test/mysql-test-run
|
||||
mysql-test/var
|
||||
|
@ -27,6 +27,9 @@ ENDIF()
|
||||
IF(POLICY CMP0054)
|
||||
CMAKE_POLICY(SET CMP0054 NEW)
|
||||
ENDIF()
|
||||
IF(POLICY CMP0075)
|
||||
CMAKE_POLICY(SET CMP0075 NEW)
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
||||
|
||||
|
@ -1034,7 +1034,7 @@ static COMMANDS commands[] = {
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysql", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysql", "mariadb-client", "client", "client-server", "client-mariadb", 0 };
|
||||
|
||||
static int embedded_server_arg_count= 0;
|
||||
static char *embedded_server_args[MAX_SERVER_ARGS];
|
||||
|
@ -173,6 +173,7 @@ static const char *load_default_groups[]=
|
||||
{
|
||||
"client", /* Read settings how to connect to server */
|
||||
"mysql_upgrade", /* Read special settings for mysql_upgrade */
|
||||
"mariadb-upgrade", /* Read special settings for mysql_upgrade */
|
||||
"client-server", /* Reads settings common between client & server */
|
||||
"client-mariadb", /* Read mariadb unique client settings */
|
||||
0
|
||||
|
@ -237,7 +237,8 @@ static struct my_option my_long_options[] =
|
||||
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqladmin", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqladmin", "mariadb-admin", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
|
||||
my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
|
@ -94,7 +94,8 @@ static const char *default_dbug_option = "d:t:o,/tmp/mysqlbinlog.trace";
|
||||
const char *current_dbug_option= default_dbug_option;
|
||||
#endif
|
||||
static const char *load_groups[]=
|
||||
{ "mysqlbinlog", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqlbinlog", "mariadb-binlog", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
|
||||
static void error(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||
static void warning(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||
@ -1545,6 +1546,7 @@ end:
|
||||
{
|
||||
my_fwrite(result_file, (const uchar *) tmp_str.str, tmp_str.length,
|
||||
MYF(MY_NABP));
|
||||
fflush(result_file);
|
||||
my_free(tmp_str.str);
|
||||
}
|
||||
}
|
||||
|
@ -222,7 +222,8 @@ static struct my_option my_long_options[] =
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlcheck", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqlcheck", "mariadb-check", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
|
||||
|
||||
static void print_version(void);
|
||||
|
@ -562,7 +562,8 @@ static struct my_option my_long_options[] =
|
||||
};
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqldump", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqldump", "mariadb-dump", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
|
||||
static void maybe_exit(int error);
|
||||
static void die(int error, const char* reason, ...);
|
||||
@ -2525,7 +2526,9 @@ static uint dump_routines_for_db(char *db)
|
||||
|
||||
char db_cl_name[MY_CS_NAME_SIZE];
|
||||
int db_cl_altered= FALSE;
|
||||
|
||||
// before 10.3 packages are not supported
|
||||
uint upper_bound= mysql_get_server_version(mysql) >= 100300 ?
|
||||
array_elements(routine_type) : 2;
|
||||
DBUG_ENTER("dump_routines_for_db");
|
||||
DBUG_PRINT("enter", ("db: '%s'", db));
|
||||
|
||||
@ -2555,7 +2558,7 @@ static uint dump_routines_for_db(char *db)
|
||||
fputs("\t<routines>\n", sql_file);
|
||||
|
||||
/* 0, retrieve and dump functions, 1, procedures, etc. */
|
||||
for (i= 0; i < array_elements(routine_type); i++)
|
||||
for (i= 0; i < upper_bound; i++)
|
||||
{
|
||||
my_snprintf(query_buff, sizeof(query_buff),
|
||||
"SHOW %s STATUS WHERE Db = '%s'",
|
||||
|
@ -187,7 +187,8 @@ static struct my_option my_long_options[] =
|
||||
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlimport","client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqlimport", "mariadb-import", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
|
||||
|
||||
static void print_version(void)
|
||||
|
@ -56,7 +56,8 @@ static void print_res_top(MYSQL_RES *result);
|
||||
static void print_res_row(MYSQL_RES *result,MYSQL_ROW cur);
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlshow","client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqlshow", "mariadb-show", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
static char * opt_mysql_unix_port=0;
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@ -177,7 +177,8 @@ static int get_options(int *argc,char ***argv);
|
||||
static uint opt_mysql_port= 0;
|
||||
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqlslap", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqlslap", "mariadb-slap", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
|
||||
typedef struct statement statement;
|
||||
|
||||
|
@ -136,7 +136,8 @@ static my_bool server_initialized= 0;
|
||||
static my_bool is_windows= 0;
|
||||
static char **default_argv;
|
||||
static const char *load_default_groups[]=
|
||||
{ "mysqltest", "client", "client-server", "client-mariadb", 0 };
|
||||
{ "mysqltest", "mariadb-test", "client", "client-server", "client-mariadb",
|
||||
0 };
|
||||
static char line_buffer[MAX_DELIMITER_LENGTH], *line_buffer_pos= line_buffer;
|
||||
|
||||
/* Info on properties that can be set with --enable_X and --disable_X */
|
||||
@ -4636,8 +4637,16 @@ void do_perl(struct st_command *command)
|
||||
|
||||
str_to_file(temp_file_path, ds_script.str, ds_script.length);
|
||||
|
||||
/* Use the same perl executable as the one that runs mysql-test-run.pl */
|
||||
const char *mtr_perl=getenv("MTR_PERL");
|
||||
if (!mtr_perl)
|
||||
mtr_perl="perl";
|
||||
|
||||
/* Format the "perl <filename>" command */
|
||||
my_snprintf(buf, sizeof(buf), "perl %s", temp_file_path);
|
||||
if (strchr(mtr_perl, ' '))
|
||||
my_snprintf(buf, sizeof(buf), "\"%s\" %s", mtr_perl, temp_file_path);
|
||||
else
|
||||
my_snprintf(buf, sizeof(buf), "%s %s", mtr_perl, temp_file_path);
|
||||
|
||||
if (!(res_file= my_popen(buf, "r")))
|
||||
{
|
||||
|
@ -45,17 +45,8 @@ SET(CPACK_RPM_PACKAGE_LICENSE "GPLv2")
|
||||
SET(CPACK_RPM_PACKAGE_RELOCATABLE FALSE)
|
||||
SET(CPACK_PACKAGE_RELOCATABLE FALSE)
|
||||
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
|
||||
SET(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_SUMMARY})
|
||||
SET(CPACK_RPM_PACKAGE_URL ${CPACK_PACKAGE_URL})
|
||||
SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_SUMMARY}
|
||||
|
||||
It is GPL v2 licensed, which means you can use the it free of charge under the
|
||||
conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
|
||||
|
||||
MariaDB documentation can be found at https://mariadb.com/kb
|
||||
MariaDB bug reports should be submitted through https://jira.mariadb.org
|
||||
|
||||
")
|
||||
SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}")
|
||||
|
||||
SET(CPACK_RPM_shared_PACKAGE_VENDOR "MariaDB Corporation Ab")
|
||||
SET(CPACK_RPM_shared_PACKAGE_LICENSE "LGPLv2.1")
|
||||
|
@ -11,3 +11,9 @@ ELSE()
|
||||
SET(__msg1_${id} ${hash} CACHE INTERNAL "")
|
||||
ENDFUNCTION()
|
||||
ENDIF()
|
||||
|
||||
MACRO(SET_IF_UNSET VAR VAL)
|
||||
IF(NOT DEFINED ${VAR})
|
||||
SET(${VAR} ${VAL})
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
@ -75,24 +75,27 @@ string(TOUPPER ${SERVER_MATURITY} SERVER_MATURITY)
|
||||
SET(SERVER_MATURITY_LEVEL MariaDB_PLUGIN_MATURITY_${SERVER_MATURITY})
|
||||
|
||||
SET(MYSQL_TCP_PORT_DEFAULT 0)
|
||||
IF(NOT MYSQL_TCP_PORT)
|
||||
SET(MYSQL_TCP_PORT 3306)
|
||||
ENDIF()
|
||||
SET_IF_UNSET(MYSQL_TCP_PORT 3306)
|
||||
|
||||
IF(NOT COMPILATION_COMMENT)
|
||||
SET(COMPILATION_COMMENT "Source distribution")
|
||||
ENDIF()
|
||||
SET_IF_UNSET(COMPILATION_COMMENT "Source distribution")
|
||||
|
||||
INCLUDE(package_name)
|
||||
IF(NOT CPACK_PACKAGE_FILE_NAME)
|
||||
GET_PACKAGE_FILE_NAME(CPACK_PACKAGE_FILE_NAME)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME)
|
||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mariadb-${VERSION}")
|
||||
ENDIF()
|
||||
SET(CPACK_PACKAGE_CONTACT "MariaDB Developers <maria-developers@lists.launchpad.net>")
|
||||
SET(CPACK_PACKAGE_VENDOR "MariaDB Foundation")
|
||||
SET_IF_UNSET(CPACK_SOURCE_PACKAGE_FILE_NAME "mariadb-${VERSION}")
|
||||
SET_IF_UNSET(CPACK_PACKAGE_CONTACT "MariaDB Developers <maria-developers@lists.launchpad.net>")
|
||||
SET_IF_UNSET(CPACK_PACKAGE_VENDOR "MariaDB Foundation")
|
||||
SET_IF_UNSET(CPACK_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}
|
||||
|
||||
It is GPL v2 licensed, which means you can use the it free of charge under the
|
||||
conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
|
||||
|
||||
MariaDB documentation can be found at https://mariadb.com/kb
|
||||
MariaDB bug reports should be submitted through https://jira.mariadb.org
|
||||
|
||||
")
|
||||
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
|
||||
# Definitions for windows version resources
|
||||
|
@ -70,7 +70,7 @@ CHECK_C_SOURCE_RUNS(
|
||||
|
||||
|
||||
# Check is special processor flag needs to be set on older GCC
|
||||
#that defaults to v8 sparc . Code here is taken from my_rdtsc.c
|
||||
#that defaults to v8 sparc . Code here is taken from my_rdtsc.h
|
||||
IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SIZEOF_VOID_P EQUAL 4
|
||||
AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
|
||||
SET(SOURCE
|
||||
|
@ -25,7 +25,6 @@ SET(HAVE_ACCESS 1 CACHE INTERNAL "")
|
||||
SET(HAVE_ALARM CACHE INTERNAL "")
|
||||
SET(HAVE_ALLOCA_H CACHE INTERNAL "")
|
||||
SET(HAVE_ARPA_INET_H CACHE INTERNAL "")
|
||||
SET(HAVE_ASM_MSR_H CACHE INTERNAL "")
|
||||
SET(HAVE_BACKTRACE CACHE INTERNAL "")
|
||||
SET(HAVE_BACKTRACE_SYMBOLS CACHE INTERNAL "")
|
||||
SET(HAVE_BACKTRACE_SYMBOLS_FD CACHE INTERNAL "")
|
||||
@ -132,7 +131,6 @@ SET(HAVE_PTHREAD_YIELD_NP CACHE INTERNAL "")
|
||||
SET(HAVE_PTHREAD_YIELD_ZERO_ARG CACHE INTERNAL "")
|
||||
SET(HAVE_PUTENV 1 CACHE INTERNAL "")
|
||||
SET(HAVE_PWD_H CACHE INTERNAL "")
|
||||
SET(HAVE_RDTSCLL CACHE INTERNAL "")
|
||||
SET(HAVE_READDIR_R CACHE INTERNAL "")
|
||||
SET(HAVE_READLINK CACHE INTERNAL "")
|
||||
SET(HAVE_READ_REAL_TIME CACHE INTERNAL "")
|
||||
@ -301,7 +299,6 @@ SET(HAVE_SYS_UTSNAME_H CACHE INTERNAL "")
|
||||
SET(HAVE_PTHREAD_ATTR_GETGUARDSIZE CACHE INTERNAL "")
|
||||
SET(HAVE_SOCKPEERCRED CACHE INTERNAL "")
|
||||
SET(HAVE_ABI_CXA_DEMANGLE CACHE INTERNAL "")
|
||||
SET(HAVE_GCC_ATOMIC_BUILTINS CACHE INTERNAL "")
|
||||
SET(HAVE_GCC_C11_ATOMICS CACHE INTERNAL "")
|
||||
SET(HAVE_VISIBILITY_HIDDEN CACHE INTERNAL "")
|
||||
ENDIF(MSVC)
|
||||
|
@ -28,13 +28,9 @@ MACRO(CHECK_SYSTEMD)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(HAVE_DLOPEN)
|
||||
SET(LIBSYSTEMD ${LIBSYSTEMD_LIBRARIES})
|
||||
#SET(CMAKE_REQUIRED_FLAGS ${LIBSYSTEMD_CFLAGS})
|
||||
SET(MYSQLD_LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${LIBSYSTEMD_LDFLAGS}")
|
||||
SET(LIBSYSTEMD ${LIBSYSTEMD_LDFLAGS} ${LIBSYSTEMD_LIBRARIES})
|
||||
ELSE()
|
||||
SET(LIBSYSTEMD ${LIBSYSTEMD_STATIC_LIBRARIES})
|
||||
#SET(CMAKE_REQUIRED_FLAGS ${LIBSYSTEMD_STATIC_CFLAGS})
|
||||
SET(MYSQLD_LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${LIBSYSTEMD_STATIC_LDFLAGS}")
|
||||
SET(LIBSYSTEMD ${LIBSYSTEMD_STATIC_LDFLAGS} ${LIBSYSTEMD_STATIC_LIBRARIES})
|
||||
ENDIF()
|
||||
ELSE()
|
||||
SET(LIBSYSTEMD systemd)
|
||||
|
@ -21,7 +21,6 @@
|
||||
#cmakedefine _GNU_SOURCE 1
|
||||
#cmakedefine HAVE_ALLOCA_H 1
|
||||
#cmakedefine HAVE_ARPA_INET_H 1
|
||||
#cmakedefine HAVE_ASM_MSR_H 1
|
||||
#cmakedefine HAVE_ASM_TERMBITS_H 1
|
||||
#cmakedefine HAVE_CRYPT_H 1
|
||||
#cmakedefine HAVE_CURSES_H 1
|
||||
@ -191,9 +190,6 @@
|
||||
#cmakedefine HAVE_POSIX_FALLOCATE 1
|
||||
#cmakedefine HAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE 1
|
||||
#cmakedefine HAVE_PREAD 1
|
||||
#cmakedefine HAVE_PAUSE_INSTRUCTION 1
|
||||
#cmakedefine HAVE_FAKE_PAUSE_INSTRUCTION 1
|
||||
#cmakedefine HAVE_RDTSCLL 1
|
||||
#cmakedefine HAVE_READ_REAL_TIME 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_CREATE 1
|
||||
#cmakedefine HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
|
||||
@ -389,7 +385,6 @@
|
||||
|
||||
#cmakedefine HAVE_SOLARIS_STYLE_GETHOST 1
|
||||
|
||||
#cmakedefine HAVE_GCC_ATOMIC_BUILTINS 1
|
||||
#cmakedefine HAVE_GCC_C11_ATOMICS 1
|
||||
#cmakedefine HAVE_SOLARIS_ATOMIC 1
|
||||
#cmakedefine HAVE_DECL_SHM_HUGETLB 1
|
||||
|
@ -437,8 +437,6 @@ SET(CMAKE_REQUIRED_FLAGS)
|
||||
CHECK_INCLUDE_FILES(time.h HAVE_TIME_H)
|
||||
CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_TIME_H)
|
||||
CHECK_INCLUDE_FILES(sys/times.h HAVE_SYS_TIMES_H)
|
||||
CHECK_INCLUDE_FILES(asm/msr.h HAVE_ASM_MSR_H)
|
||||
#msr.h has rdtscll()
|
||||
|
||||
CHECK_INCLUDE_FILES(ia64intrin.h HAVE_IA64INTRIN_H)
|
||||
|
||||
@ -453,9 +451,6 @@ CHECK_FUNCTION_EXISTS(ftime HAVE_FTIME)
|
||||
CHECK_FUNCTION_EXISTS(time HAVE_TIME)
|
||||
# We can use time() on Macintosh if there is no ftime().
|
||||
|
||||
CHECK_FUNCTION_EXISTS(rdtscll HAVE_RDTSCLL)
|
||||
# I doubt that we'll ever reach the check for this.
|
||||
|
||||
|
||||
#
|
||||
# Tests for symbols
|
||||
@ -753,32 +748,6 @@ IF(NOT C_HAS_inline)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CMAKE_CROSSCOMPILING AND NOT MSVC)
|
||||
STRING(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} processor)
|
||||
IF(processor MATCHES "86" OR processor MATCHES "amd64" OR processor MATCHES "x64")
|
||||
#Check for x86 PAUSE instruction
|
||||
# We have to actually try running the test program, because of a bug
|
||||
# in Solaris on x86_64, where it wrongly reports that PAUSE is not
|
||||
# supported when trying to run an application. See
|
||||
# http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684
|
||||
CHECK_C_SOURCE_RUNS("
|
||||
int main()
|
||||
{
|
||||
__asm__ __volatile__ (\"pause\");
|
||||
return 0;
|
||||
}" HAVE_PAUSE_INSTRUCTION)
|
||||
ENDIF()
|
||||
IF (NOT HAVE_PAUSE_INSTRUCTION)
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
int main()
|
||||
{
|
||||
__asm__ __volatile__ (\"rep; nop\");
|
||||
return 0;
|
||||
}
|
||||
" HAVE_FAKE_PAUSE_INSTRUCTION)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CHECK_SYMBOL_EXISTS(tcgetattr "termios.h" HAVE_TCGETATTR 1)
|
||||
|
||||
#
|
||||
@ -890,30 +859,6 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
|
||||
MARK_AS_ADVANCED(NO_ALARM)
|
||||
|
||||
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
int main()
|
||||
{
|
||||
int foo= -10; int bar= 10;
|
||||
long long int foo64= -10; long long int bar64= 10;
|
||||
if (!__sync_fetch_and_add(&foo, bar) || foo)
|
||||
return -1;
|
||||
bar= __sync_lock_test_and_set(&foo, bar);
|
||||
if (bar || foo != 10)
|
||||
return -1;
|
||||
bar= __sync_val_compare_and_swap(&bar, foo, 15);
|
||||
if (bar)
|
||||
return -1;
|
||||
if (!__sync_fetch_and_add(&foo64, bar64) || foo64)
|
||||
return -1;
|
||||
bar64= __sync_lock_test_and_set(&foo64, bar64);
|
||||
if (bar64 || foo64 != 10)
|
||||
return -1;
|
||||
bar64= __sync_val_compare_and_swap(&bar64, foo, 15);
|
||||
if (bar64)
|
||||
return -1;
|
||||
return 0;
|
||||
}"
|
||||
HAVE_GCC_ATOMIC_BUILTINS)
|
||||
CHECK_CXX_SOURCE_COMPILES("
|
||||
int main()
|
||||
{
|
||||
|
2
debian/control
vendored
2
debian/control
vendored
@ -234,7 +234,7 @@ Description: MariaDB database common files (e.g. /etc/mysql/conf.d/mariadb.cnf)
|
||||
|
||||
Package: mariadb-client-core-10.5
|
||||
Architecture: any
|
||||
Depends: mariadb-common (>= ${source:Version}),
|
||||
Depends: mariadb-common (>= ${source:Version}), libmariadb3,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Conflicts: mariadb-client-10.0,
|
||||
|
2
debian/mariadb-server-10.5.preinst
vendored
2
debian/mariadb-server-10.5.preinst
vendored
@ -22,7 +22,7 @@ mysql_upgradedir=/var/lib/mysql-upgrade
|
||||
stop_server() {
|
||||
# Return immediately if there are no mysql processes running
|
||||
# as there is no point in trying to shutdown in that case.
|
||||
if ! pgrep mysqld > /dev/null; then return; fi
|
||||
if ! pgrep -x mysqld > /dev/null; then return; fi
|
||||
|
||||
set +e
|
||||
systemctl stop mysql
|
||||
|
@ -75,6 +75,8 @@ ulong srv_page_size;
|
||||
ulong srv_page_size_shift;
|
||||
/* Current page number (0 based). */
|
||||
unsigned long long cur_page_num;
|
||||
/* Current space. */
|
||||
unsigned long long cur_space;
|
||||
/* Skip the checksum verification. */
|
||||
static bool no_check;
|
||||
/* Enabled for strict checksum verification. */
|
||||
@ -282,7 +284,9 @@ static void init_page_size(const byte* buf)
|
||||
+ FSP_SPACE_FLAGS);
|
||||
|
||||
if (fil_space_t::full_crc32(flags)) {
|
||||
srv_page_size = fil_space_t::logical_size(flags);
|
||||
const ulong ssize = FSP_FLAGS_FCRC32_GET_PAGE_SSIZE(flags);
|
||||
srv_page_size_shift = UNIV_ZIP_SIZE_SHIFT_MIN - 1 + ssize;
|
||||
srv_page_size = 512U << ssize;
|
||||
physical_page_size = srv_page_size;
|
||||
return;
|
||||
}
|
||||
@ -424,6 +428,27 @@ ulint read_file(
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/** Check whether the page contains all zeroes.
|
||||
@param[in] buf page
|
||||
@param[in] size physical size of the page
|
||||
@return true if the page is all zeroes; else false */
|
||||
static bool is_page_all_zeroes(
|
||||
byte* buf,
|
||||
ulint size)
|
||||
{
|
||||
/* On pages that are not all zero, the page number
|
||||
must match. */
|
||||
const ulint* p = reinterpret_cast<const ulint*>(buf);
|
||||
const ulint* const end = reinterpret_cast<const ulint*>(buf + size);
|
||||
do {
|
||||
if (*p++) {
|
||||
return false;
|
||||
}
|
||||
} while (p != end);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Check if page is corrupted or not.
|
||||
@param[in] buf page frame
|
||||
@param[in] is_encrypted true if page0 contained cryp_data
|
||||
@ -451,6 +476,26 @@ is_page_corrupted(
|
||||
ulint is_compressed = fil_space_t::is_compressed(flags);
|
||||
const bool use_full_crc32 = fil_space_t::full_crc32(flags);
|
||||
|
||||
if (mach_read_from_4(buf + FIL_PAGE_OFFSET) != cur_page_num
|
||||
|| (space_id != cur_space
|
||||
&& (!use_full_crc32 || (!is_encrypted && !is_compressed)))) {
|
||||
/* On pages that are not all zero, the page number
|
||||
must match. */
|
||||
if (is_page_all_zeroes(buf,
|
||||
fil_space_t::physical_size(flags))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_log_enabled) {
|
||||
fprintf(log_file,
|
||||
"page id mismatch space::" ULINTPF
|
||||
" page::%llu \n",
|
||||
space_id, cur_page_num);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* We can't trust only a page type, thus we take account
|
||||
also fsp_flags or crypt_data on page 0 */
|
||||
if ((page_type == FIL_PAGE_PAGE_COMPRESSED && is_compressed) ||
|
||||
@ -1539,9 +1584,6 @@ int main(
|
||||
FILE* fil_page_type = NULL;
|
||||
fpos_t pos;
|
||||
|
||||
/* Use to check the space id of given file. If space_id is zero,
|
||||
then check whether page is doublewrite buffer.*/
|
||||
ulint space_id = 0UL;
|
||||
/* enable when space_id of given file is zero. */
|
||||
bool is_system_tablespace = false;
|
||||
|
||||
@ -1663,9 +1705,8 @@ int main(
|
||||
/* enable variable is_system_tablespace when space_id of given
|
||||
file is zero. Use to skip the checksum verification and rewrite
|
||||
for doublewrite pages. */
|
||||
is_system_tablespace = (!memcmp(&space_id, buf +
|
||||
FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, 4))
|
||||
? true : false;
|
||||
cur_space = mach_read_from_4(buf + FIL_PAGE_SPACE_ID);
|
||||
cur_page_num = mach_read_from_4(buf + FIL_PAGE_OFFSET);
|
||||
|
||||
/* Determine page size, zip_size and page compression
|
||||
from fsp_flags and encryption metadata from page 0 */
|
||||
@ -1673,7 +1714,9 @@ int main(
|
||||
|
||||
ulint flags = mach_read_from_4(FSP_HEADER_OFFSET + FSP_SPACE_FLAGS + buf);
|
||||
|
||||
if (physical_page_size > UNIV_ZIP_SIZE_MIN) {
|
||||
if (physical_page_size == UNIV_ZIP_SIZE_MIN) {
|
||||
partial_page_read = false;
|
||||
} else {
|
||||
/* Read rest of the page 0 to determine crypt_data */
|
||||
bytes = read_file(buf, partial_page_read, physical_page_size, fil_in);
|
||||
if (bytes != physical_page_size) {
|
||||
@ -1688,6 +1731,7 @@ int main(
|
||||
partial_page_read = false;
|
||||
}
|
||||
|
||||
|
||||
/* Now that we have full page 0 in buffer, check encryption */
|
||||
bool is_encrypted = check_encryption(filename, buf);
|
||||
|
||||
@ -1764,6 +1808,36 @@ int main(
|
||||
}
|
||||
}
|
||||
|
||||
off_t cur_offset = 0;
|
||||
/* Find the first non all-zero page and fetch the
|
||||
space id from there. */
|
||||
while (is_page_all_zeroes(buf, physical_page_size)) {
|
||||
bytes = ulong(read_file(
|
||||
buf, false, physical_page_size,
|
||||
fil_in));
|
||||
|
||||
if (feof(fil_in)) {
|
||||
fprintf(stderr, "All are "
|
||||
"zero-filled pages.");
|
||||
goto my_exit;
|
||||
}
|
||||
|
||||
cur_offset++;
|
||||
}
|
||||
|
||||
cur_space = mach_read_from_4(buf + FIL_PAGE_SPACE_ID);
|
||||
is_system_tablespace = (cur_space == 0);
|
||||
|
||||
if (cur_offset > 0) {
|
||||
/* Re-read the non-zero page to check the
|
||||
checksum. So move the file pointer to
|
||||
previous position and reset the page number too. */
|
||||
cur_page_num = mach_read_from_4(buf + FIL_PAGE_OFFSET);
|
||||
if (!start_page) {
|
||||
goto first_non_zero;
|
||||
}
|
||||
}
|
||||
|
||||
/* seek to the necessary position */
|
||||
if (start_page) {
|
||||
if (!read_from_stdin) {
|
||||
@ -1856,6 +1930,7 @@ int main(
|
||||
goto my_exit;
|
||||
}
|
||||
|
||||
first_non_zero:
|
||||
if (is_system_tablespace) {
|
||||
/* enable when page is double write buffer.*/
|
||||
skip_page = is_page_doublewritebuffer(buf);
|
||||
|
@ -3798,7 +3798,7 @@ open_or_create_log_file(
|
||||
fil_space_t* space,
|
||||
ulint i) /*!< in: log file number in group */
|
||||
{
|
||||
char name[10000];
|
||||
char name[FN_REFLEN];
|
||||
ulint dirnamelen;
|
||||
|
||||
os_normalize_path(srv_log_group_home_dir);
|
||||
|
@ -20,7 +20,7 @@
|
||||
#define WOLFSSL_AES_COUNTER
|
||||
#define NO_WOLFSSL_STUB
|
||||
#define OPENSSL_ALL
|
||||
|
||||
#define WOLFSSL_ALLOW_TLSV10
|
||||
|
||||
#cmakedefine WOLFSSL_AESNI
|
||||
#cmakedefine USE_FAST_MATH
|
||||
|
@ -1,106 +0,0 @@
|
||||
#ifndef GCC_SYNC_INCLUDED
|
||||
#define GCC_SYNC_INCLUDED
|
||||
|
||||
/* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
/* Old GCC __sync builtins introduced in GCC 4.1 */
|
||||
|
||||
static inline int my_atomic_cas32(int32 volatile *a, int32 *cmp, int32 set)
|
||||
{
|
||||
int32 cmp_val= *cmp;
|
||||
int32 sav= __sync_val_compare_and_swap(a, cmp_val, set);
|
||||
int ret= (sav == cmp_val);
|
||||
if (!ret)
|
||||
*cmp = sav;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int my_atomic_cas64(int64 volatile *a, int64 *cmp, int64 set)
|
||||
{
|
||||
int64 cmp_val= *cmp;
|
||||
int64 sav= __sync_val_compare_and_swap(a, cmp_val, set);
|
||||
int ret= (sav == cmp_val);
|
||||
if (!ret)
|
||||
*cmp = sav;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int my_atomic_casptr(void * volatile *a, void **cmp, void *set)
|
||||
{
|
||||
void *cmp_val= *cmp;
|
||||
void *sav= __sync_val_compare_and_swap(a, cmp_val, set);
|
||||
int ret= (sav == cmp_val);
|
||||
if (!ret)
|
||||
*cmp = sav;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int32 my_atomic_add32(int32 volatile *a, int32 v)
|
||||
{
|
||||
return __sync_fetch_and_add(a, v);
|
||||
}
|
||||
|
||||
static inline int64 my_atomic_add64(int64 volatile *a, int64 v)
|
||||
{
|
||||
return __sync_fetch_and_add(a, v);
|
||||
}
|
||||
|
||||
static inline int32 my_atomic_fas32(int32 volatile *a, int32 v)
|
||||
{
|
||||
return __sync_lock_test_and_set(a, v);
|
||||
}
|
||||
|
||||
static inline int64 my_atomic_fas64(int64 volatile *a, int64 v)
|
||||
{
|
||||
return __sync_lock_test_and_set(a, v);
|
||||
}
|
||||
|
||||
static inline void * my_atomic_fasptr(void * volatile *a, void * v)
|
||||
{
|
||||
return __sync_lock_test_and_set(a, v);
|
||||
}
|
||||
|
||||
static inline int32 my_atomic_load32(int32 volatile *a)
|
||||
{
|
||||
return __sync_fetch_and_or(a, 0);
|
||||
}
|
||||
|
||||
static inline int64 my_atomic_load64(int64 volatile *a)
|
||||
{
|
||||
return __sync_fetch_and_or(a, 0);
|
||||
}
|
||||
|
||||
static inline void* my_atomic_loadptr(void * volatile *a)
|
||||
{
|
||||
return __sync_fetch_and_or(a, 0);
|
||||
}
|
||||
|
||||
static inline void my_atomic_store32(int32 volatile *a, int32 v)
|
||||
{
|
||||
(void) __sync_lock_test_and_set(a, v);
|
||||
}
|
||||
|
||||
static inline void my_atomic_store64(int64 volatile *a, int64 v)
|
||||
{
|
||||
(void) __sync_lock_test_and_set(a, v);
|
||||
}
|
||||
|
||||
static inline void my_atomic_storeptr(void * volatile *a, void *v)
|
||||
{
|
||||
(void) __sync_lock_test_and_set(a, v);
|
||||
}
|
||||
|
||||
#endif /* GCC_SYNC_INCLUDED */
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (C) 2006-2008 MySQL AB, 2008-2009 Sun Microsystems, Inc.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
Copyright (c) 2009, 2019, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -308,7 +308,7 @@ extern int maria_rsame_with_pos(MARIA_HA *file, uchar *record,
|
||||
int inx, MARIA_RECORD_POS pos);
|
||||
extern int maria_update(MARIA_HA *file, const uchar *old,
|
||||
const uchar *new_record);
|
||||
extern int maria_write(MARIA_HA *file, uchar *buff);
|
||||
extern int maria_write(MARIA_HA *file, const uchar *buff);
|
||||
extern MARIA_RECORD_POS maria_position(MARIA_HA *file);
|
||||
extern int maria_status(MARIA_HA *info, MARIA_INFO *x, uint flag);
|
||||
extern int maria_lock_database(MARIA_HA *file, int lock_type);
|
||||
|
@ -112,8 +112,6 @@
|
||||
#include "atomic/solaris.h"
|
||||
#elif defined(HAVE_GCC_C11_ATOMICS)
|
||||
#include "atomic/gcc_builtins.h"
|
||||
#elif defined(HAVE_GCC_ATOMIC_BUILTINS)
|
||||
#include "atomic/gcc_sync.h"
|
||||
#endif
|
||||
|
||||
#if SIZEOF_LONG == 4
|
||||
|
@ -46,10 +46,20 @@
|
||||
#define HMT_high()
|
||||
#endif
|
||||
|
||||
#if defined __i386__ || defined __x86_64__ || defined _WIN32
|
||||
# define HAVE_PAUSE_INSTRUCTION /* added in Intel Pentium 4 */
|
||||
#endif
|
||||
|
||||
static inline void MY_RELAX_CPU(void)
|
||||
{
|
||||
#ifdef HAVE_PAUSE_INSTRUCTION
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
In the Win32 API, the x86 PAUSE instruction is executed by calling
|
||||
the YieldProcessor macro defined in WinNT.h. It is a CPU architecture-
|
||||
independent way by using YieldProcessor.
|
||||
*/
|
||||
YieldProcessor();
|
||||
#elif defined HAVE_PAUSE_INSTRUCTION
|
||||
/*
|
||||
According to the gcc info page, asm volatile means that the
|
||||
instruction has important side-effects and must not be removed.
|
||||
@ -61,16 +71,6 @@ static inline void MY_RELAX_CPU(void)
|
||||
#else
|
||||
__asm__ __volatile__ ("pause");
|
||||
#endif
|
||||
|
||||
#elif defined(HAVE_FAKE_PAUSE_INSTRUCTION)
|
||||
__asm__ __volatile__ ("rep; nop");
|
||||
#elif defined _WIN32
|
||||
/*
|
||||
In the Win32 API, the x86 PAUSE instruction is executed by calling
|
||||
the YieldProcessor macro defined in WinNT.h. It is a CPU architecture-
|
||||
independent way by using YieldProcessor.
|
||||
*/
|
||||
YieldProcessor();
|
||||
#elif defined(_ARCH_PWR8)
|
||||
__ppc_get_timebase();
|
||||
#else
|
||||
@ -81,6 +81,20 @@ static inline void MY_RELAX_CPU(void)
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_PAUSE_INSTRUCTION
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
extern unsigned my_cpu_relax_multiplier;
|
||||
void my_cpu_init(void);
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
#else
|
||||
# define my_cpu_relax_multiplier 200
|
||||
# define my_cpu_init() /* nothing */
|
||||
#endif
|
||||
|
||||
/*
|
||||
LF_BACKOFF should be used to improve performance on hyperthreaded CPUs. Intel
|
||||
recommends to use it in spin loops also on non-HT machines to reduce power
|
||||
@ -94,9 +108,23 @@ static inline void MY_RELAX_CPU(void)
|
||||
|
||||
static inline int LF_BACKOFF(void)
|
||||
{
|
||||
int i;
|
||||
for (i= 0; i < 200; i++)
|
||||
unsigned i= my_cpu_relax_multiplier;
|
||||
while (i--)
|
||||
MY_RELAX_CPU();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
Run a delay loop while waiting for a shared resource to be released.
|
||||
@param delay originally, roughly microseconds on 100 MHz Intel Pentium
|
||||
*/
|
||||
static inline void ut_delay(unsigned delay)
|
||||
{
|
||||
unsigned i= my_cpu_relax_multiplier / 4 * delay;
|
||||
HMT_low();
|
||||
while (i--)
|
||||
MY_RELAX_CPU();
|
||||
HMT_medium();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2019, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -23,6 +23,20 @@
|
||||
#ifndef MY_RDTSC_H
|
||||
#define MY_RDTSC_H
|
||||
|
||||
# ifndef __has_builtin
|
||||
# define __has_builtin(x) 0 /* Compatibility with non-clang compilers */
|
||||
# endif
|
||||
# if __has_builtin(__builtin_readcyclecounter)
|
||||
# elif defined _WIN32
|
||||
# include <intrin.h>
|
||||
# elif defined __i386__ || defined __x86_64__
|
||||
# include <x86intrin.h>
|
||||
# elif defined(__INTEL_COMPILER) && defined(__ia64__) && defined(HAVE_IA64INTRIN_H)
|
||||
# include <ia64intrin.h>
|
||||
# elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME)
|
||||
# include <sys/times.h>
|
||||
# endif
|
||||
|
||||
/**
|
||||
Characteristics of a timer.
|
||||
*/
|
||||
@ -62,12 +76,104 @@ C_MODE_START
|
||||
|
||||
/**
|
||||
A cycle timer.
|
||||
|
||||
On clang, we use __builtin_readcyclecounter().
|
||||
On other compilers:
|
||||
|
||||
On IA-32 and AMD64, we use the RDTSC instruction.
|
||||
On IA-64, we read the ar.itc register.
|
||||
On SPARC, we read the tick register.
|
||||
On POWER, we read the Time Base Register (which is not really a cycle count
|
||||
but a separate counter with less than nanosecond resolution).
|
||||
On IBM S/390 System z we use the STCK instruction.
|
||||
On ARM, we probably should use the Generic Timer, but should figure out
|
||||
how to ensure that it can be accessed.
|
||||
|
||||
Sadly, we have nothing for the Digital Alpha, MIPS, Motorola m68k,
|
||||
HP PA-RISC or other non-mainstream (or obsolete) processors.
|
||||
|
||||
TODO: consider C++11 std::chrono::high_resolution_clock.
|
||||
|
||||
We fall back to gethrtime() where available.
|
||||
|
||||
On the platforms that do not have a CYCLE timer,
|
||||
"wait" events are initialized to use NANOSECOND instead of CYCLE
|
||||
during performance_schema initialization (at the server startup).
|
||||
|
||||
Linux performance monitor (see "man perf_event_open") can
|
||||
provide cycle counter on the platforms that do not have
|
||||
other kinds of cycle counters. But we don't use it so far.
|
||||
|
||||
ARM notes
|
||||
---------
|
||||
During tests on ARMv7 Debian, perf_even_open() based cycle counter provided
|
||||
too low frequency with too high overhead:
|
||||
MariaDB [performance_schema]> SELECT * FROM performance_timers;
|
||||
+-------------+-----------------+------------------+----------------+
|
||||
| TIMER_NAME | TIMER_FREQUENCY | TIMER_RESOLUTION | TIMER_OVERHEAD |
|
||||
+-------------+-----------------+------------------+----------------+
|
||||
| CYCLE | 689368159 | 1 | 970 |
|
||||
| NANOSECOND | 1000000000 | 1 | 308 |
|
||||
| MICROSECOND | 1000000 | 1 | 417 |
|
||||
| MILLISECOND | 1000 | 1000 | 407 |
|
||||
| TICK | 127 | 1 | 612 |
|
||||
+-------------+-----------------+------------------+----------------+
|
||||
Therefore, it was decided not to use perf_even_open() on ARM
|
||||
(i.e. go without CYCLE and have "wait" events use NANOSECOND by default).
|
||||
|
||||
@return the current timer value, in cycles.
|
||||
*/
|
||||
ulonglong my_timer_cycles(void);
|
||||
static inline ulonglong my_timer_cycles(void)
|
||||
{
|
||||
# if __has_builtin(__builtin_readcyclecounter)
|
||||
return __builtin_readcyclecounter();
|
||||
# elif defined _WIN32 || defined __i386__ || defined __x86_64__
|
||||
return __rdtsc();
|
||||
# elif defined(__INTEL_COMPILER) && defined(__ia64__) && defined(HAVE_IA64INTRIN_H)
|
||||
return (ulonglong) __getReg(_IA64_REG_AR_ITC); /* (3116) */
|
||||
#elif defined(__GNUC__) && defined(__ia64__)
|
||||
{
|
||||
ulonglong result;
|
||||
__asm __volatile__ ("mov %0=ar.itc" : "=r" (result));
|
||||
return result;
|
||||
}
|
||||
#elif defined __GNUC__ && defined __powerpc__
|
||||
return __builtin_ppc_get_timebase();
|
||||
#elif defined(__GNUC__) && defined(__sparcv9) && defined(_LP64)
|
||||
{
|
||||
ulonglong result;
|
||||
__asm __volatile__ ("rd %%tick,%0" : "=r" (result));
|
||||
return result;
|
||||
}
|
||||
#elif defined(__GNUC__) && defined(__sparc__) && !defined(_LP64)
|
||||
{
|
||||
union {
|
||||
ulonglong wholeresult;
|
||||
struct {
|
||||
ulong high;
|
||||
ulong low;
|
||||
} splitresult;
|
||||
} result;
|
||||
__asm __volatile__ ("rd %%tick,%1; srlx %1,32,%0" : "=r" (result.splitresult.high), "=r" (result.splitresult.low));
|
||||
return result.wholeresult;
|
||||
}
|
||||
#elif defined(__GNUC__) && defined(__s390__)
|
||||
/* covers both s390 and s390x */
|
||||
{
|
||||
ulonglong result;
|
||||
__asm__ __volatile__ ("stck %0" : "=Q" (result) : : "cc");
|
||||
return result;
|
||||
}
|
||||
#elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME)
|
||||
/* gethrtime may appear as either cycle or nanosecond counter */
|
||||
return (ulonglong) gethrtime();
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
A namoseconds timer.
|
||||
A nanosecond timer.
|
||||
@return the current timer value, in nanoseconds.
|
||||
*/
|
||||
ulonglong my_timer_nanoseconds(void);
|
||||
@ -98,33 +204,22 @@ void my_timer_init(MY_TIMER_INFO *mti);
|
||||
|
||||
C_MODE_END
|
||||
|
||||
#define MY_TIMER_ROUTINE_ASM_X86 1
|
||||
#define MY_TIMER_ROUTINE_ASM_X86_64 2
|
||||
#define MY_TIMER_ROUTINE_RDTSCLL 3
|
||||
#define MY_TIMER_ROUTINE_ASM_X86_WIN 4
|
||||
#define MY_TIMER_ROUTINE_RDTSC 5
|
||||
#define MY_TIMER_ROUTINE_ASM_IA64 6
|
||||
#define MY_TIMER_ROUTINE_ASM_PPC 7
|
||||
#define MY_TIMER_ROUTINE_SGI_CYCLE 8
|
||||
#define MY_TIMER_ROUTINE_PPC_GET_TIMEBASE 7
|
||||
#define MY_TIMER_ROUTINE_GETHRTIME 9
|
||||
#define MY_TIMER_ROUTINE_READ_REAL_TIME 10
|
||||
#define MY_TIMER_ROUTINE_CLOCK_GETTIME 11
|
||||
#define MY_TIMER_ROUTINE_NXGETTIME 12
|
||||
#define MY_TIMER_ROUTINE_GETTIMEOFDAY 13
|
||||
#define MY_TIMER_ROUTINE_QUERYPERFORMANCECOUNTER 14
|
||||
#define MY_TIMER_ROUTINE_GETTICKCOUNT 15
|
||||
#define MY_TIMER_ROUTINE_TIME 16
|
||||
#define MY_TIMER_ROUTINE_TIMES 17
|
||||
#define MY_TIMER_ROUTINE_FTIME 18
|
||||
#define MY_TIMER_ROUTINE_ASM_PPC64 19
|
||||
#define MY_TIMER_ROUTINE_ASM_SUNPRO_SPARC64 20
|
||||
#define MY_TIMER_ROUTINE_ASM_SUNPRO_SPARC32 21
|
||||
#define MY_TIMER_ROUTINE_ASM_SUNPRO_I386 22
|
||||
#define MY_TIMER_ROUTINE_ASM_GCC_SPARC64 23
|
||||
#define MY_TIMER_ROUTINE_ASM_GCC_SPARC32 24
|
||||
#define MY_TIMER_ROUTINE_MACH_ABSOLUTE_TIME 25
|
||||
#define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26
|
||||
#define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64 27
|
||||
#define MY_TIMER_ROUTINE_ASM_S390 28
|
||||
|
||||
#endif
|
||||
|
@ -276,7 +276,7 @@ extern int mi_rsame_with_pos(struct st_myisam_info *file,uchar *record,
|
||||
int inx, my_off_t pos);
|
||||
extern int mi_update(struct st_myisam_info *file,const uchar *old,
|
||||
const uchar *new_record);
|
||||
extern int mi_write(struct st_myisam_info *file,uchar *buff);
|
||||
extern int mi_write(struct st_myisam_info *file,const uchar *buff);
|
||||
extern my_off_t mi_position(struct st_myisam_info *file);
|
||||
extern int mi_status(struct st_myisam_info *info, MI_ISAMINFO *x, uint flag);
|
||||
extern int mi_lock_database(struct st_myisam_info *file,int lock_type);
|
||||
|
@ -106,7 +106,7 @@ extern int myrg_rrnd(MYRG_INFO *file,uchar *buf,ulonglong pos);
|
||||
extern int myrg_rsame(MYRG_INFO *file,uchar *record,int inx);
|
||||
extern int myrg_update(MYRG_INFO *file,const uchar *old,
|
||||
const uchar *new_rec);
|
||||
extern int myrg_write(MYRG_INFO *info,uchar *rec);
|
||||
extern int myrg_write(MYRG_INFO *info,const uchar *rec);
|
||||
extern int myrg_status(MYRG_INFO *file,MYMERGE_INFO *x,int flag);
|
||||
extern int myrg_lock_database(MYRG_INFO *file,int lock_type);
|
||||
extern int myrg_create(const char *name, const char **table_names,
|
||||
|
@ -14,6 +14,7 @@
|
||||
#define MYSQL_SERVER_VERSION "@VERSION@-MariaDB"
|
||||
#define MYSQL_BASE_VERSION "mysqld-@MYSQL_BASE_VERSION@"
|
||||
#define MARIADB_BASE_VERSION "mariadb-@MYSQL_BASE_VERSION@"
|
||||
#define MARIADBD_BASE_VERSION "mariadbd-@MYSQL_BASE_VERSION@"
|
||||
#define MYSQL_SERVER_SUFFIX_DEF "@MYSQL_SERVER_SUFFIX@"
|
||||
#define FRM_VER @DOT_FRM_VERSION@
|
||||
#define MYSQL_VERSION_ID @MYSQL_VERSION_ID@
|
||||
|
@ -1,6 +1,7 @@
|
||||
const char *load_default_groups[]= {
|
||||
"mysqld", "server", MYSQL_BASE_VERSION,
|
||||
"mariadb", MARIADB_BASE_VERSION,
|
||||
"mariadbd", MARIADBD_BASE_VERSION,
|
||||
"client-server",
|
||||
#ifdef WITH_WSREP
|
||||
"galera",
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit c098613d289ed88fc53286e98add28ae9f2d8b46
|
||||
Subproject commit 5fa9c4615e71b696b84b4c77aefa197466526a13
|
@ -1367,6 +1367,22 @@ Verify server's "Common Name" in its cert against hostname used when connecting.
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
.\" mysqladmin: TLS Version option
|
||||
.\" TLS Version option: mysqladmin
|
||||
\fB\-\-tls\-version=\fR\fB\fIname\fR\fR,
|
||||
.sp
|
||||
Accepts a comma-separated list of TLS protocol versions\&. A TLS protocol version will only be enabled if it
|
||||
is present in this list\&. All other TLS protocol versions will not be permitted\&.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
.\" mysqladmin: user option
|
||||
.\" user option: mysqladmin
|
||||
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
|
||||
@ -1441,6 +1457,22 @@ If the connection cannot be established, wait and retry instead of aborting\&. I
|
||||
\fIcount\fR
|
||||
value is given, it indicates the number of times to retry\&. The default is one time\&.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
.\" mysqladmin: --wait-for-all-slaves option
|
||||
.\" --wait-for-all-slaves option: mysqladmin
|
||||
\fB\-\-wait\-for\-all\-slaves\fR
|
||||
.sp
|
||||
Wait for the last binlog event to be sent to all connected slaves before shutting down\&.
|
||||
This option is off by default\&.
|
||||
.RE
|
||||
.PP
|
||||
You can also set the following variables by using
|
||||
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
|
||||
|
@ -49,9 +49,16 @@ connection default;
|
||||
|
||||
# We need to wait for the implicit DROP TEMPORARY TABLE to be logged after
|
||||
# tmp_con disconnect, otherwise we get sporadic test failures.
|
||||
# MDEV-20091: DROP TEMPORARY TABLE IF EXISTS statements will be written to
|
||||
# binlog only if the corresponding temporary table exists. In row based
|
||||
# replication temporary tables are not replicated hence their corresponding
|
||||
# DROP TEMPORARY TABLE statement will be not be written to binary log upon
|
||||
# session closure.
|
||||
|
||||
if (!`SELECT @@BINLOG_FORMAT = 'ROW'`) {
|
||||
--let $wait_condition= SELECT variable_value > $before_drop_pos FROM information_schema.global_status WHERE variable_name = 'binlog_snapshot_position'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
}
|
||||
--let $binlog_pos2=query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||
|
||||
--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1)
|
||||
|
14
mysql-test/include/force_restart.inc
Normal file
14
mysql-test/include/force_restart.inc
Normal file
@ -0,0 +1,14 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Tell mtr that all servers must be restarted after the test has
|
||||
# finished.
|
||||
#
|
||||
# ==== Usage ====
|
||||
#
|
||||
# --source include/force_restart.inc
|
||||
#
|
||||
|
||||
--let $_force_restart_datadir= `SELECT @@datadir`
|
||||
--append_file $_force_restart_datadir/mtr/force_restart
|
||||
1
|
||||
EOF
|
4
mysql-test/include/have_mariabackup.inc
Normal file
4
mysql-test/include/have_mariabackup.inc
Normal file
@ -0,0 +1,4 @@
|
||||
#
|
||||
# suite.pm will make sure that all tests including this file
|
||||
# will be skipped as needed
|
||||
#
|
4
mysql-test/include/have_xtrabackup.inc
Normal file
4
mysql-test/include/have_xtrabackup.inc
Normal file
@ -0,0 +1,4 @@
|
||||
#
|
||||
# suite.pm will make sure that all tests including this file
|
||||
# will be skipped as needed
|
||||
#
|
69
mysql-test/include/wait_condition_with_debug.inc
Normal file
69
mysql-test/include/wait_condition_with_debug.inc
Normal file
@ -0,0 +1,69 @@
|
||||
# include/wait_condition_with_debug.inc
|
||||
#
|
||||
# SUMMARY
|
||||
#
|
||||
# Waits until the passed statement returns true, or the operation
|
||||
# times out. If the operation times out, the additional error
|
||||
# statement will be executed.
|
||||
#
|
||||
# USAGE
|
||||
#
|
||||
# let $wait_condition=
|
||||
# SELECT c = 3 FROM t;
|
||||
# let $wait_condition_on_error_output= select count(*) from t;
|
||||
# [let $explicit_default_wait_timeout= N] # to override the default reset
|
||||
# --source include/wait_condition_with_debug.inc
|
||||
#
|
||||
# OR
|
||||
#
|
||||
# let $wait_timeout= 60; # Override default 30 seconds with 60.
|
||||
# let $wait_condition=
|
||||
# SELECT c = 3 FROM t;
|
||||
# let $wait_condition_on_error_output= select count(*) from t;
|
||||
# --source include/wait_condition_with_debug.inc
|
||||
# --echo Executed the test condition $wait_condition_reps times
|
||||
#
|
||||
#
|
||||
# EXAMPLE
|
||||
# events_bugs.test, events_time_zone.test
|
||||
#
|
||||
|
||||
let $wait_counter= 300;
|
||||
if ($wait_timeout)
|
||||
{
|
||||
let $wait_counter= `SELECT $wait_timeout * 10`;
|
||||
}
|
||||
# Reset $wait_timeout so that its value won't be used on subsequent
|
||||
# calls, and default will be used instead.
|
||||
if ($explicit_default_wait_timeout)
|
||||
{
|
||||
--let $wait_timeout= $explicit_default_wait_timeout
|
||||
}
|
||||
if (!$explicit_default_wait_timeout)
|
||||
{
|
||||
--let $wait_timeout= 0
|
||||
}
|
||||
|
||||
# Keep track of how many times the wait condition is tested
|
||||
# This is used by some tests (e.g., main.status)
|
||||
let $wait_condition_reps= 0;
|
||||
while ($wait_counter)
|
||||
{
|
||||
--error 0,ER_NO_SUCH_TABLE,ER_LOCK_WAIT_TIMEOUT,ER_UNKNOWN_COM_ERROR,ER_LOCK_DEADLOCK
|
||||
let $success= `$wait_condition`;
|
||||
inc $wait_condition_reps;
|
||||
if ($success)
|
||||
{
|
||||
let $wait_counter= 0;
|
||||
}
|
||||
if (!$success)
|
||||
{
|
||||
real_sleep 0.1;
|
||||
dec $wait_counter;
|
||||
}
|
||||
}
|
||||
if (!$success)
|
||||
{
|
||||
echo Timeout in wait_condition.inc for $wait_condition;
|
||||
--eval $wait_condition_on_error_output
|
||||
}
|
@ -338,6 +338,13 @@ sub new {
|
||||
# Skip comment
|
||||
next;
|
||||
}
|
||||
# Correctly process Replication Filter when they are defined
|
||||
# with connection name.
|
||||
elsif ( $line =~ /^([\w]+.[\w]+)\s*=\s*(.*)\s*/){
|
||||
my $option= $1;
|
||||
my $value= $2;
|
||||
$self->insert($group_name, $option, $value);
|
||||
}
|
||||
else {
|
||||
croak "Unexpected line '$line' found in '$path'";
|
||||
}
|
||||
|
@ -100,6 +100,8 @@ else
|
||||
$bindir = getcwd();
|
||||
}
|
||||
|
||||
our $wsrep_check_version;
|
||||
|
||||
# Find the safe process binary or script
|
||||
sub find_bin {
|
||||
if (IS_WIN32PERL or IS_CYGWIN)
|
||||
@ -119,6 +121,10 @@ sub find_bin {
|
||||
"my_safe_process");
|
||||
push(@safe_process_cmd, $exe);
|
||||
}
|
||||
# Wsrep version check utility:
|
||||
$wsrep_check_version=
|
||||
my_find_bin($bindir, ["lib/My/SafeProcess", "My/SafeProcess"],
|
||||
"wsrep_check_version", NOT_REQUIRED);
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
|
||||
|
||||
|
||||
IF (WIN32)
|
||||
IF (WIN32)
|
||||
ADD_EXECUTABLE(my_safe_process safe_process_win.cc)
|
||||
ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc)
|
||||
TARGET_LINK_LIBRARIES(my_safe_kill dbghelp psapi)
|
||||
@ -22,6 +22,11 @@ ELSE()
|
||||
ADD_EXECUTABLE(my_safe_process safe_process.cc)
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_WSREP)
|
||||
ADD_EXECUTABLE(wsrep_check_version wsrep_check_version.c)
|
||||
TARGET_LINK_LIBRARIES(wsrep_check_version ${LIBDL})
|
||||
ENDIF()
|
||||
|
||||
IF(NOT INSTALL_MYSQLTESTDIR)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
@ -32,6 +37,9 @@ SET(INSTALL_ARGS
|
||||
)
|
||||
|
||||
INSTALL(TARGETS my_safe_process ${INSTALL_ARGS})
|
||||
IF(WITH_WSREP)
|
||||
INSTALL(TARGETS wsrep_check_version ${INSTALL_ARGS})
|
||||
ENDIF()
|
||||
IF (WIN32)
|
||||
INSTALL(TARGETS my_safe_kill ${INSTALL_ARGS})
|
||||
ENDIF()
|
||||
|
123
mysql-test/lib/My/SafeProcess/wsrep_check_version.c
Normal file
123
mysql-test/lib/My/SafeProcess/wsrep_check_version.c
Normal file
@ -0,0 +1,123 @@
|
||||
/* Copyright (c) 2009, 2019, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#define dlsym(lib, name) GetProcAddress((HMODULE)lib, name)
|
||||
#define dlopen(libname, unused) LoadLibraryEx(libname, NULL, 0)
|
||||
#define dlclose(lib) FreeLibrary((HMODULE)lib)
|
||||
#elif defined(HAVE_DLFCN_H)
|
||||
#include <dlfcn.h>
|
||||
#else
|
||||
#define NO_DLL
|
||||
#endif
|
||||
|
||||
#ifndef NO_DLL
|
||||
|
||||
#include "../../../../wsrep-lib/wsrep-API/v26/wsrep_api.h"
|
||||
|
||||
/**************************************************************************
|
||||
* Library loader
|
||||
**************************************************************************/
|
||||
|
||||
static int wsrep_check_iface_version(const char *found, const char *iface_ver)
|
||||
{
|
||||
if (strcmp(found, iface_ver)) {
|
||||
return ERANGE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
typedef int (*wsrep_loader_fun)(wsrep_t*);
|
||||
|
||||
static wsrep_loader_fun wsrep_dlf(void *dlh, const char *sym)
|
||||
{
|
||||
union {
|
||||
wsrep_loader_fun dlfun;
|
||||
void *obj;
|
||||
} alias;
|
||||
alias.obj = dlsym(dlh, sym);
|
||||
return alias.dlfun;
|
||||
}
|
||||
|
||||
static int wsrep_check_version_symbol(void *dlh)
|
||||
{
|
||||
char** dlversion = NULL;
|
||||
dlversion = (char**) dlsym(dlh, "wsrep_interface_version");
|
||||
if (dlversion == NULL)
|
||||
return EINVAL;
|
||||
return wsrep_check_iface_version(*dlversion, WSREP_INTERFACE_VERSION);
|
||||
}
|
||||
|
||||
static int wsrep_print_version(void *dlh)
|
||||
{
|
||||
char** dlversion = NULL;
|
||||
dlversion = (char**) dlsym(dlh, "wsrep_interface_version");
|
||||
if (dlversion == NULL)
|
||||
return EINVAL;
|
||||
printf("found: %s, need: %s\n", *dlversion, WSREP_INTERFACE_VERSION);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int rc = EINVAL;
|
||||
void *dlh;
|
||||
wsrep_loader_fun dlfun;
|
||||
|
||||
if (!(dlh = dlopen(getenv("WSREP_PROVIDER"), RTLD_NOW | RTLD_LOCAL))) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!(dlfun = wsrep_dlf(dlh, "wsrep_loader"))) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (argc < 2 || strcmp(argv[1], "-p")) {
|
||||
rc = wsrep_check_version_symbol(dlh);
|
||||
}
|
||||
else {
|
||||
rc = wsrep_print_version(dlh);
|
||||
}
|
||||
|
||||
err:
|
||||
if (dlh) dlclose(dlh);
|
||||
|
||||
if (rc == 0)
|
||||
return 0;
|
||||
else if (rc == ERANGE)
|
||||
return 2;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
int main(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
@ -36,6 +36,21 @@ use POSIX qw[ _exit ];
|
||||
use IO::Handle qw[ flush ];
|
||||
use mtr_results;
|
||||
|
||||
use Term::ANSIColor;
|
||||
|
||||
my %color_map = qw/pass green
|
||||
retry-pass green
|
||||
fail red
|
||||
retry-fail red
|
||||
disabled bright_black
|
||||
skipped yellow
|
||||
reset reset/;
|
||||
sub xterm_color {
|
||||
if (-t STDOUT and defined $ENV{TERM} and $ENV{TERM} =~ /xterm/) {
|
||||
syswrite STDOUT, color($color_map{$_[0]});
|
||||
}
|
||||
}
|
||||
|
||||
my $tot_real_time= 0;
|
||||
|
||||
our $timestamp= 0;
|
||||
@ -498,7 +513,16 @@ sub mtr_print (@) {
|
||||
sub mtr_report (@) {
|
||||
if (defined $verbose)
|
||||
{
|
||||
print _name(). join(" ", @_). "\n";
|
||||
my @s = split /\[ (\S+) \]/, _name() . "@_\n";
|
||||
if (@s > 1) {
|
||||
print $s[0];
|
||||
xterm_color($s[1]);
|
||||
print "[ $s[1] ]";
|
||||
xterm_color('reset');
|
||||
print $s[2];
|
||||
} else {
|
||||
print $s[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2752,6 +2752,25 @@ DROP USER dummy@localhost;
|
||||
# End of 10.2 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.3 tests
|
||||
#
|
||||
#
|
||||
# MDEV-19948 'show grants' return privileges individually
|
||||
#
|
||||
CREATE USER ten2;
|
||||
GRANT ALL ON *.* TO ten2;
|
||||
SHOW GRANTS FOR ten2;
|
||||
Grants for ten2@%
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'ten2'@'%'
|
||||
FLUSH PRIVILEGES;
|
||||
SHOW GRANTS FOR ten2;
|
||||
Grants for ten2@%
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'ten2'@'%'
|
||||
DROP USER ten2;
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
#
|
||||
# MDEV-17932 : Assertion upon double RENAME USER
|
||||
#
|
||||
CREATE USER foo@localhost;
|
||||
|
@ -2247,6 +2247,35 @@ DROP USER dummy@localhost;
|
||||
--echo # End of 10.2 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.3 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-19948 'show grants' return privileges individually
|
||||
--echo #
|
||||
|
||||
# Let's cheat server that we are using `10.2` user table
|
||||
# which doesn't have `Delete_history_priv` column
|
||||
|
||||
source include/switch_to_mysql_user.inc;
|
||||
CREATE USER ten2;
|
||||
GRANT ALL ON *.* TO ten2;
|
||||
|
||||
# Without any patching, this should show a lot of privileges,
|
||||
# but without delete history. With patch it is showing `all privileges`
|
||||
SHOW GRANTS FOR ten2;
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
# Now should show `all privileges` with/without patch
|
||||
SHOW GRANTS FOR ten2;
|
||||
DROP USER ten2;
|
||||
source include/switch_to_mysql_global_priv.inc;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17932 : Assertion upon double RENAME USER
|
||||
--echo #
|
||||
|
@ -2514,6 +2514,40 @@ WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
v2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-19790 : IS NOT TRUE / IS NOT FALSE predicates over
|
||||
# inner tables of outer joins
|
||||
#
|
||||
create table t1 (a int);
|
||||
create table t2 (b int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
insert into t2 values (7), (4), (3);
|
||||
select * from t1 left join t2 on a=b;
|
||||
a b
|
||||
3 3
|
||||
7 7
|
||||
1 NULL
|
||||
select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||
a b
|
||||
3 3
|
||||
1 NULL
|
||||
explain extended select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on(`test`.`t2`.`b` = `test`.`t1`.`a`) where `test`.`t2`.`b` > 3 is not true
|
||||
select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||
a b
|
||||
7 7
|
||||
1 NULL
|
||||
explain extended select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on(`test`.`t2`.`b` = `test`.`t1`.`a`) where `test`.`t2`.`b` > 3 is not false
|
||||
drop table t1,t2;
|
||||
# end of 5.5 tests
|
||||
#
|
||||
# MDEV-19258: chained right joins all converted to inner joins
|
||||
|
@ -2041,6 +2041,29 @@ ORDER BY tb1.i1;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-19790 : IS NOT TRUE / IS NOT FALSE predicates over
|
||||
--echo # inner tables of outer joins
|
||||
--echo #
|
||||
|
||||
create table t1 (a int);
|
||||
create table t2 (b int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
insert into t2 values (7), (4), (3);
|
||||
select * from t1 left join t2 on a=b;
|
||||
|
||||
let $q=
|
||||
select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo # end of 5.5 tests
|
||||
|
||||
--echo #
|
||||
|
@ -2525,6 +2525,40 @@ WHERE tb1.pk = 40
|
||||
ORDER BY tb1.i1;
|
||||
v2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-19790 : IS NOT TRUE / IS NOT FALSE predicates over
|
||||
# inner tables of outer joins
|
||||
#
|
||||
create table t1 (a int);
|
||||
create table t2 (b int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
insert into t2 values (7), (4), (3);
|
||||
select * from t1 left join t2 on a=b;
|
||||
a b
|
||||
7 7
|
||||
3 3
|
||||
1 NULL
|
||||
select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||
a b
|
||||
3 3
|
||||
1 NULL
|
||||
explain extended select * from t1 left join t2 on a=b where (b > 3) is not true;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 SIMPLE t2 hash_ALL NULL #hash#$hj 5 test.t1.a 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on(`test`.`t2`.`b` = `test`.`t1`.`a` and `test`.`t1`.`a` is not null) where `test`.`t2`.`b` > 3 is not true
|
||||
select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||
a b
|
||||
7 7
|
||||
1 NULL
|
||||
explain extended select * from t1 left join t2 on a=b where (b > 3) is not false;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 SIMPLE t2 hash_ALL NULL #hash#$hj 5 test.t1.a 3 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` left join `test`.`t2` on(`test`.`t2`.`b` = `test`.`t1`.`a` and `test`.`t1`.`a` is not null) where `test`.`t2`.`b` > 3 is not false
|
||||
drop table t1,t2;
|
||||
# end of 5.5 tests
|
||||
#
|
||||
# MDEV-19258: chained right joins all converted to inner joins
|
||||
|
@ -1,4 +1,4 @@
|
||||
Windows bug: happens when a new line is exactly at the right offset.
|
||||
Windows bug: new line disappears when it is exactly at the right offset.
|
||||
The following options may be given as the first argument:
|
||||
--print-defaults Print the program argument list and exit.
|
||||
--no-defaults Don't read default options from any option file.
|
||||
|
@ -43,7 +43,7 @@ perl;
|
||||
$re2=join('|', @plugins);
|
||||
$skip=0;
|
||||
open(F, '<', "$ENV{MYSQL_TMP_DIR}/mysqld--help.txt") or die;
|
||||
print "Windows bug: happens when a new line is exactly at the right offset.\n";
|
||||
print "Windows bug: new line disappears when it is exactly at the right offset.\n";
|
||||
while (<F>) {
|
||||
next if 1../The following groups are read/;
|
||||
# formatting, skip line consisting entirely of dashes and blanks
|
||||
|
1
mysql-test/main/mysqldump-compat-102.opt
Normal file
1
mysql-test/main/mysqldump-compat-102.opt
Normal file
@ -0,0 +1 @@
|
||||
-V10.2.1-MariaDB
|
110
mysql-test/main/mysqldump-compat-102.result
Normal file
110
mysql-test/main/mysqldump-compat-102.result
Normal file
@ -0,0 +1,110 @@
|
||||
#
|
||||
# MDEV-17429 mysqldump uses 10.3 options with pre-10.3 servers and breaks
|
||||
#
|
||||
SELECT @@version;
|
||||
@@version
|
||||
10.2.1-MariaDB
|
||||
SET sql_mode=ORACLE;
|
||||
CREATE DATABASE db1_mdev17429;
|
||||
USE db1_mdev17429;
|
||||
CREATE PROCEDURE p1(a INT)
|
||||
AS BEGIN
|
||||
NULL;
|
||||
END;
|
||||
$$
|
||||
CREATE OR REPLACE PACKAGE employee_tools AS
|
||||
FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2);
|
||||
PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2));
|
||||
PROCEDURE raiseSalaryStd(eid INT);
|
||||
PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2));
|
||||
END;
|
||||
$$
|
||||
CREATE PACKAGE BODY employee_tools AS
|
||||
-- package body variables
|
||||
stdRaiseAmount DECIMAL(10,2):=500;
|
||||
-- private routines
|
||||
PROCEDURE log (eid INT, ecmnt TEXT) AS
|
||||
BEGIN
|
||||
INSERT INTO employee_log (id, cmnt) VALUES (eid, ecmnt);
|
||||
END;
|
||||
-- public routines
|
||||
PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2)) AS
|
||||
eid INT;
|
||||
BEGIN
|
||||
INSERT INTO employee (name, salary) VALUES (ename, esalary);
|
||||
eid:= last_insert_id();
|
||||
log(eid, 'hire ' || ename);
|
||||
END;
|
||||
FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2) AS
|
||||
nSalary DECIMAL(10,2);
|
||||
BEGIN
|
||||
SELECT salary INTO nSalary FROM employee WHERE id=eid;
|
||||
log(eid, 'getSalary id=' || eid || ' salary=' || nSalary);
|
||||
RETURN nSalary;
|
||||
END;
|
||||
PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2)) AS
|
||||
BEGIN
|
||||
UPDATE employee SET salary=salary+amount WHERE id=eid;
|
||||
log(eid, 'raiseSalary id=' || eid || ' amount=' || amount);
|
||||
END;
|
||||
PROCEDURE raiseSalaryStd(eid INT) AS
|
||||
BEGIN
|
||||
raiseSalary(eid, stdRaiseAmount);
|
||||
log(eid, 'raiseSalaryStd id=' || eid);
|
||||
END;
|
||||
BEGIN
|
||||
-- This code is executed when the current session
|
||||
-- accesses any of the package routines for the first time
|
||||
log(0, 'Session ' || connection_id() || ' ' || current_user || ' started');
|
||||
END;
|
||||
$$
|
||||
-- MariaDB dump DUMPVERSION Distrib DISTVERSION, for OS
|
||||
--
|
||||
-- Host: localhost Database: db1_mdev17429
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.2.1-MariaDB
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Dumping routines for database 'db1_mdev17429'
|
||||
--
|
||||
/*!50003 DROP PROCEDURE IF EXISTS `p1` */;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||
/*!50003 SET character_set_client = latin1 */ ;
|
||||
/*!50003 SET character_set_results = latin1 */ ;
|
||||
/*!50003 SET collation_connection = latin1_swedish_ci */ ;
|
||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||
/*!50003 SET sql_mode = 'PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT' */ ;
|
||||
DELIMITER ;;
|
||||
CREATE DEFINER="root"@"localhost" PROCEDURE "p1"(a INT)
|
||||
AS BEGIN
|
||||
NULL;
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on TIMESTAMP
|
||||
DROP DATABASE db1_mdev17429;
|
||||
SET sql_mode=DEFAULT;
|
83
mysql-test/main/mysqldump-compat-102.test
Normal file
83
mysql-test/main/mysqldump-compat-102.test
Normal file
@ -0,0 +1,83 @@
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17429 mysqldump uses 10.3 options with pre-10.3 servers and breaks
|
||||
--echo #
|
||||
|
||||
# Make sure the server reports itself as 10.2.1-MariaDB
|
||||
SELECT @@version;
|
||||
|
||||
SET sql_mode=ORACLE;
|
||||
CREATE DATABASE db1_mdev17429;
|
||||
USE db1_mdev17429;
|
||||
|
||||
DELIMITER $$;
|
||||
|
||||
CREATE PROCEDURE p1(a INT)
|
||||
AS BEGIN
|
||||
NULL;
|
||||
END;
|
||||
$$
|
||||
|
||||
CREATE OR REPLACE PACKAGE employee_tools AS
|
||||
FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2);
|
||||
PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2));
|
||||
PROCEDURE raiseSalaryStd(eid INT);
|
||||
PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2));
|
||||
END;
|
||||
$$
|
||||
CREATE PACKAGE BODY employee_tools AS
|
||||
-- package body variables
|
||||
stdRaiseAmount DECIMAL(10,2):=500;
|
||||
|
||||
-- private routines
|
||||
PROCEDURE log (eid INT, ecmnt TEXT) AS
|
||||
BEGIN
|
||||
INSERT INTO employee_log (id, cmnt) VALUES (eid, ecmnt);
|
||||
END;
|
||||
|
||||
-- public routines
|
||||
PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2)) AS
|
||||
eid INT;
|
||||
BEGIN
|
||||
INSERT INTO employee (name, salary) VALUES (ename, esalary);
|
||||
eid:= last_insert_id();
|
||||
log(eid, 'hire ' || ename);
|
||||
END;
|
||||
|
||||
FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2) AS
|
||||
nSalary DECIMAL(10,2);
|
||||
BEGIN
|
||||
SELECT salary INTO nSalary FROM employee WHERE id=eid;
|
||||
log(eid, 'getSalary id=' || eid || ' salary=' || nSalary);
|
||||
RETURN nSalary;
|
||||
END;
|
||||
|
||||
PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2)) AS
|
||||
BEGIN
|
||||
UPDATE employee SET salary=salary+amount WHERE id=eid;
|
||||
log(eid, 'raiseSalary id=' || eid || ' amount=' || amount);
|
||||
END;
|
||||
|
||||
PROCEDURE raiseSalaryStd(eid INT) AS
|
||||
BEGIN
|
||||
raiseSalary(eid, stdRaiseAmount);
|
||||
log(eid, 'raiseSalaryStd id=' || eid);
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
-- This code is executed when the current session
|
||||
-- accesses any of the package routines for the first time
|
||||
log(0, 'Session ' || connection_id() || ' ' || current_user || ' started');
|
||||
END;
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
|
||||
# mysqldump output is expected to have standalone PROCEDURE/FUNCTION, but not PACKAGE/PACKAGE BODY.
|
||||
|
||||
--replace_regex /-- MariaDB dump.*[^\n]/-- MariaDB dump DUMPVERSION Distrib DISTVERSION, for OS/ / on [0-9 :-]+/ on TIMESTAMP/
|
||||
--exec $MYSQL_DUMP --quick --routines --triggers --no-create-info --skip-lock-tables --no-data --compress -uroot db1_mdev17429
|
||||
|
||||
DROP DATABASE db1_mdev17429;
|
||||
SET sql_mode=DEFAULT;
|
@ -1784,4 +1784,17 @@ a
|
||||
select * from t1 for update;
|
||||
a
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-20108: [ERROR] mysqld got signal 11 in
|
||||
# st_select_lex::add_table_to_list
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT NULL);
|
||||
CREATE TABLE t2 (c1 INT NULL);
|
||||
SET STATEMENT max_statement_time=900 FOR LOCK TABLES `t1` WRITE;
|
||||
select * from t1;
|
||||
c1
|
||||
select * from t2;
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
SET STATEMENT max_statement_time=900 FOR unlock tables;
|
||||
drop table t1, t2;
|
||||
# End of 10.4 tests
|
||||
|
@ -1552,4 +1552,18 @@ create table t1 (a int);
|
||||
select * from t1 for update;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-20108: [ERROR] mysqld got signal 11 in
|
||||
--echo # st_select_lex::add_table_to_list
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT NULL);
|
||||
CREATE TABLE t2 (c1 INT NULL);
|
||||
|
||||
SET STATEMENT max_statement_time=900 FOR LOCK TABLES `t1` WRITE;
|
||||
select * from t1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
select * from t2;
|
||||
SET STATEMENT max_statement_time=900 FOR unlock tables;
|
||||
drop table t1, t2;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
@ -1,7 +1,7 @@
|
||||
create table t1 (a int) engine=myisam data directory='MYSQL_TMP_DIR';
|
||||
insert t1 values (1);
|
||||
# Some systems fail with errcode 40, when doing openat, while others
|
||||
# don't have openat and fail with errcode 20.
|
||||
# Some systems fail with errcode 40, or 90 (MIPS) when doing openat,
|
||||
# while others don't have openat and fail with errcode 20.
|
||||
repair table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair error 20 for record at pos 0
|
||||
|
@ -9,9 +9,9 @@
|
||||
eval create table t1 (a int) engine=myisam data directory='$MYSQL_TMP_DIR';
|
||||
insert t1 values (1);
|
||||
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t1.TMD
|
||||
--echo # Some systems fail with errcode 40, when doing openat, while others
|
||||
--echo # don't have openat and fail with errcode 20.
|
||||
--replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /40/20/ /".*"/"<errmsg>"/
|
||||
--echo # Some systems fail with errcode 40, or 90 (MIPS) when doing openat,
|
||||
--echo # while others don't have openat and fail with errcode 20.
|
||||
--replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /[49]0/20/ /".*"/"<errmsg>"/
|
||||
repair table t1;
|
||||
drop table t1;
|
||||
|
||||
@ -19,7 +19,7 @@ drop table t1;
|
||||
eval create table t2 (a int) engine=aria data directory='$MYSQL_TMP_DIR';
|
||||
insert t2 values (1);
|
||||
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t2.TMD
|
||||
--replace_regex / '.*\/t2/ 'MYSQL_TMP_DIR\/t2/ /40/20/ /".*"/"<errmsg>"/
|
||||
--replace_regex / '.*\/t2/ 'MYSQL_TMP_DIR\/t2/ /[49]0/20/ /".*"/"<errmsg>"/
|
||||
repair table t2;
|
||||
drop table t2;
|
||||
|
||||
|
@ -8307,6 +8307,20 @@ UNION
|
||||
SELECT * FROM INFORMATION_SCHEMA.TABLES JOIN INFORMATION_SCHEMA.PARAMETERS;
|
||||
DROP FUNCTION f;
|
||||
DROP VIEW v;
|
||||
#
|
||||
# MDEV-17963: Assertion `field_pos < field_count' failed in Protocol_text::store,
|
||||
# Assertion `field_handlers == 0 || field_pos < field_count'
|
||||
#
|
||||
CREATE TABLE t1 (ct time);
|
||||
INSERT INTO t1 VALUES ('16:11:28');
|
||||
CREATE FUNCTION f1 () RETURNS varchar(100)
|
||||
BEGIN
|
||||
DECLARE xxx varchar(100);
|
||||
ANALYZE SELECT sum(ct) FROM t1 INTO xxx ;
|
||||
RETURN xxx;
|
||||
END|
|
||||
ERROR 0A000: Not allowed to return a result set from a function
|
||||
drop table t1;
|
||||
#End of 10.1 tests
|
||||
#
|
||||
# MDEV-11081: CURSOR for query with GROUP BY
|
||||
|
@ -9823,6 +9823,26 @@ SELECT * FROM INFORMATION_SCHEMA.TABLES JOIN INFORMATION_SCHEMA.PARAMETERS;
|
||||
DROP FUNCTION f;
|
||||
DROP VIEW v;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17963: Assertion `field_pos < field_count' failed in Protocol_text::store,
|
||||
--echo # Assertion `field_handlers == 0 || field_pos < field_count'
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (ct time);
|
||||
INSERT INTO t1 VALUES ('16:11:28');
|
||||
|
||||
DELIMITER |;
|
||||
--error ER_SP_NO_RETSET
|
||||
CREATE FUNCTION f1 () RETURNS varchar(100)
|
||||
BEGIN
|
||||
DECLARE xxx varchar(100);
|
||||
ANALYZE SELECT sum(ct) FROM t1 INTO xxx ;
|
||||
RETURN xxx;
|
||||
END|
|
||||
|
||||
DELIMITER ;|
|
||||
drop table t1;
|
||||
|
||||
--echo #End of 10.1 tests
|
||||
|
||||
--echo #
|
||||
|
1
mysql-test/main/tls_version1.opt
Normal file
1
mysql-test/main/tls_version1.opt
Normal file
@ -0,0 +1 @@
|
||||
--tls_version=TLSv1.0
|
6
mysql-test/main/tls_version1.result
Normal file
6
mysql-test/main/tls_version1.result
Normal file
@ -0,0 +1,6 @@
|
||||
Variable_name Value
|
||||
Ssl_version TLSv1
|
||||
Variable_name Value
|
||||
Ssl_version TLSv1
|
||||
@@tls_version
|
||||
TLSv1.0
|
12
mysql-test/main/tls_version1.test
Normal file
12
mysql-test/main/tls_version1.test
Normal file
@ -0,0 +1,12 @@
|
||||
# Tests for SSL connections, only run if mysqld is compiled
|
||||
# with support for SSL.
|
||||
|
||||
-- source include/have_ssl_communication.inc
|
||||
--exec $MYSQL --host=localhost --ssl -e "show status like 'ssl_version';"
|
||||
--error 1
|
||||
--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.2 -e "show status like 'ssl_version';"
|
||||
--error 1
|
||||
--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.1 -e "show status like 'ssl_version';"
|
||||
--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.0 -e "show status like 'ssl_version';"
|
||||
--exec $MYSQL --host=localhost --ssl -e "select @@tls_version;"
|
||||
|
@ -1146,6 +1146,16 @@ a
|
||||
00:01:00
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-17857 Assertion `tmp != ((long long) 0x8000000000000000LL)' failed in TIME_from_longlong_datetime_packed upon SELECT with GROUP BY
|
||||
#
|
||||
CREATE TABLE t1 (i INT, d DATETIME);
|
||||
INSERT INTO t1 VALUES (3,NULL),(3,'1976-12-14 13:21:07'),(NULL,'1981-09-24 01:04:47');
|
||||
SELECT ExtractValue('foo','bar'), i, MIN(d) FROM t1 GROUP BY i;
|
||||
ExtractValue('foo','bar') i MIN(d)
|
||||
NULL 1981-09-24 01:04:47
|
||||
3 1976-12-14 13:21:07
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
|
@ -700,6 +700,16 @@ SELECT 1 FROM t1 WHERE 20160101 > SOME (SELECT CAST(a AS DATETIME) FROM t1);
|
||||
SELECT * FROM t1 WHERE 20160101 > CAST(a AS DATETIME);
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17857 Assertion `tmp != ((long long) 0x8000000000000000LL)' failed in TIME_from_longlong_datetime_packed upon SELECT with GROUP BY
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (i INT, d DATETIME);
|
||||
INSERT INTO t1 VALUES (3,NULL),(3,'1976-12-14 13:21:07'),(NULL,'1981-09-24 01:04:47');
|
||||
SELECT ExtractValue('foo','bar'), i, MIN(d) FROM t1 GROUP BY i;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.1 tests
|
||||
--echo #
|
||||
|
@ -687,7 +687,23 @@ DROP TABLE t1,t2;
|
||||
# End of 10.0 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.4 tests
|
||||
# MDEV-17551
|
||||
# Assertion `(&(&share->intern_lock)->m_mutex)->count > 0 &&
|
||||
# pthread_equal(pthread_self(), (&(&share->intern_lock)->m_mutex)->
|
||||
# thread)' failed in _ma_state_info_write or ER_CRASHED_ON_USAGE
|
||||
# upon SELECT with UNION
|
||||
#
|
||||
CREATE TABLE t1 (b BLOB, vb BLOB AS (b) VIRTUAL);
|
||||
INSERT INTO t1 (b) VALUES ('foobar');
|
||||
SELECT 'foo' AS f1, CONVERT( 'bar' USING latin1 ) AS f2 FROM t1
|
||||
UNION
|
||||
SELECT b AS f1, CONVERT( vb USING latin1 ) AS f2 FROM t1;
|
||||
f1 f2
|
||||
foo bar
|
||||
foobar foobar
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
SET sql_mode='';
|
||||
CREATE TABLE t1 (c VARCHAR(1) DEFAULT 'foo');
|
||||
|
@ -329,9 +329,23 @@ DROP TABLE t1,t2;
|
||||
--echo # End of 10.0 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17551
|
||||
--echo # Assertion `(&(&share->intern_lock)->m_mutex)->count > 0 &&
|
||||
--echo # pthread_equal(pthread_self(), (&(&share->intern_lock)->m_mutex)->
|
||||
--echo # thread)' failed in _ma_state_info_write or ER_CRASHED_ON_USAGE
|
||||
--echo # upon SELECT with UNION
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (b BLOB, vb BLOB AS (b) VIRTUAL);
|
||||
INSERT INTO t1 (b) VALUES ('foobar');
|
||||
SELECT 'foo' AS f1, CONVERT( 'bar' USING latin1 ) AS f2 FROM t1
|
||||
UNION
|
||||
SELECT b AS f1, CONVERT( vb USING latin1 ) AS f2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
|
||||
SET sql_mode='';
|
||||
|
@ -138,6 +138,10 @@ my $opt_start_dirty;
|
||||
my $opt_start_exit;
|
||||
my $start_only;
|
||||
my $file_wsrep_provider;
|
||||
my $extra_path;
|
||||
my $mariabackup_path;
|
||||
my $mariabackup_exe;
|
||||
my $garbd_exe;
|
||||
|
||||
our @global_suppressions;
|
||||
|
||||
@ -373,8 +377,162 @@ $| = 1; # Automatically flush STDOUT
|
||||
|
||||
main();
|
||||
|
||||
sub have_wsrep() {
|
||||
my $wsrep_on= $mysqld_variables{'wsrep-on'};
|
||||
return defined $wsrep_on
|
||||
}
|
||||
|
||||
sub have_wsrep_provider() {
|
||||
return $file_wsrep_provider ne "";
|
||||
}
|
||||
|
||||
sub have_mariabackup() {
|
||||
return $mariabackup_path ne "";
|
||||
}
|
||||
|
||||
sub have_garbd() {
|
||||
return $garbd_exe ne "";
|
||||
}
|
||||
|
||||
sub check_wsrep_version() {
|
||||
if ($My::SafeProcess::wsrep_check_version ne "") {
|
||||
system($My::SafeProcess::wsrep_check_version);
|
||||
return ($? >> 8) == 0;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
sub wsrep_version_message() {
|
||||
if ($My::SafeProcess::wsrep_check_version ne "") {
|
||||
my $output= `$My::SafeProcess::wsrep_check_version -p`;
|
||||
if (($? >> 8) == 0) {
|
||||
$output =~ s/\s+\z//;
|
||||
return "Wsrep provider version mismatch (".$output.")";
|
||||
}
|
||||
else {
|
||||
return "Galera library does not contain a version symbol";
|
||||
}
|
||||
}
|
||||
else {
|
||||
return "Unable to find a wsrep version check utility";
|
||||
}
|
||||
}
|
||||
|
||||
sub which($) { return `sh -c "command -v $_[0]"` }
|
||||
|
||||
sub check_garbd_support() {
|
||||
if (defined $ENV{'MTR_GARBD_EXE'}) {
|
||||
if (mtr_file_exists($ENV{'MTR_GARBD_EXE'}) ne "") {
|
||||
$garbd_exe= $ENV{'MTR_GARBD_EXE'};
|
||||
} else {
|
||||
mtr_error("MTR_GARBD_EXE env set to an invalid path");
|
||||
}
|
||||
}
|
||||
else {
|
||||
my $wsrep_path= dirname($file_wsrep_provider);
|
||||
$garbd_exe=
|
||||
mtr_file_exists($wsrep_path."/garb/garbd",
|
||||
$wsrep_path."/../../bin/garb/garbd");
|
||||
if ($garbd_exe ne "") {
|
||||
$ENV{MTR_GARBD_EXE}= $garbd_exe;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub check_wsrep_support() {
|
||||
$garbd_exe= "";
|
||||
if (have_wsrep()) {
|
||||
mtr_report(" - binaries built with wsrep patch");
|
||||
|
||||
# ADD scripts to $PATH to that wsrep_sst_* can be found
|
||||
my ($spath) = grep { -f "$_/wsrep_sst_rsync"; } "$bindir/scripts", $path_client_bindir;
|
||||
mtr_error("No SST scripts") unless $spath;
|
||||
$ENV{PATH}="$spath:$ENV{PATH}";
|
||||
|
||||
# ADD mysql client library path to path so that wsrep_notify_cmd can find mysql
|
||||
# client for loading the tables. (Don't assume each machine has mysql install)
|
||||
my ($cpath) = grep { -f "$_/mysql"; } "$bindir/scripts", $path_client_bindir;
|
||||
mtr_error("No scritps") unless $cpath;
|
||||
$ENV{PATH}="$cpath:$ENV{PATH}" unless $cpath eq $spath;
|
||||
|
||||
# ADD my_print_defaults script path to path so that SST scripts can find it
|
||||
my ($epath) = grep { -f "$_/my_print_defaults"; } "$bindir/extra", $path_client_bindir;
|
||||
mtr_error("No my_print_defaults") unless $epath;
|
||||
$ENV{PATH}="$epath:$ENV{PATH}" unless ($epath eq $spath) or
|
||||
($epath eq $cpath);
|
||||
|
||||
$extra_path= $epath;
|
||||
|
||||
if (which("socat")) {
|
||||
$ENV{MTR_GALERA_TFMT}="socat";
|
||||
} elsif (which("nc")) {
|
||||
$ENV{MTR_GALERA_TFMT}="nc";
|
||||
}
|
||||
|
||||
# Check whether WSREP_PROVIDER environment variable is set.
|
||||
if (defined $ENV{'WSREP_PROVIDER'}) {
|
||||
$file_wsrep_provider= "";
|
||||
if ($ENV{'WSREP_PROVIDER'} ne "none") {
|
||||
if (mtr_file_exists($ENV{'WSREP_PROVIDER'}) ne "") {
|
||||
$file_wsrep_provider= $ENV{'WSREP_PROVIDER'};
|
||||
} else {
|
||||
mtr_error("WSREP_PROVIDER env set to an invalid path");
|
||||
}
|
||||
check_garbd_support();
|
||||
}
|
||||
# WSREP_PROVIDER is valid; set to a valid path or "none").
|
||||
mtr_verbose("WSREP_PROVIDER env set to $ENV{'WSREP_PROVIDER'}");
|
||||
} else {
|
||||
# WSREP_PROVIDER env not defined. Lets try to locate the wsrep provider
|
||||
# library.
|
||||
$file_wsrep_provider=
|
||||
mtr_file_exists("/usr/lib64/galera-4/libgalera_smm.so",
|
||||
"/usr/lib64/galera/libgalera_smm.so",
|
||||
"/usr/lib/galera-4/libgalera_smm.so",
|
||||
"/usr/lib/galera/libgalera_smm.so");
|
||||
if ($file_wsrep_provider ne "") {
|
||||
# wsrep provider library found !
|
||||
mtr_verbose("wsrep provider library found : $file_wsrep_provider");
|
||||
$ENV{'WSREP_PROVIDER'}= $file_wsrep_provider;
|
||||
check_garbd_support();
|
||||
} else {
|
||||
mtr_verbose("Could not find wsrep provider library, setting it to 'none'");
|
||||
$ENV{'WSREP_PROVIDER'}= "none";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$file_wsrep_provider= "";
|
||||
$extra_path= "";
|
||||
}
|
||||
}
|
||||
|
||||
sub check_mariabackup_support() {
|
||||
$mariabackup_path= "";
|
||||
$mariabackup_exe=
|
||||
mtr_exe_maybe_exists(
|
||||
"$bindir/extra/mariabackup$opt_vs_config/mariabackup",
|
||||
"$path_client_bindir/mariabackup");
|
||||
if ($mariabackup_exe ne "") {
|
||||
my ($bpath) = grep { -f "$_/mariabackup"; } "$bindir/extra/mariabackup$opt_vs_config", $path_client_bindir;
|
||||
$ENV{PATH}="$bpath:$ENV{PATH}" unless $bpath eq $extra_path;
|
||||
|
||||
$mariabackup_path= $bpath;
|
||||
|
||||
$ENV{XTRABACKUP}= $mariabackup_exe;
|
||||
|
||||
$ENV{XBSTREAM}= mtr_exe_maybe_exists(
|
||||
"$bindir/extra/mariabackup/$opt_vs_config/mbstream",
|
||||
"$path_client_bindir/mbstream");
|
||||
|
||||
$ENV{INNOBACKUPEX}= "$mariabackup_exe --innobackupex";
|
||||
}
|
||||
}
|
||||
|
||||
sub main {
|
||||
$ENV{MTR_PERL}=$^X;
|
||||
|
||||
# Default, verbosity on
|
||||
report_option('verbose', 0);
|
||||
|
||||
@ -416,6 +574,8 @@ sub main {
|
||||
}
|
||||
check_ssl_support();
|
||||
check_debug_support();
|
||||
check_wsrep_support();
|
||||
check_mariabackup_support();
|
||||
|
||||
if (!$opt_suites) {
|
||||
$opt_suites= join ',', collect_default_suites(@DEFAULT_SUITES);
|
||||
@ -849,6 +1009,8 @@ sub run_test_server ($$$) {
|
||||
next if (defined $t->{reserved} and $t->{reserved} != $wid);
|
||||
if (! defined $t->{reserved})
|
||||
{
|
||||
# Force-restart not relevant when comparing *next* test
|
||||
$t->{criteria} =~ s/force-restart$/no-restart/;
|
||||
my $criteria= $t->{criteria};
|
||||
# Reserve similar tests for this worker, but not too many
|
||||
my $maxres= (@$tests - $i) / $opt_parallel + 1;
|
||||
@ -1887,7 +2049,10 @@ sub collect_mysqld_features {
|
||||
if (/Copyright/ .. /^-{30,}/) {
|
||||
# here we want to detect all not mandatory plugins
|
||||
# they are listed in the --help output as
|
||||
# --archive[=name] Enable or disable ARCHIVE plugin. Possible values are ON, OFF, FORCE (don't start if the plugin fails to load).
|
||||
# --archive[=name]
|
||||
# Enable or disable ARCHIVE plugin. Possible values are ON, OFF,
|
||||
# FORCE (don't start if the plugin fails to load),
|
||||
# FORCE_PLUS_PERMANENT (like FORCE, but the plugin can not be uninstalled).
|
||||
push @optional_plugins, $1
|
||||
if /^ --([-a-z0-9]+)\[=name\] +Enable or disable \w+ plugin. One of: ON, OFF, FORCE/;
|
||||
next;
|
||||
@ -2581,82 +2746,72 @@ sub setup_vardir() {
|
||||
copytree("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data", "0022");
|
||||
|
||||
# create a plugin dir and copy or symlink plugins into it
|
||||
if ($source_dist)
|
||||
unless($plugindir)
|
||||
{
|
||||
$plugindir="$opt_vardir/plugins";
|
||||
mkpath($plugindir);
|
||||
if (IS_WINDOWS)
|
||||
if ($source_dist)
|
||||
{
|
||||
if (!$opt_embedded_server)
|
||||
$plugindir="$opt_vardir/plugins";
|
||||
mkpath($plugindir);
|
||||
if (IS_WINDOWS)
|
||||
{
|
||||
for (<$bindir/storage/*$opt_vs_config/*.dll>,
|
||||
<$bindir/plugin/*$opt_vs_config/*.dll>,
|
||||
<$bindir/libmariadb$opt_vs_config/*.dll>,
|
||||
<$bindir/sql$opt_vs_config/*.dll>)
|
||||
if (!$opt_embedded_server)
|
||||
{
|
||||
for (<$bindir/storage/*$opt_vs_config/*.dll>,
|
||||
<$bindir/plugin/*$opt_vs_config/*.dll>,
|
||||
<$bindir/libmariadb$opt_vs_config/*.dll>,
|
||||
<$bindir/sql$opt_vs_config/*.dll>)
|
||||
{
|
||||
my $pname=basename($_);
|
||||
copy rel2abs($_), "$plugindir/$pname";
|
||||
set_plugin_var($pname);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
my $opt_use_copy= 1;
|
||||
if (symlink "$opt_vardir/run", "$plugindir/symlink_test")
|
||||
{
|
||||
$opt_use_copy= 0;
|
||||
unlink "$plugindir/symlink_test";
|
||||
}
|
||||
|
||||
for (<$bindir/storage/*/*.so>,
|
||||
<$bindir/plugin/*/*.so>,
|
||||
<$bindir/plugin/*/auth_pam_tool_dir>,
|
||||
<$bindir/libmariadb/plugins/*/*.so>,
|
||||
<$bindir/libmariadb/*.so>,
|
||||
<$bindir/sql/*.so>)
|
||||
{
|
||||
my $pname=basename($_);
|
||||
copy rel2abs($_), "$plugindir/$pname";
|
||||
if ($opt_use_copy)
|
||||
{
|
||||
copy rel2abs($_), "$plugindir/$pname";
|
||||
}
|
||||
else
|
||||
{
|
||||
symlink rel2abs($_), "$plugindir/$pname";
|
||||
}
|
||||
set_plugin_var($pname);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
my $opt_use_copy= 1;
|
||||
if (symlink "$opt_vardir/run", "$plugindir/symlink_test")
|
||||
{
|
||||
$opt_use_copy= 0;
|
||||
unlink "$plugindir/symlink_test";
|
||||
}
|
||||
|
||||
for (<$bindir/plugin/auth_pam/auth_pam_tool>)
|
||||
{
|
||||
mkpath("$plugindir/auth_pam_tool_dir");
|
||||
if ($opt_use_copy)
|
||||
{
|
||||
copy rel2abs($_), "$plugindir/auth_pam_tool_dir/auth_pam_tool"
|
||||
}
|
||||
else
|
||||
{
|
||||
symlink rel2abs($_), "$plugindir/auth_pam_tool_dir/auth_pam_tool";
|
||||
}
|
||||
}
|
||||
|
||||
for (<$bindir/storage/*/*.so>,
|
||||
<$bindir/plugin/*/*.so>,
|
||||
<$bindir/plugin/*/auth_pam_tool_dir>,
|
||||
<$bindir/libmariadb/plugins/*/*.so>,
|
||||
<$bindir/libmariadb/*.so>,
|
||||
<$bindir/sql/*.so>)
|
||||
# hm, what paths work for debs and for rpms ?
|
||||
for (<$bindir/lib64/mysql/plugin/*.so>,
|
||||
<$bindir/lib/mysql/plugin/*.so>,
|
||||
<$bindir/lib64/mariadb/plugin/*.so>,
|
||||
<$bindir/lib/mariadb/plugin/*.so>,
|
||||
<$bindir/lib/plugin/*.so>, # bintar
|
||||
<$bindir/lib/plugin/*.dll>)
|
||||
{
|
||||
my $pname=basename($_);
|
||||
if ($opt_use_copy)
|
||||
{
|
||||
copy rel2abs($_), "$plugindir/$pname";
|
||||
}
|
||||
else
|
||||
{
|
||||
symlink rel2abs($_), "$plugindir/$pname";
|
||||
}
|
||||
set_plugin_var($pname);
|
||||
$plugindir=dirname($_) unless $plugindir;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$plugindir= $mysqld_variables{'plugin-dir'} || '.';
|
||||
# hm, what paths work for debs and for rpms ?
|
||||
for (<$bindir/lib64/mysql/plugin/*.so>,
|
||||
<$bindir/lib/mysql/plugin/*.so>,
|
||||
<$bindir/lib64/mariadb/plugin/*.so>,
|
||||
<$bindir/lib/mariadb/plugin/*.so>,
|
||||
<$bindir/lib/plugin/*.so>, # bintar
|
||||
<$bindir/lib/plugin/*.dll>)
|
||||
{
|
||||
my $pname=basename($_);
|
||||
set_plugin_var($pname);
|
||||
}
|
||||
}
|
||||
|
||||
# Remove old log files
|
||||
foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
|
||||
@ -3750,6 +3905,25 @@ sub find_analyze_request
|
||||
return $analyze;
|
||||
}
|
||||
|
||||
# The test can leave a file in var/tmp/ to signal
|
||||
# that all servers should be restarted
|
||||
sub restart_forced_by_test($)
|
||||
{
|
||||
my $file = shift;
|
||||
my $restart = 0;
|
||||
foreach my $mysqld ( mysqlds() )
|
||||
{
|
||||
my $datadir = $mysqld->value('datadir');
|
||||
my $force_restart_file = "$datadir/mtr/$file";
|
||||
if ( -f $force_restart_file )
|
||||
{
|
||||
mtr_verbose("Restart of servers forced by test");
|
||||
$restart = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
return $restart;
|
||||
}
|
||||
|
||||
# Return timezone value of tinfo or default value
|
||||
sub timezone {
|
||||
@ -4110,8 +4284,12 @@ sub run_testcase ($$) {
|
||||
if ( $res == 0 )
|
||||
{
|
||||
my $check_res;
|
||||
if ( $opt_check_testcases and
|
||||
$check_res= check_testcase($tinfo, "after"))
|
||||
if ( restart_forced_by_test('force_restart') )
|
||||
{
|
||||
stop_all_servers($opt_shutdown_timeout);
|
||||
}
|
||||
elsif ( $opt_check_testcases and
|
||||
$check_res= check_testcase($tinfo, "after"))
|
||||
{
|
||||
if ($check_res == 1) {
|
||||
# Test case had sideeffects, not fatal error, just continue
|
||||
@ -4146,7 +4324,8 @@ sub run_testcase ($$) {
|
||||
find_testcase_skipped_reason($tinfo);
|
||||
mtr_report_test_skipped($tinfo);
|
||||
# Restart if skipped due to missing perl, it may have had side effects
|
||||
if ( $tinfo->{'comment'} =~ /^perl not found/ )
|
||||
if ( restart_forced_by_test('force_restart_if_skipped') ||
|
||||
$tinfo->{'comment'} =~ /^perl not found/ )
|
||||
{
|
||||
stop_all_servers($opt_shutdown_timeout);
|
||||
}
|
||||
@ -5298,6 +5477,11 @@ sub server_need_restart {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( $tinfo->{'force_restart'} ) {
|
||||
mtr_verbose_restart($server, "forced in .opt file");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ( $opt_force_restart ) {
|
||||
mtr_verbose_restart($server, "forced restart turned on");
|
||||
return 1;
|
||||
@ -6392,6 +6576,7 @@ Misc options
|
||||
servers to exit before finishing the process
|
||||
fast Run as fast as possible, don't wait for servers
|
||||
to shutdown etc.
|
||||
force-restart Always restart servers between tests
|
||||
parallel=N Run tests in N parallel threads (default 1)
|
||||
Use parallel=auto for auto-setting of N
|
||||
repeat=N Run each test N number of times
|
||||
|
26
mysql-test/std_data/galera-cert.pem
Normal file
26
mysql-test/std_data/galera-cert.pem
Normal file
@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDWTCCAkGgAwIBAgIJAIlW4JmZGnU4MA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
|
||||
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
|
||||
Q29tcGFueSBMdGQwIBcNMTQxMDI0MDc1MTU1WhgPMzAxNDAyMjQwNzUxNTVaMEIx
|
||||
CzAJBgNVBAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl
|
||||
ZmF1bHQgQ29tcGFueSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
||||
AQDDzU6xLZDD5rZENsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2Qa
|
||||
MyTkvyjzf7bSFsDt9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BW
|
||||
B3lcoKXXJgMnWw0WGrt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5
|
||||
kdcIbDRVw81J4eAZ6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrM
|
||||
mhOeL8kuQV0fI8v2xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWX
|
||||
Qo98swTu7mb89qVYmR71d3L3AgMBAAGjUDBOMB0GA1UdDgQWBBRdWet/kGNTyvXK
|
||||
wuBdP/eSldOgWjAfBgNVHSMEGDAWgBRdWet/kGNTyvXKwuBdP/eSldOgWjAMBgNV
|
||||
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcJpP+DR4AJxVelNTSZa+V38c+
|
||||
jgrMD2Ku2eU8NQlsjgMfNEU5Md/g7FpP8aCFzVf0kAAT7DxZmSE3uWXQbMXyVJmy
|
||||
bF+qXinf71QzdWULm6sASoshC6wbHnXL9ZjWQ3gh1nqVgo3MmLQYrb3eJfKaaLoc
|
||||
wpjhYxVxGFOx1ITN3jED64lUfoLHvR6NFbESYKAuAAzSNqX4HOQ3uGk2THM8JocZ
|
||||
oH2+38d81Kd4HQ7DDDKS/isG0+rR60Ti1cMgu7OT7p1dZCwT/KQuI5eGjE9lubkc
|
||||
yAJjaod4rVLdBri3XVvtySfS2+/75qUgv2TF7d/s7mxMq4DDt29yeKSUhZCs
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN DH PARAMETERS-----
|
||||
MIGHAoGBAJWyvKjE+s7OP4Lj1jXKGlJGWT4Vd5YaxPljihTsRe1aXkWAgsuwISXk
|
||||
/TQ8Rx5Zmze7rtwtU0PoYxvuam9FMXYqhw2dVe4qRdeSX78DSiL/YBkQzaxlfWVy
|
||||
RE9+9dzHbCtRVDlN7K1kA+mGWH4/r7NAu4Qm/003V0NTtMwQSqebAgEC
|
||||
-----END DH PARAMETERS-----
|
||||
|
28
mysql-test/std_data/galera-key.pem
Normal file
28
mysql-test/std_data/galera-key.pem
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDDzU6xLZDD5rZE
|
||||
NsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2QaMyTkvyjzf7bSFsDt
|
||||
9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BWB3lcoKXXJgMnWw0W
|
||||
Grt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5kdcIbDRVw81J4eAZ
|
||||
6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrMmhOeL8kuQV0fI8v2
|
||||
xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWXQo98swTu7mb89qVY
|
||||
mR71d3L3AgMBAAECggEBAIMT0UdZSp1quL/nrYqNGa9kuSuDz4uCM3+3jNcGZVU4
|
||||
vCYHxpmINLi0UK8W5ROJA3zC4AZKjDgOlW93NXK5iKyyiUTIN3hiJi4jiVDuGbh2
|
||||
DZtH7mmAKAU1zCx2y2osLLmurfbe8qOJF7ShhrZfgWsHFujFhhUdU92dsTkhZ7EU
|
||||
2NF8ScxCo4PbOJoHC3j0ApfwCMxUMAKZF5+08EeKYqK7OAXI79HeIvEbHn3cUDGm
|
||||
bvg6ykwlz2UUO4sg+xdCmn1Bt36HF/4e973Y5fkE/vd9mryHIlu9t7GJgWyUiPr8
|
||||
BGEoAWDSpPOMd/b9ivtxh9Gd+LW/uitMuBIfrRPgz9kCgYEA+JqeeD2xqF2IzZyq
|
||||
i1UqgKe3su2U2zhkgbu1h/1M/reNIZGylF0wFs3P+kNIB2NavmHjXcgSjdJzqRL9
|
||||
XEWfFJRmeARo9RTEQEVd8zp1Eo8ISeiksGgvbL4rrNIRR5V5MZytfISRiGCWN6jx
|
||||
ulJ6EieQk5EcvknGlWpJY/bBsQ0CgYEAyaCLqrR38gVl2Z0t6YlhW/HWAwGt+lf4
|
||||
apN1AS4uykx7wRW2B0y9QUDfsrYeVlbbeRPP4UzPmJez+J2cweoIIeFFyo3KP2L7
|
||||
79E3EVYywjXhPg52F7OjFA4Bp970XclIC5Al7kDufSgwZmWdceSx4Jjc5ixyQEC8
|
||||
Ad0ThgP6yxMCgYAvC4OFmZcvF1Q2JLmZWGqMojB/KbqLqaZLbqwxqduSMEYC3kF/
|
||||
FgttpVEAOQ8+ZqzbbkbKjnwEXpkIm9FaTsqF6HdjquH5zw48Y2QeDSfudSbKZb4U
|
||||
rAKdf3dgYvhmJYEjxFSIRcYMmsqSieQEsGrtWJNheYqI8AkmaVCuHBoXWQKBgQCj
|
||||
daelNffD2wJuQNI28axfiRjSiSsNuQHpDTCfS1ydnxH5QGu5UUphO4HfdWv03SfC
|
||||
6f/vDIGEmQBLvyOVxfDf3qzhAMCFUO8kxj1ZrcMq1dmMoNa2cmj0WkKXYNZFrmfd
|
||||
D/jgRf3Ss6FBcoIJErnudp8nb8MUOibxb9RjIpjQxwKBgEliKaGN+/QkPTNJ4vXz
|
||||
609CIilxpE+YVTzlv3YeZP5HqsJTJPS2ARIUr/Pjpbl3LHfYNeeGDCwgkJIK0JJH
|
||||
iA1M51q6t3zG2y9gKmC15FF0jShoZkRgqBxqrSHAnrCo5t2C48ElxJ3FEU8T75sz
|
||||
dlGTbkmR0Wm43Kh++dWICJ3g
|
||||
-----END PRIVATE KEY-----
|
40
mysql-test/std_data/galera-upgrade-ca-cert.pem
Normal file
40
mysql-test/std_data/galera-upgrade-ca-cert.pem
Normal file
@ -0,0 +1,40 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDWTCCAkGgAwIBAgIJAIlW4JmZGnU4MA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
|
||||
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
|
||||
Q29tcGFueSBMdGQwIBcNMTQxMDI0MDc1MTU1WhgPMzAxNDAyMjQwNzUxNTVaMEIx
|
||||
CzAJBgNVBAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0Rl
|
||||
ZmF1bHQgQ29tcGFueSBMdGQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
||||
AQDDzU6xLZDD5rZENsOpTpTmqS8YisBaefU3ZeN7VJepZZ/7unM/1YLGJtuRh2Qa
|
||||
MyTkvyjzf7bSFsDt9L5lfQwBBblVeWkrCvGnQmHDQQYB7JrSmFDPz9W9Mxf9Q2BW
|
||||
B3lcoKXXJgMnWw0WGrt0lEdFp9gWbq8H9hwJdjpyyk4ZTIuucSOD4JUP3QFEhYU5
|
||||
kdcIbDRVw81J4eAZ6EdvbjDN05S7qWjW7rJTnCHAHEd18hcsMGwjpwhjEaSdhMrM
|
||||
mhOeL8kuQV0fI8v2xfYBliIn9xBZGOVzySPzwFmQceORlW6F3V5w6mwFkmuXqXWX
|
||||
Qo98swTu7mb89qVYmR71d3L3AgMBAAGjUDBOMB0GA1UdDgQWBBRdWet/kGNTyvXK
|
||||
wuBdP/eSldOgWjAfBgNVHSMEGDAWgBRdWet/kGNTyvXKwuBdP/eSldOgWjAMBgNV
|
||||
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCcJpP+DR4AJxVelNTSZa+V38c+
|
||||
jgrMD2Ku2eU8NQlsjgMfNEU5Md/g7FpP8aCFzVf0kAAT7DxZmSE3uWXQbMXyVJmy
|
||||
bF+qXinf71QzdWULm6sASoshC6wbHnXL9ZjWQ3gh1nqVgo3MmLQYrb3eJfKaaLoc
|
||||
wpjhYxVxGFOx1ITN3jED64lUfoLHvR6NFbESYKAuAAzSNqX4HOQ3uGk2THM8JocZ
|
||||
oH2+38d81Kd4HQ7DDDKS/isG0+rR60Ti1cMgu7OT7p1dZCwT/KQuI5eGjE9lubkc
|
||||
yAJjaod4rVLdBri3XVvtySfS2+/75qUgv2TF7d/s7mxMq4DDt29yeKSUhZCs
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDVzCCAj+gAwIBAgIJALBO5bqmtlYkMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
|
||||
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
|
||||
Q29tcGFueSBMdGQwHhcNMTUwNjI2MDcxMjQ1WhcNMjUwNTA0MDcxMjQ1WjBCMQsw
|
||||
CQYDVQQGEwJGSTEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh
|
||||
dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
1DlcztIzSngGeTUFibj9GZ4ZO78ASpgYySZv/DRIVn/3hbF41ZRD/6uJlb5rf1R7
|
||||
fpFsurbXNDDxeap7b/Gz2XSQy96Dbm0SbsFSZttV/R2WtlT1Wf5n9ix6RLqhKSbg
|
||||
nPyL2fsDaxtZh2uywGJEXhwXFtdx3deIo/tYivDfl5Tcsv0NnZY8Vg0boBRP+FEn
|
||||
ReJOdSa5LLn+QJN2Xa+wutbLHe0hI6huKUXU2YUeBfgyk1nWol5241ZUDCgDsoaW
|
||||
8r2YeJNHmNInd3wERbqFgFHsR4N1+Atcyrfn/uQSj9zrTPO/Pp51KpjWf/gjxjXP
|
||||
biu5De50qZ4+U4no20EIOwIDAQABo1AwTjAdBgNVHQ4EFgQU3kSPGchrOoQJ5gq1
|
||||
mmV2HEra6GswHwYDVR0jBBgwFoAU3kSPGchrOoQJ5gq1mmV2HEra6GswDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAfoBD64FJ9fAR19+vwueFGmpWNIqF
|
||||
PzN7QmEpCMduV3DXuxYO73q2ikXgrVO5HWFz9IjNvzXbSRmWNzJGaZ3QYZ+Xx1JJ
|
||||
8MrAOUr6djWuyD659f64dh/2jMxiQNoEHrknXm9HSqR5oJVwndFyr/zvSkYSRexE
|
||||
KFciIprb9LOba9G3ZMBYBdqK+f3Ky16BMjaD6XfaTx+xjHk/8peSueXIQl+v2biz
|
||||
zSfpEUa0dKCIxckrzD4JknDHFimTsrzlRftcg8t8piOXwZomFcnVunyGs2bJ/Npj
|
||||
25c2e6sx7XSc5bUgPGuQcSGflZPLg9zWyJ69sVYUNAz+gqfvWfOOJuzPNg==
|
||||
-----END CERTIFICATE-----
|
20
mysql-test/std_data/galera-upgrade-server-cert.pem
Normal file
20
mysql-test/std_data/galera-upgrade-server-cert.pem
Normal file
@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDVzCCAj+gAwIBAgIJALBO5bqmtlYkMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNV
|
||||
BAYTAkZJMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQg
|
||||
Q29tcGFueSBMdGQwHhcNMTUwNjI2MDcxMjQ1WhcNMjUwNTA0MDcxMjQ1WjBCMQsw
|
||||
CQYDVQQGEwJGSTEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZh
|
||||
dWx0IENvbXBhbnkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
1DlcztIzSngGeTUFibj9GZ4ZO78ASpgYySZv/DRIVn/3hbF41ZRD/6uJlb5rf1R7
|
||||
fpFsurbXNDDxeap7b/Gz2XSQy96Dbm0SbsFSZttV/R2WtlT1Wf5n9ix6RLqhKSbg
|
||||
nPyL2fsDaxtZh2uywGJEXhwXFtdx3deIo/tYivDfl5Tcsv0NnZY8Vg0boBRP+FEn
|
||||
ReJOdSa5LLn+QJN2Xa+wutbLHe0hI6huKUXU2YUeBfgyk1nWol5241ZUDCgDsoaW
|
||||
8r2YeJNHmNInd3wERbqFgFHsR4N1+Atcyrfn/uQSj9zrTPO/Pp51KpjWf/gjxjXP
|
||||
biu5De50qZ4+U4no20EIOwIDAQABo1AwTjAdBgNVHQ4EFgQU3kSPGchrOoQJ5gq1
|
||||
mmV2HEra6GswHwYDVR0jBBgwFoAU3kSPGchrOoQJ5gq1mmV2HEra6GswDAYDVR0T
|
||||
BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAfoBD64FJ9fAR19+vwueFGmpWNIqF
|
||||
PzN7QmEpCMduV3DXuxYO73q2ikXgrVO5HWFz9IjNvzXbSRmWNzJGaZ3QYZ+Xx1JJ
|
||||
8MrAOUr6djWuyD659f64dh/2jMxiQNoEHrknXm9HSqR5oJVwndFyr/zvSkYSRexE
|
||||
KFciIprb9LOba9G3ZMBYBdqK+f3Ky16BMjaD6XfaTx+xjHk/8peSueXIQl+v2biz
|
||||
zSfpEUa0dKCIxckrzD4JknDHFimTsrzlRftcg8t8piOXwZomFcnVunyGs2bJ/Npj
|
||||
25c2e6sx7XSc5bUgPGuQcSGflZPLg9zWyJ69sVYUNAz+gqfvWfOOJuzPNg==
|
||||
-----END CERTIFICATE-----
|
28
mysql-test/std_data/galera-upgrade-server-key.pem
Normal file
28
mysql-test/std_data/galera-upgrade-server-key.pem
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDUOVzO0jNKeAZ5
|
||||
NQWJuP0Znhk7vwBKmBjJJm/8NEhWf/eFsXjVlEP/q4mVvmt/VHt+kWy6ttc0MPF5
|
||||
qntv8bPZdJDL3oNubRJuwVJm21X9HZa2VPVZ/mf2LHpEuqEpJuCc/IvZ+wNrG1mH
|
||||
a7LAYkReHBcW13Hd14ij+1iK8N+XlNyy/Q2dljxWDRugFE/4USdF4k51Jrksuf5A
|
||||
k3Zdr7C61ssd7SEjqG4pRdTZhR4F+DKTWdaiXnbjVlQMKAOyhpbyvZh4k0eY0id3
|
||||
fARFuoWAUexHg3X4C1zKt+f+5BKP3OtM878+nnUqmNZ/+CPGNc9uK7kN7nSpnj5T
|
||||
iejbQQg7AgMBAAECggEBAJ4m7VG3db+uOGzFJY5fzEX1+qn6ibYNKJNmUJfrQmkr
|
||||
zgLUoc7QQehbJhnwoN1v0OQebZ+rOC7NtnZLpNdkkPmhk3JKLTnykIT3DnhWRftt
|
||||
vG2+XGUnYMQkmy1ywz0Omt6CmZnlJMQByrNPgBM8Z+SWHGLKRTHkOBCz82T/YjDr
|
||||
wqug1Yv6W0wMNM/cikgoBldVG7hABCJuShjffIbUgVysK3dEPNywNAC78neoGECm
|
||||
evPZOaIkWEr86SpAlwA6Yh+zTQZ03CXATcGonJdWJ015DvlKRv6QyRR0Q/Y1ONwb
|
||||
f115kll15MJBEspFdSyhlMcVJlwO8WMaZ2qIzlQZmdECgYEA//P469QzX00L/urK
|
||||
7IRvtSVu5CP/A/Wui90U4KoP7XgXIeExnEtzLVs1K7vjuzdpTyq+68XuC40gPcJW
|
||||
RvoX229m6gRV8nC53UiV71jM8IvkyEqFYT/gfZC9KQCMSRJLtVnDMpZ3gMxAY6/5
|
||||
p20o616Au8DKFFetQV0aD4Hj1/MCgYEA1ENV1WkgvN6yItB77E9kN/vbKLRh0hrg
|
||||
9xj0SmMXGYyDM9NpjbgbgJIZo3ukkBtp3kEY8P9JQZRcd1EcnnSrwTB7ChdInWkR
|
||||
m/LpIZBEMqNQbeu4QSzZYYS6z4tcGGx43aHqzzNBZdnQnqhYL1CvlLwhkgX6oQCo
|
||||
woXqyfMNKJkCgYEA63gD1NGPwWkcVBSlQxpDup8JeZE0Fux6++kUP+u0Y39LqLuH
|
||||
7IXtHBkAvY9JXv8HPvHQWw/og2/97VNQFFQYhqPiRgBfIX9bPpx8c4l6YQISI8GL
|
||||
G4CsglgZ7hK2/LJ8PAascWnD3xYJVqyaPNFMB90VCaW/Qx+2IKAKTaHtfskCgYBu
|
||||
1f5C4pMqrCpeTXj4Cvis1wE4PwB5QnnH7SrakOVl/N4huLn8O2948lEa8Zwbd4UP
|
||||
ffR1Gwh4iuzBjQQhpZBt30/QFBphv5RnVy7uzLMfsfF0hEqBFdcoubMGXqGnSzTN
|
||||
nhfLO9thQJxTzFnH0xzr0FTDOAYH/h0g/eZ8r0JmuQKBgQDjhXM+hJ3Pkwua+Fnl
|
||||
nZfY5MeSzkJki/9iwVo8rSDwmZS9Nsc83oZnddM7c2x63t+zYOAcMxsVCiByMDzo
|
||||
5IB781HWRBGcU8TnW1b0bAnZimjKp/qsZ/Szr38rvImqG8TjzbcSD7w0SpyRQ/Ot
|
||||
A7SZFkWYfem8/q/VImjU/CNbOQ==
|
||||
-----END PRIVATE KEY-----
|
@ -22,6 +22,9 @@ sub skip_combinations {
|
||||
$skip{'include/maybe_debug.combinations'} =
|
||||
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];
|
||||
|
||||
$skip{'include/have_debug.inc'} = 'Requires debug build'
|
||||
unless defined $::mysqld_variables{'debug-dbug'};
|
||||
|
||||
# and for the wrong word size
|
||||
# check for exact values, in case the default changes to be small everywhere
|
||||
my $longsysvar= $::mysqld_variables{'max-binlog-stmt-cache-size'};
|
||||
@ -36,13 +39,6 @@ sub skip_combinations {
|
||||
$skip{'include/not_embedded.inc'} = 'Not run for embedded server'
|
||||
if $::opt_embedded_server;
|
||||
|
||||
$skip{'include/have_debug.inc'} = 'Requires debug build'
|
||||
unless defined $::mysqld_variables{'debug-dbug'};
|
||||
|
||||
$skip{'include/have_ssl_communication.inc'} =
|
||||
$skip{'include/have_ssl_crypto_functs.inc'} = 'Requires SSL'
|
||||
unless defined $::mysqld_variables{'ssl-ca'};
|
||||
|
||||
$skip{'include/have_example_plugin.inc'} = 'Need example plugin'
|
||||
unless $ENV{HA_EXAMPLE_SO};
|
||||
|
||||
@ -51,6 +47,21 @@ sub skip_combinations {
|
||||
$skip{'main/plugin_loaderr.test'} = 'needs compiled-in innodb'
|
||||
unless $::mysqld_variables{'innodb'} eq "ON";
|
||||
|
||||
$skip{'include/have_mariabackup.inc'} = 'Need mariabackup'
|
||||
unless ::have_mariabackup();
|
||||
|
||||
$skip{'include/have_mariabackup.inc'} = 'Need ss'
|
||||
unless ::which("ss");
|
||||
|
||||
$skip{'include/have_mariabackup.inc'} = 'Need socat or nc'
|
||||
unless $ENV{MTR_GALERA_TFMT};
|
||||
|
||||
$skip{'include/have_garbd.inc'} = 'Need garbd'
|
||||
unless ::have_garbd();
|
||||
|
||||
$skip{'include/have_file_key_management.inc'} = 'Needs file_key_management plugin'
|
||||
unless $ENV{FILE_KEY_MANAGEMENT_SO};
|
||||
|
||||
# disable tests that use ipv6, if unsupported
|
||||
sub ipv6_ok() {
|
||||
use Socket;
|
||||
@ -62,22 +73,31 @@ sub skip_combinations {
|
||||
}
|
||||
$skip{'include/check_ipv6.inc'} = 'No IPv6' unless ipv6_ok();
|
||||
|
||||
$skip{'main/openssl_6975.test'} = 'no or wrong openssl version'
|
||||
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
||||
and $1 ge "1.0.1d" and $1 lt "1.1.1";
|
||||
# SSL is complicated
|
||||
my $ssl_lib= $::mysqld_variables{'version-ssl-library'};
|
||||
my $openssl_ver= $ssl_lib =~ /OpenSSL (\S+)/ ? $1 : "";
|
||||
|
||||
sub x509v3_ok() {
|
||||
return ($::mysqld_variables{'version-ssl-library'} =~ /WolfSSL/) ||
|
||||
($::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
||||
and $1 ge "1.0.2");
|
||||
}
|
||||
$skip{'include/have_ssl_communication.inc'} =
|
||||
$skip{'include/have_ssl_crypto_functs.inc'} = 'Requires SSL' unless $ssl_lib;
|
||||
|
||||
$skip{'main/openssl_6975.test'} = 'no or wrong openssl version'
|
||||
unless $openssl_ver ge "1.0.1d" and $openssl_ver lt "1.1.1";
|
||||
|
||||
$skip{'main/ssl_7937.combinations'} = [ 'x509v3' ]
|
||||
unless x509v3_ok();
|
||||
unless $ssl_lib =~ /WolfSSL/ or $openssl_ver ge "1.0.2";
|
||||
|
||||
$skip{'main/ssl_verify_ip.test'} = 'x509v3 support required'
|
||||
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
||||
and $1 ge "1.0.2";
|
||||
unless $openssl_ver ge "1.0.2";
|
||||
|
||||
my $openssl_cnf='/etc/ssl/openssl.cnf';
|
||||
if ($openssl_ver and open my $f, '<', $openssl_cnf) {
|
||||
local $/;
|
||||
my $cnf=<$f>;
|
||||
$skip{'main/tls_version.test'} = "TLSv1.1 disabled in $openssl_cnf"
|
||||
if $cnf =~ /^\s*MinProtocol\s*=\s*TLSv1.[2-9]/m;
|
||||
$skip{'main/tls_version1.test'} = "TLSv1.0 disabled in $openssl_cnf"
|
||||
if $cnf =~ /^\s*MinProtocol\s*=\s*TLSv1.[1-9]/m;
|
||||
}
|
||||
|
||||
%skip;
|
||||
}
|
||||
|
@ -14,12 +14,8 @@ CREATE TEMPORARY TABLE `table:name` (a INT);
|
||||
CREATE TEMPORARY TABLE shortn2 (a INT);
|
||||
|
||||
##############################################################################
|
||||
# BUG#46572 DROP TEMPORARY table IF EXISTS does not have a consistent behavior
|
||||
# in ROW mode
|
||||
#
|
||||
# In RBR, 'DROP TEMPORARY TABLE ...' statement should never be binlogged no
|
||||
# matter if the tables exist or not. In contrast, both in SBR and MBR, the
|
||||
# statement should be always binlogged no matter if the tables exist or not.
|
||||
# MDEV-20091: DROP TEMPORARY TABLE IF EXISTS statements will be written
|
||||
# to binlog only if the corresponding temporary table exists.
|
||||
##############################################################################
|
||||
CREATE TEMPORARY TABLE tmp(c1 int);
|
||||
CREATE TEMPORARY TABLE tmp1(c1 int);
|
||||
@ -30,12 +26,12 @@ CREATE TABLE t(c1 int);
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp;
|
||||
|
||||
--disable_warnings
|
||||
# Before fixing BUG#46572, 'DROP TEMPORARY TABLE IF EXISTS...' statement was
|
||||
# binlogged when the table did not exist in RBR.
|
||||
# Post MDEV-20091: Following DROP TEMPORARY TABLE statement should not be
|
||||
# logged as the table is already dropped above.
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp;
|
||||
|
||||
# In RBR, 'DROP TEMPORARY TABLE ...' statement is never binlogged no matter if
|
||||
# the tables exist or not.
|
||||
# Post MDEV-20091: Only DROP TEMPORARY TABLE statement should be written only
|
||||
# for 'tmp1' table.
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp, tmp1;
|
||||
DROP TEMPORARY TABLE tmp3;
|
||||
|
||||
@ -79,6 +75,12 @@ DROP DATABASE `drop-temp+table-test`;
|
||||
# if there are open temporary tables. As such the implicit drop
|
||||
# for temporary tables on session closing must be logged.
|
||||
#
|
||||
# MDEV-20091: DROP TEMPORARY TABLE IF EXISTS statements will be written to
|
||||
# binlog only if the corresponding temporary table exists. In row based
|
||||
# replication temporary tables are not replicated hence their corresponding
|
||||
# DROP TEMPORARY TABLE statement will be not be written to binary log upon
|
||||
# session closure.
|
||||
#
|
||||
|
||||
RESET MASTER;
|
||||
|
||||
@ -92,8 +94,10 @@ SELECT @@session.binlog_format;
|
||||
--disconnect con1
|
||||
|
||||
-- connection default
|
||||
if (!`SELECT @@BINLOG_FORMAT = 'ROW'`) {
|
||||
--let $wait_binlog_event= DROP
|
||||
--source include/wait_for_binlog_event.inc
|
||||
}
|
||||
-- source include/show_binlog_events.inc
|
||||
RESET MASTER;
|
||||
|
||||
|
@ -0,0 +1,16 @@
|
||||
RESET MASTER;
|
||||
include/stop_dump_threads.inc
|
||||
# Step-1: Execute some dummy statements.
|
||||
CREATE TABLE t1(i int);
|
||||
INSERT INTO t1 values (1);
|
||||
# Step-2: Disable binary log temporarily and drop the table 't1'.
|
||||
set @@SESSION.SQL_LOG_BIN = 0;
|
||||
DROP TABLE t1;
|
||||
set @@SESSION.SQL_LOG_BIN = 1;
|
||||
# Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
|
||||
# Step-4: Wait till dump thread transfer is completed.
|
||||
# Step-5: Check that the data is there.
|
||||
# Step-6: Cleanup
|
||||
# kill the dump thread serving the mysqlbinlog --stop-never process
|
||||
include/stop_dump_threads.inc
|
||||
DROP TABLE t1;
|
@ -105,6 +105,4 @@ BEGIN
|
||||
# server id 1 end_log_pos # CRC32 0x######## Table_map: `test`.`t1` mapped to number #
|
||||
# server id 1 end_log_pos # CRC32 0x######## Write_rows: table id # flags: STMT_END_F
|
||||
COMMIT/*!*/;
|
||||
# server id 1 end_log_pos # CRC32 0x######## GTID #-#-# ddl
|
||||
DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t5`
|
||||
DROP TABLE t1;
|
||||
|
@ -35,15 +35,9 @@ master-bin.000001 # Query # # CREATE DATABASE `drop-temp+table-test`
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; CREATE TABLE t(c1 int)
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; DROP TABLE IF EXISTS `t` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; DROP TABLE IF EXISTS `tmp2`,`t` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `shortn2`,`table:name`,`shortn1`
|
||||
DROP DATABASE `drop-temp+table-test`;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1 ( i text );
|
||||
@ -65,7 +59,5 @@ master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES ('1')
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `ttmp1`
|
||||
RESET MASTER;
|
||||
DROP TABLE t1;
|
||||
|
@ -348,8 +348,6 @@ master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; create table t2 (n int) engine=innodb
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t1`,`ti`
|
||||
do release_lock("lock1");
|
||||
drop table t0,t2;
|
||||
set autocommit=0;
|
||||
|
@ -51,12 +51,8 @@ master-bin.000001 # Query # # use `drop-temp+table-test`; CREATE TABLE t(c1 int)
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp1` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `drop-temp+table-test`; DROP TEMPORARY TABLE `tmp3` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp2` /* generated by server */
|
||||
|
66
mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test
Normal file
66
mysql-test/suite/binlog/t/binlog_mysqlbinlog_stop_never.test
Normal file
@ -0,0 +1,66 @@
|
||||
# ==== Purpose ====
|
||||
#
|
||||
# Test verifies that continuous streaming of binary log content using the
|
||||
# "mysqlbinlog --stop-never" option and sourcing it to mysql client works
|
||||
# fine.
|
||||
#
|
||||
# ==== Implementation ====
|
||||
#
|
||||
# Steps:
|
||||
# 1 - Create a table on a server on which binary log is enabled and insert
|
||||
# a row.
|
||||
# 2 - Disable the binary log on the server and drop the table.
|
||||
# 3 - Capture the binary log output using "mysqlbinlog --stop_never" option
|
||||
# and source it to mysql client.
|
||||
# 4 - Query the PROCESSLIST table to ensure that the dump thread which is
|
||||
# serving "stop_never" option has read entire binlog.
|
||||
# 5 - Verify that the table is populated on the server.
|
||||
# 6 - Cleanup.
|
||||
#
|
||||
# ==== References ====
|
||||
#
|
||||
# MDEV-11154: Write_on_release_cache(log_event.cc) function will not write
|
||||
# "COMMIT", if use "mysqlbinlog ... | mysql ..."
|
||||
|
||||
--source include/not_windows.inc
|
||||
|
||||
# Test is not specific to any binlog format. Hence Running only for 'row'.
|
||||
--source include/have_binlog_format_row.inc
|
||||
|
||||
# binlog file name is needed in the test. To use master-bin.000001,
|
||||
# RESET MASTER is needed.
|
||||
RESET MASTER;
|
||||
# kill the dump threads if there any dump threads (may be from previous test)
|
||||
--source include/stop_dump_threads.inc
|
||||
|
||||
--echo # Step-1: Execute some dummy statements.
|
||||
CREATE TABLE t1(i int);
|
||||
INSERT INTO t1 values (1);
|
||||
|
||||
--echo # Step-2: Disable binary log temporarily and drop the table 't1'.
|
||||
set @@SESSION.SQL_LOG_BIN = 0;
|
||||
DROP TABLE t1;
|
||||
set @@SESSION.SQL_LOG_BIN = 1;
|
||||
|
||||
--echo # Step-3: Execute MYSQL_BINLOG with --stop-never and source it to mysql client.
|
||||
--write_file $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
|
||||
(`$MYSQL_BINLOG --read-from-remote-server --stop-never --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000001 | $MYSQL --user=root --protocol=tcp --host=127.0.0.1 --port=$MASTER_MYPORT`) < /dev/null > /dev/null 2>&1 &
|
||||
EOF
|
||||
--exec /bin/bash $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
|
||||
|
||||
--echo # Step-4: Wait till dump thread transfer is completed.
|
||||
let $wait_condition= SELECT id from information_schema.processlist where processlist.command like '%Binlog%' and state like '%Master has sent%';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--echo # Step-5: Check that the data is there.
|
||||
let $count= 1;
|
||||
let $table= test.t1;
|
||||
source include/wait_until_rows_count.inc;
|
||||
|
||||
--echo # Step-6: Cleanup
|
||||
--echo # kill the dump thread serving the mysqlbinlog --stop-never process
|
||||
--source include/stop_dump_threads.inc
|
||||
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQL_TMP_DIR/mysqlbinlog_stop_never.sh
|
||||
|
@ -4,6 +4,7 @@ show variables like 'innodb_encrypt%';
|
||||
Variable_name Value
|
||||
innodb_encrypt_log ON
|
||||
innodb_encrypt_tables ON
|
||||
innodb_encrypt_temporary_tables OFF
|
||||
innodb_encryption_rotate_key_age 2
|
||||
innodb_encryption_rotation_iops 100
|
||||
innodb_encryption_threads 4
|
||||
|
@ -27,8 +27,7 @@ CREATE TABLE t6 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
||||
# Run innochecksum on t2
|
||||
# Run innochecksum on t3
|
||||
# Run innochecksum on t6
|
||||
# In new checksum format, checksum calculated for whole page.
|
||||
# So It should affected.
|
||||
# Space ID mismatch
|
||||
# Restore the original tables
|
||||
# Corrupt FIL_DATA+10 (data)
|
||||
# Run innochecksum on t2
|
||||
|
@ -96,7 +96,6 @@ connection default;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR done';
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
COMMIT;
|
||||
# restart
|
||||
disconnect con1;
|
||||
select * from t1;
|
||||
f1 f2
|
||||
|
@ -22,6 +22,8 @@ key (col_int_key),
|
||||
key (col_char_key)
|
||||
) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
|
||||
CREATE TEMPORARY TABLE t LIKE t0;
|
||||
Warnings:
|
||||
Warning 1478 Ignoring encryption parameter during temporary table creation.
|
||||
INSERT INTO t VALUES
|
||||
(NULL,1,1,'private','secret'),(NULL,2,2,'sacred','success'),
|
||||
(NULL,3,3,'story','secure'),(NULL,4,4,'security','sacrament');
|
||||
|
@ -0,0 +1,19 @@
|
||||
SELECT variable_value into @old_encrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_encrypted';
|
||||
SELECT variable_value into @old_decrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_decrypted';
|
||||
CREATE TEMPORARY TABLE t1(f1 CHAR(200), f2 CHAR(200)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (f1,f2) SELECT '', '' FROM seq_1_to_8192;
|
||||
CREATE TEMPORARY TABLE t2(f1 CHAR(100), f2 CHAR(200), f3 CHAR(200))ENGINE=InnoDB;
|
||||
INSERT INTO t2 (f1,f2,f3) SELECT '', '', '' FROM seq_1_to_8192;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
8192
|
||||
SELECT variable_value > @old_encrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_encrypted';
|
||||
variable_value > @old_encrypted
|
||||
1
|
||||
SELECT variable_value > @old_decrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_decrypted';
|
||||
variable_value > @old_decrypted
|
||||
1
|
@ -3,6 +3,7 @@ SHOW VARIABLES LIKE 'innodb_encrypt%';
|
||||
Variable_name Value
|
||||
innodb_encrypt_log ON
|
||||
innodb_encrypt_tables ON
|
||||
innodb_encrypt_temporary_tables OFF
|
||||
innodb_encryption_rotate_key_age 15
|
||||
innodb_encryption_rotation_iops 100
|
||||
innodb_encryption_threads 4
|
||||
@ -58,6 +59,7 @@ SHOW VARIABLES LIKE 'innodb_encrypt%';
|
||||
Variable_name Value
|
||||
innodb_encrypt_log ON
|
||||
innodb_encrypt_tables OFF
|
||||
innodb_encrypt_temporary_tables OFF
|
||||
innodb_encryption_rotate_key_age 15
|
||||
innodb_encryption_rotation_iops 100
|
||||
innodb_encryption_threads 0
|
||||
|
@ -209,9 +209,8 @@ EOF
|
||||
--exec $INNOCHECKSUM $t3_IBD
|
||||
|
||||
--echo # Run innochecksum on t6
|
||||
--echo # In new checksum format, checksum calculated for whole page.
|
||||
--echo # So It should affected.
|
||||
--error $error_code
|
||||
--echo # Space ID mismatch
|
||||
--error 1
|
||||
--exec $INNOCHECKSUM $t6_IBD
|
||||
|
||||
--enable_result_log
|
||||
|
@ -123,6 +123,8 @@ SET DEBUG_SYNC = 'now WAIT_FOR done';
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
COMMIT;
|
||||
|
||||
let $restart_parameters = --innodb_encryption_threads=2;
|
||||
let $restart_noprint = 2;
|
||||
--let $shutdown_timeout= 0
|
||||
--source include/restart_mysqld.inc
|
||||
disconnect con1;
|
||||
|
@ -0,0 +1,3 @@
|
||||
--innodb_buffer_pool_size=5M
|
||||
--innodb_encrypt_temporary_tables=1
|
||||
--innodb-checksum-algorithm=crc32
|
@ -0,0 +1,22 @@
|
||||
--source include/have_sequence.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_file_key_management_plugin.inc
|
||||
|
||||
SELECT variable_value into @old_encrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_encrypted';
|
||||
|
||||
SELECT variable_value into @old_decrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_decrypted';
|
||||
|
||||
CREATE TEMPORARY TABLE t1(f1 CHAR(200), f2 CHAR(200)) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (f1,f2) SELECT '', '' FROM seq_1_to_8192;
|
||||
|
||||
CREATE TEMPORARY TABLE t2(f1 CHAR(100), f2 CHAR(200), f3 CHAR(200))ENGINE=InnoDB;
|
||||
INSERT INTO t2 (f1,f2,f3) SELECT '', '', '' FROM seq_1_to_8192;
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
SELECT variable_value > @old_encrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_encrypted';
|
||||
|
||||
SELECT variable_value > @old_decrypted FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_encryption_n_temp_blocks_decrypted';
|
@ -10,34 +10,30 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
GAL-419 : MDEV-13549 Galera test failures
|
||||
MW-286 : MDEV-19992 Galera test failure on MW-286
|
||||
GCF-1081 : MDEV-18283 Galera test failure on galera.GCF-1081
|
||||
MW-328A : MDEV-17847 Galera test failure on MW-328[A|B|C]
|
||||
MW-328B : MDEV-17847 Galera test failure on MW-328[A|B|C]
|
||||
MW-328C : MDEV-17847 Galera test failure on MW-328[A|B|C]
|
||||
MW-329 : wsrep_local_replays not stable
|
||||
MW-336 : MDEV-13549 incorrect wait_condition for wsrep_slave_threads changes
|
||||
MW-329 : MDEV-19962 Galera test failure on MW-329
|
||||
MW-360 : needs rewrite to be MariaDB gtid compatible
|
||||
MW-336 : MDEV-19746 Galera test failures because of wsrep_slave_threads identification
|
||||
MW-416 : MDEV-13549 Galera test failures
|
||||
MW-44 : MDEV-15809 Test failure on galera.MW-44
|
||||
MW-388: MDEV-19803 Long semaphore wait error on galera.MW-388
|
||||
galera_account_management : MariaDB 10.0 does not support ALTER USER
|
||||
galera_as_master_gtid : Requires MySQL GTID
|
||||
galera_as_master_gtid_change_master : Requires MySQL GTID
|
||||
galera_as_slave_gtid_replicate_do_db_cc : Requires MySQL GTID
|
||||
galera_as_slave_preordered : wsrep-preordered feature not merged to MariaDB
|
||||
galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event()
|
||||
galera_autoinc_sst_mariabackup : MDEV-18177 Galera test failure on galera_autoinc_sst_mariabackup
|
||||
galera_autoinc_sst_mariabackup : MDEV-19926 Galera SST tests fail
|
||||
galera_bf_abort_group_commit : MDEV-18282 Galera test failure on galera.galera_bf_abort_group_commit
|
||||
galera_binlog_rows_query_log_events: MariaDB does not support binlog_rows_query_log_events
|
||||
galera_binlog_stmt_autoinc: MDEV-19959 Galera test failure on galera_binlog_stmt_autoinc
|
||||
galera_concurrent_ctas : MDEV-18180 Galera test failure on galera.galera_concurrent_ctas
|
||||
galera_encrypt_tmp_files : Get error failed to enable encryption of temporary files
|
||||
galera_flush : MariaDB does not have global.thread_statistics
|
||||
galera_gcache_recover_manytrx : MDEV-18834 Galera test failure
|
||||
galera_ist_mariabackup : MDEV-18829 test leaves port open
|
||||
galera_ist_progress: MDEV-15236 fails when trying to read transfer status
|
||||
galera_kill_applier : race condition at the start of the test
|
||||
galera_kill_ddl : MDEV-17108 Test failure on galera.galera_kill_ddl
|
||||
galera_ist_progress : MDEV-15236 fails when trying to read transfer status
|
||||
galera_kill_largechanges : MDEV-18179 Galera test failure on galera.galera_kill_largechanges
|
||||
galera_kill_nochanges : MDEV-18280 Galera test failure on galera_split_brain and galera_kill_nochanges
|
||||
galera_many_tables_nopk : MDEV-18182 Galera test failure on galera.galera_many_tables_nopk
|
||||
@ -50,9 +46,7 @@ galera_var_node_address : MDEV-17151 Galera test failure
|
||||
galera_var_notify_cmd : MDEV-13549 Galera test failures
|
||||
galera_var_reject_queries : assertion in inline_mysql_socket_send
|
||||
galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit
|
||||
galera_var_slave_threads : MDEV-19746 Galera test failures because of wsrep_slave_threads identification
|
||||
galera_sst_mariabackup_encrypt_with_key : MDEV-19926 Galera SST tests fail
|
||||
galera_wan : MDEV-17259: Test failure on galera.galera_wan
|
||||
mysql-wsrep#198 : MDEV-18935 Galera test mysql-wsrep#198 sporaric assertion transaction.cpp:362: int wsrep::transaction::before_commit(): Assertion `state() == s_executing || state() == s_committing || state() == s_must_abort || state() == s_replaying' failed.
|
||||
partition : MDEV-13549 regularly showing auto_increment mismatch
|
||||
pxc-421: Lock timeout exceeded
|
||||
query_cache : MDEV-18137: Galera test failure on query_cache
|
||||
partition : MDEV-19958 Galera test failure on galera.partition
|
||||
|
@ -1,3 +0,0 @@
|
||||
#
|
||||
# Used in galera/suite.pm to check file key management plugin
|
||||
#
|
@ -1,4 +1,12 @@
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
call mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node.*");
|
||||
call mtr.add_suppression("Aborting");
|
||||
connection node_2;
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
Killing server ...
|
||||
connection node_1;
|
||||
SET SESSION wsrep_sync_wait = 0;
|
||||
Killing server ...
|
||||
connection node_1;
|
||||
connection node_2;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user