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
|
Language: Cpp
|
||||||
|
AccessModifierOffset: -2
|
||||||
BreakBeforeBraces: Custom
|
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:
|
BraceWrapping:
|
||||||
AfterClass: true
|
AfterCaseLabel: true
|
||||||
|
AfterClass: true
|
||||||
AfterControlStatement: true
|
AfterControlStatement: true
|
||||||
AfterEnum: true
|
AfterEnum: true
|
||||||
AfterFunction: true
|
AfterFunction: true
|
||||||
AfterNamespace: true
|
AfterNamespace: true
|
||||||
AfterStruct: true
|
AfterStruct: true
|
||||||
AfterUnion: true
|
AfterUnion: true
|
||||||
AfterExternBlock: true
|
AfterExternBlock: true
|
||||||
BeforeCatch: true
|
BeforeCatch: true
|
||||||
BeforeElse: true
|
BeforeElse: true
|
||||||
|
IndentBraces: false
|
||||||
SplitEmptyFunction: true
|
SplitEmptyFunction: true
|
||||||
SplitEmptyRecord: true
|
SplitEmptyRecord: true
|
||||||
SplitEmptyNamespace: 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-*.*.*.tar.gz
|
||||||
mariadb-*.*.*/
|
mariadb-*.*.*/
|
||||||
mysql-test/lib/My/SafeProcess/my_safe_process
|
mysql-test/lib/My/SafeProcess/my_safe_process
|
||||||
|
mysql-test/lib/My/SafeProcess/wsrep_check_version
|
||||||
mysql-test/mtr
|
mysql-test/mtr
|
||||||
mysql-test/mysql-test-run
|
mysql-test/mysql-test-run
|
||||||
mysql-test/var
|
mysql-test/var
|
||||||
|
@ -27,6 +27,9 @@ ENDIF()
|
|||||||
IF(POLICY CMP0054)
|
IF(POLICY CMP0054)
|
||||||
CMAKE_POLICY(SET CMP0054 NEW)
|
CMAKE_POLICY(SET CMP0054 NEW)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
IF(POLICY CMP0075)
|
||||||
|
CMAKE_POLICY(SET CMP0075 NEW)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
|
||||||
|
|
||||||
|
@ -1034,7 +1034,7 @@ static COMMANDS commands[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
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 int embedded_server_arg_count= 0;
|
||||||
static char *embedded_server_args[MAX_SERVER_ARGS];
|
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 */
|
"client", /* Read settings how to connect to server */
|
||||||
"mysql_upgrade", /* Read special settings for mysql_upgrade */
|
"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-server", /* Reads settings common between client & server */
|
||||||
"client-mariadb", /* Read mariadb unique client settings */
|
"client-mariadb", /* Read mariadb unique client settings */
|
||||||
0
|
0
|
||||||
|
@ -237,7 +237,8 @@ static struct my_option my_long_options[] =
|
|||||||
|
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
static const char *load_default_groups[]=
|
||||||
{ "mysqladmin", "client", "client-server", "client-mariadb", 0 };
|
{ "mysqladmin", "mariadb-admin", "client", "client-server", "client-mariadb",
|
||||||
|
0 };
|
||||||
|
|
||||||
my_bool
|
my_bool
|
||||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
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;
|
const char *current_dbug_option= default_dbug_option;
|
||||||
#endif
|
#endif
|
||||||
static const char *load_groups[]=
|
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 error(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||||
static void warning(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,
|
my_fwrite(result_file, (const uchar *) tmp_str.str, tmp_str.length,
|
||||||
MYF(MY_NABP));
|
MYF(MY_NABP));
|
||||||
|
fflush(result_file);
|
||||||
my_free(tmp_str.str);
|
my_free(tmp_str.str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -222,7 +222,8 @@ static struct my_option my_long_options[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
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);
|
static void print_version(void);
|
||||||
|
@ -562,7 +562,8 @@ static struct my_option my_long_options[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
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 maybe_exit(int error);
|
||||||
static void die(int error, const char* reason, ...);
|
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];
|
char db_cl_name[MY_CS_NAME_SIZE];
|
||||||
int db_cl_altered= FALSE;
|
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_ENTER("dump_routines_for_db");
|
||||||
DBUG_PRINT("enter", ("db: '%s'", 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);
|
fputs("\t<routines>\n", sql_file);
|
||||||
|
|
||||||
/* 0, retrieve and dump functions, 1, procedures, etc. */
|
/* 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),
|
my_snprintf(query_buff, sizeof(query_buff),
|
||||||
"SHOW %s STATUS WHERE Db = '%s'",
|
"SHOW %s STATUS WHERE Db = '%s'",
|
||||||
|
@ -187,7 +187,8 @@ static struct my_option my_long_options[] =
|
|||||||
|
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
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)
|
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 void print_res_row(MYSQL_RES *result,MYSQL_ROW cur);
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
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;
|
static char * opt_mysql_unix_port=0;
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
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 uint opt_mysql_port= 0;
|
||||||
|
|
||||||
static const char *load_default_groups[]=
|
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;
|
typedef struct statement statement;
|
||||||
|
|
||||||
|
@ -136,7 +136,8 @@ static my_bool server_initialized= 0;
|
|||||||
static my_bool is_windows= 0;
|
static my_bool is_windows= 0;
|
||||||
static char **default_argv;
|
static char **default_argv;
|
||||||
static const char *load_default_groups[]=
|
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;
|
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 */
|
/* 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);
|
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 */
|
/* 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")))
|
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_RPM_PACKAGE_RELOCATABLE FALSE)
|
||||||
SET(CPACK_PACKAGE_RELOCATABLE FALSE)
|
SET(CPACK_PACKAGE_RELOCATABLE FALSE)
|
||||||
SET(CPACK_RPM_PACKAGE_GROUP "Applications/Databases")
|
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_URL ${CPACK_PACKAGE_URL})
|
||||||
SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_SUMMARY}
|
SET(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}")
|
||||||
|
|
||||||
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_shared_PACKAGE_VENDOR "MariaDB Corporation Ab")
|
SET(CPACK_RPM_shared_PACKAGE_VENDOR "MariaDB Corporation Ab")
|
||||||
SET(CPACK_RPM_shared_PACKAGE_LICENSE "LGPLv2.1")
|
SET(CPACK_RPM_shared_PACKAGE_LICENSE "LGPLv2.1")
|
||||||
|
@ -11,3 +11,9 @@ ELSE()
|
|||||||
SET(__msg1_${id} ${hash} CACHE INTERNAL "")
|
SET(__msg1_${id} ${hash} CACHE INTERNAL "")
|
||||||
ENDFUNCTION()
|
ENDFUNCTION()
|
||||||
ENDIF()
|
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(SERVER_MATURITY_LEVEL MariaDB_PLUGIN_MATURITY_${SERVER_MATURITY})
|
||||||
|
|
||||||
SET(MYSQL_TCP_PORT_DEFAULT 0)
|
SET(MYSQL_TCP_PORT_DEFAULT 0)
|
||||||
IF(NOT MYSQL_TCP_PORT)
|
SET_IF_UNSET(MYSQL_TCP_PORT 3306)
|
||||||
SET(MYSQL_TCP_PORT 3306)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(NOT COMPILATION_COMMENT)
|
SET_IF_UNSET(COMPILATION_COMMENT "Source distribution")
|
||||||
SET(COMPILATION_COMMENT "Source distribution")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
INCLUDE(package_name)
|
INCLUDE(package_name)
|
||||||
IF(NOT CPACK_PACKAGE_FILE_NAME)
|
IF(NOT CPACK_PACKAGE_FILE_NAME)
|
||||||
GET_PACKAGE_FILE_NAME(CPACK_PACKAGE_FILE_NAME)
|
GET_PACKAGE_FILE_NAME(CPACK_PACKAGE_FILE_NAME)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME)
|
SET_IF_UNSET(CPACK_SOURCE_PACKAGE_FILE_NAME "mariadb-${VERSION}")
|
||||||
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "mariadb-${VERSION}")
|
SET_IF_UNSET(CPACK_PACKAGE_CONTACT "MariaDB Developers <maria-developers@lists.launchpad.net>")
|
||||||
ENDIF()
|
SET_IF_UNSET(CPACK_PACKAGE_VENDOR "MariaDB Foundation")
|
||||||
SET(CPACK_PACKAGE_CONTACT "MariaDB Developers <maria-developers@lists.launchpad.net>")
|
SET_IF_UNSET(CPACK_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}
|
||||||
SET(CPACK_PACKAGE_VENDOR "MariaDB Foundation")
|
|
||||||
|
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")
|
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
||||||
|
|
||||||
# Definitions for windows version resources
|
# 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
|
# 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
|
IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SIZEOF_VOID_P EQUAL 4
|
||||||
AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
|
AND CMAKE_SYSTEM_PROCESSOR MATCHES "sparc")
|
||||||
SET(SOURCE
|
SET(SOURCE
|
||||||
|
@ -25,7 +25,6 @@ SET(HAVE_ACCESS 1 CACHE INTERNAL "")
|
|||||||
SET(HAVE_ALARM CACHE INTERNAL "")
|
SET(HAVE_ALARM CACHE INTERNAL "")
|
||||||
SET(HAVE_ALLOCA_H CACHE INTERNAL "")
|
SET(HAVE_ALLOCA_H CACHE INTERNAL "")
|
||||||
SET(HAVE_ARPA_INET_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 CACHE INTERNAL "")
|
||||||
SET(HAVE_BACKTRACE_SYMBOLS CACHE INTERNAL "")
|
SET(HAVE_BACKTRACE_SYMBOLS CACHE INTERNAL "")
|
||||||
SET(HAVE_BACKTRACE_SYMBOLS_FD 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_PTHREAD_YIELD_ZERO_ARG CACHE INTERNAL "")
|
||||||
SET(HAVE_PUTENV 1 CACHE INTERNAL "")
|
SET(HAVE_PUTENV 1 CACHE INTERNAL "")
|
||||||
SET(HAVE_PWD_H CACHE INTERNAL "")
|
SET(HAVE_PWD_H CACHE INTERNAL "")
|
||||||
SET(HAVE_RDTSCLL CACHE INTERNAL "")
|
|
||||||
SET(HAVE_READDIR_R CACHE INTERNAL "")
|
SET(HAVE_READDIR_R CACHE INTERNAL "")
|
||||||
SET(HAVE_READLINK CACHE INTERNAL "")
|
SET(HAVE_READLINK CACHE INTERNAL "")
|
||||||
SET(HAVE_READ_REAL_TIME 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_PTHREAD_ATTR_GETGUARDSIZE CACHE INTERNAL "")
|
||||||
SET(HAVE_SOCKPEERCRED CACHE INTERNAL "")
|
SET(HAVE_SOCKPEERCRED CACHE INTERNAL "")
|
||||||
SET(HAVE_ABI_CXA_DEMANGLE 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_GCC_C11_ATOMICS CACHE INTERNAL "")
|
||||||
SET(HAVE_VISIBILITY_HIDDEN CACHE INTERNAL "")
|
SET(HAVE_VISIBILITY_HIDDEN CACHE INTERNAL "")
|
||||||
ENDIF(MSVC)
|
ENDIF(MSVC)
|
||||||
|
@ -28,13 +28,9 @@ MACRO(CHECK_SYSTEMD)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
IF(HAVE_DLOPEN)
|
IF(HAVE_DLOPEN)
|
||||||
SET(LIBSYSTEMD ${LIBSYSTEMD_LIBRARIES})
|
SET(LIBSYSTEMD ${LIBSYSTEMD_LDFLAGS} ${LIBSYSTEMD_LIBRARIES})
|
||||||
#SET(CMAKE_REQUIRED_FLAGS ${LIBSYSTEMD_CFLAGS})
|
|
||||||
SET(MYSQLD_LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${LIBSYSTEMD_LDFLAGS}")
|
|
||||||
ELSE()
|
ELSE()
|
||||||
SET(LIBSYSTEMD ${LIBSYSTEMD_STATIC_LIBRARIES})
|
SET(LIBSYSTEMD ${LIBSYSTEMD_STATIC_LDFLAGS} ${LIBSYSTEMD_STATIC_LIBRARIES})
|
||||||
#SET(CMAKE_REQUIRED_FLAGS ${LIBSYSTEMD_STATIC_CFLAGS})
|
|
||||||
SET(MYSQLD_LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${LIBSYSTEMD_STATIC_LDFLAGS}")
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ELSE()
|
ELSE()
|
||||||
SET(LIBSYSTEMD systemd)
|
SET(LIBSYSTEMD systemd)
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#cmakedefine _GNU_SOURCE 1
|
#cmakedefine _GNU_SOURCE 1
|
||||||
#cmakedefine HAVE_ALLOCA_H 1
|
#cmakedefine HAVE_ALLOCA_H 1
|
||||||
#cmakedefine HAVE_ARPA_INET_H 1
|
#cmakedefine HAVE_ARPA_INET_H 1
|
||||||
#cmakedefine HAVE_ASM_MSR_H 1
|
|
||||||
#cmakedefine HAVE_ASM_TERMBITS_H 1
|
#cmakedefine HAVE_ASM_TERMBITS_H 1
|
||||||
#cmakedefine HAVE_CRYPT_H 1
|
#cmakedefine HAVE_CRYPT_H 1
|
||||||
#cmakedefine HAVE_CURSES_H 1
|
#cmakedefine HAVE_CURSES_H 1
|
||||||
@ -191,9 +190,6 @@
|
|||||||
#cmakedefine HAVE_POSIX_FALLOCATE 1
|
#cmakedefine HAVE_POSIX_FALLOCATE 1
|
||||||
#cmakedefine HAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE 1
|
#cmakedefine HAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE 1
|
||||||
#cmakedefine HAVE_PREAD 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_READ_REAL_TIME 1
|
||||||
#cmakedefine HAVE_PTHREAD_ATTR_CREATE 1
|
#cmakedefine HAVE_PTHREAD_ATTR_CREATE 1
|
||||||
#cmakedefine HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
|
#cmakedefine HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
|
||||||
@ -389,7 +385,6 @@
|
|||||||
|
|
||||||
#cmakedefine HAVE_SOLARIS_STYLE_GETHOST 1
|
#cmakedefine HAVE_SOLARIS_STYLE_GETHOST 1
|
||||||
|
|
||||||
#cmakedefine HAVE_GCC_ATOMIC_BUILTINS 1
|
|
||||||
#cmakedefine HAVE_GCC_C11_ATOMICS 1
|
#cmakedefine HAVE_GCC_C11_ATOMICS 1
|
||||||
#cmakedefine HAVE_SOLARIS_ATOMIC 1
|
#cmakedefine HAVE_SOLARIS_ATOMIC 1
|
||||||
#cmakedefine HAVE_DECL_SHM_HUGETLB 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(time.h HAVE_TIME_H)
|
||||||
CHECK_INCLUDE_FILES(sys/time.h HAVE_SYS_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(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)
|
CHECK_INCLUDE_FILES(ia64intrin.h HAVE_IA64INTRIN_H)
|
||||||
|
|
||||||
@ -453,9 +451,6 @@ CHECK_FUNCTION_EXISTS(ftime HAVE_FTIME)
|
|||||||
CHECK_FUNCTION_EXISTS(time HAVE_TIME)
|
CHECK_FUNCTION_EXISTS(time HAVE_TIME)
|
||||||
# We can use time() on Macintosh if there is no ftime().
|
# 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
|
# Tests for symbols
|
||||||
@ -753,32 +748,6 @@ IF(NOT C_HAS_inline)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
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)
|
CHECK_SYMBOL_EXISTS(tcgetattr "termios.h" HAVE_TCGETATTR 1)
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -890,30 +859,6 @@ SET(SIGNAL_WITH_VIO_CLOSE 1)
|
|||||||
MARK_AS_ADVANCED(NO_ALARM)
|
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("
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
int main()
|
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
|
Package: mariadb-client-core-10.5
|
||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: mariadb-common (>= ${source:Version}),
|
Depends: mariadb-common (>= ${source:Version}), libmariadb3,
|
||||||
${misc:Depends},
|
${misc:Depends},
|
||||||
${shlibs:Depends}
|
${shlibs:Depends}
|
||||||
Conflicts: mariadb-client-10.0,
|
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() {
|
stop_server() {
|
||||||
# Return immediately if there are no mysql processes running
|
# Return immediately if there are no mysql processes running
|
||||||
# as there is no point in trying to shutdown in that case.
|
# 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
|
set +e
|
||||||
systemctl stop mysql
|
systemctl stop mysql
|
||||||
|
@ -75,6 +75,8 @@ ulong srv_page_size;
|
|||||||
ulong srv_page_size_shift;
|
ulong srv_page_size_shift;
|
||||||
/* Current page number (0 based). */
|
/* Current page number (0 based). */
|
||||||
unsigned long long cur_page_num;
|
unsigned long long cur_page_num;
|
||||||
|
/* Current space. */
|
||||||
|
unsigned long long cur_space;
|
||||||
/* Skip the checksum verification. */
|
/* Skip the checksum verification. */
|
||||||
static bool no_check;
|
static bool no_check;
|
||||||
/* Enabled for strict checksum verification. */
|
/* Enabled for strict checksum verification. */
|
||||||
@ -282,7 +284,9 @@ static void init_page_size(const byte* buf)
|
|||||||
+ FSP_SPACE_FLAGS);
|
+ FSP_SPACE_FLAGS);
|
||||||
|
|
||||||
if (fil_space_t::full_crc32(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;
|
physical_page_size = srv_page_size;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -424,6 +428,27 @@ ulint read_file(
|
|||||||
return bytes;
|
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.
|
/** Check if page is corrupted or not.
|
||||||
@param[in] buf page frame
|
@param[in] buf page frame
|
||||||
@param[in] is_encrypted true if page0 contained cryp_data
|
@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);
|
ulint is_compressed = fil_space_t::is_compressed(flags);
|
||||||
const bool use_full_crc32 = fil_space_t::full_crc32(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
|
/* We can't trust only a page type, thus we take account
|
||||||
also fsp_flags or crypt_data on page 0 */
|
also fsp_flags or crypt_data on page 0 */
|
||||||
if ((page_type == FIL_PAGE_PAGE_COMPRESSED && is_compressed) ||
|
if ((page_type == FIL_PAGE_PAGE_COMPRESSED && is_compressed) ||
|
||||||
@ -1539,9 +1584,6 @@ int main(
|
|||||||
FILE* fil_page_type = NULL;
|
FILE* fil_page_type = NULL;
|
||||||
fpos_t pos;
|
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. */
|
/* enable when space_id of given file is zero. */
|
||||||
bool is_system_tablespace = false;
|
bool is_system_tablespace = false;
|
||||||
|
|
||||||
@ -1663,9 +1705,8 @@ int main(
|
|||||||
/* enable variable is_system_tablespace when space_id of given
|
/* enable variable is_system_tablespace when space_id of given
|
||||||
file is zero. Use to skip the checksum verification and rewrite
|
file is zero. Use to skip the checksum verification and rewrite
|
||||||
for doublewrite pages. */
|
for doublewrite pages. */
|
||||||
is_system_tablespace = (!memcmp(&space_id, buf +
|
cur_space = mach_read_from_4(buf + FIL_PAGE_SPACE_ID);
|
||||||
FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, 4))
|
cur_page_num = mach_read_from_4(buf + FIL_PAGE_OFFSET);
|
||||||
? true : false;
|
|
||||||
|
|
||||||
/* Determine page size, zip_size and page compression
|
/* Determine page size, zip_size and page compression
|
||||||
from fsp_flags and encryption metadata from page 0 */
|
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);
|
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 */
|
/* Read rest of the page 0 to determine crypt_data */
|
||||||
bytes = read_file(buf, partial_page_read, physical_page_size, fil_in);
|
bytes = read_file(buf, partial_page_read, physical_page_size, fil_in);
|
||||||
if (bytes != physical_page_size) {
|
if (bytes != physical_page_size) {
|
||||||
@ -1688,6 +1731,7 @@ int main(
|
|||||||
partial_page_read = false;
|
partial_page_read = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Now that we have full page 0 in buffer, check encryption */
|
/* Now that we have full page 0 in buffer, check encryption */
|
||||||
bool is_encrypted = check_encryption(filename, buf);
|
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 */
|
/* seek to the necessary position */
|
||||||
if (start_page) {
|
if (start_page) {
|
||||||
if (!read_from_stdin) {
|
if (!read_from_stdin) {
|
||||||
@ -1856,6 +1930,7 @@ int main(
|
|||||||
goto my_exit;
|
goto my_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
first_non_zero:
|
||||||
if (is_system_tablespace) {
|
if (is_system_tablespace) {
|
||||||
/* enable when page is double write buffer.*/
|
/* enable when page is double write buffer.*/
|
||||||
skip_page = is_page_doublewritebuffer(buf);
|
skip_page = is_page_doublewritebuffer(buf);
|
||||||
|
@ -3798,7 +3798,7 @@ open_or_create_log_file(
|
|||||||
fil_space_t* space,
|
fil_space_t* space,
|
||||||
ulint i) /*!< in: log file number in group */
|
ulint i) /*!< in: log file number in group */
|
||||||
{
|
{
|
||||||
char name[10000];
|
char name[FN_REFLEN];
|
||||||
ulint dirnamelen;
|
ulint dirnamelen;
|
||||||
|
|
||||||
os_normalize_path(srv_log_group_home_dir);
|
os_normalize_path(srv_log_group_home_dir);
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#define WOLFSSL_AES_COUNTER
|
#define WOLFSSL_AES_COUNTER
|
||||||
#define NO_WOLFSSL_STUB
|
#define NO_WOLFSSL_STUB
|
||||||
#define OPENSSL_ALL
|
#define OPENSSL_ALL
|
||||||
|
#define WOLFSSL_ALLOW_TLSV10
|
||||||
|
|
||||||
#cmakedefine WOLFSSL_AESNI
|
#cmakedefine WOLFSSL_AESNI
|
||||||
#cmakedefine USE_FAST_MATH
|
#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) 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
|
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
|
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);
|
int inx, MARIA_RECORD_POS pos);
|
||||||
extern int maria_update(MARIA_HA *file, const uchar *old,
|
extern int maria_update(MARIA_HA *file, const uchar *old,
|
||||||
const uchar *new_record);
|
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 MARIA_RECORD_POS maria_position(MARIA_HA *file);
|
||||||
extern int maria_status(MARIA_HA *info, MARIA_INFO *x, uint flag);
|
extern int maria_status(MARIA_HA *info, MARIA_INFO *x, uint flag);
|
||||||
extern int maria_lock_database(MARIA_HA *file, int lock_type);
|
extern int maria_lock_database(MARIA_HA *file, int lock_type);
|
||||||
|
@ -112,8 +112,6 @@
|
|||||||
#include "atomic/solaris.h"
|
#include "atomic/solaris.h"
|
||||||
#elif defined(HAVE_GCC_C11_ATOMICS)
|
#elif defined(HAVE_GCC_C11_ATOMICS)
|
||||||
#include "atomic/gcc_builtins.h"
|
#include "atomic/gcc_builtins.h"
|
||||||
#elif defined(HAVE_GCC_ATOMIC_BUILTINS)
|
|
||||||
#include "atomic/gcc_sync.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SIZEOF_LONG == 4
|
#if SIZEOF_LONG == 4
|
||||||
|
@ -46,10 +46,20 @@
|
|||||||
#define HMT_high()
|
#define HMT_high()
|
||||||
#endif
|
#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)
|
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
|
According to the gcc info page, asm volatile means that the
|
||||||
instruction has important side-effects and must not be removed.
|
instruction has important side-effects and must not be removed.
|
||||||
@ -61,16 +71,6 @@ static inline void MY_RELAX_CPU(void)
|
|||||||
#else
|
#else
|
||||||
__asm__ __volatile__ ("pause");
|
__asm__ __volatile__ ("pause");
|
||||||
#endif
|
#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)
|
#elif defined(_ARCH_PWR8)
|
||||||
__ppc_get_timebase();
|
__ppc_get_timebase();
|
||||||
#else
|
#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
|
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
|
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)
|
static inline int LF_BACKOFF(void)
|
||||||
{
|
{
|
||||||
int i;
|
unsigned i= my_cpu_relax_multiplier;
|
||||||
for (i= 0; i < 200; i++)
|
while (i--)
|
||||||
MY_RELAX_CPU();
|
MY_RELAX_CPU();
|
||||||
return 1;
|
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
|
#endif
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
/* 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
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -23,6 +23,20 @@
|
|||||||
#ifndef MY_RDTSC_H
|
#ifndef MY_RDTSC_H
|
||||||
#define 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.
|
Characteristics of a timer.
|
||||||
*/
|
*/
|
||||||
@ -62,12 +76,104 @@ C_MODE_START
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
A cycle timer.
|
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.
|
@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.
|
@return the current timer value, in nanoseconds.
|
||||||
*/
|
*/
|
||||||
ulonglong my_timer_nanoseconds(void);
|
ulonglong my_timer_nanoseconds(void);
|
||||||
@ -98,33 +204,22 @@ void my_timer_init(MY_TIMER_INFO *mti);
|
|||||||
|
|
||||||
C_MODE_END
|
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_RDTSC 5
|
||||||
#define MY_TIMER_ROUTINE_ASM_IA64 6
|
#define MY_TIMER_ROUTINE_ASM_IA64 6
|
||||||
#define MY_TIMER_ROUTINE_ASM_PPC 7
|
#define MY_TIMER_ROUTINE_PPC_GET_TIMEBASE 7
|
||||||
#define MY_TIMER_ROUTINE_SGI_CYCLE 8
|
|
||||||
#define MY_TIMER_ROUTINE_GETHRTIME 9
|
#define MY_TIMER_ROUTINE_GETHRTIME 9
|
||||||
#define MY_TIMER_ROUTINE_READ_REAL_TIME 10
|
#define MY_TIMER_ROUTINE_READ_REAL_TIME 10
|
||||||
#define MY_TIMER_ROUTINE_CLOCK_GETTIME 11
|
#define MY_TIMER_ROUTINE_CLOCK_GETTIME 11
|
||||||
#define MY_TIMER_ROUTINE_NXGETTIME 12
|
|
||||||
#define MY_TIMER_ROUTINE_GETTIMEOFDAY 13
|
#define MY_TIMER_ROUTINE_GETTIMEOFDAY 13
|
||||||
#define MY_TIMER_ROUTINE_QUERYPERFORMANCECOUNTER 14
|
#define MY_TIMER_ROUTINE_QUERYPERFORMANCECOUNTER 14
|
||||||
#define MY_TIMER_ROUTINE_GETTICKCOUNT 15
|
#define MY_TIMER_ROUTINE_GETTICKCOUNT 15
|
||||||
#define MY_TIMER_ROUTINE_TIME 16
|
#define MY_TIMER_ROUTINE_TIME 16
|
||||||
#define MY_TIMER_ROUTINE_TIMES 17
|
#define MY_TIMER_ROUTINE_TIMES 17
|
||||||
#define MY_TIMER_ROUTINE_FTIME 18
|
#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_SPARC64 23
|
||||||
#define MY_TIMER_ROUTINE_ASM_GCC_SPARC32 24
|
#define MY_TIMER_ROUTINE_ASM_GCC_SPARC32 24
|
||||||
#define MY_TIMER_ROUTINE_MACH_ABSOLUTE_TIME 25
|
#define MY_TIMER_ROUTINE_MACH_ABSOLUTE_TIME 25
|
||||||
#define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26
|
#define MY_TIMER_ROUTINE_GETSYSTEMTIMEASFILETIME 26
|
||||||
#define MY_TIMER_ROUTINE_ASM_SUNPRO_X86_64 27
|
|
||||||
#define MY_TIMER_ROUTINE_ASM_S390 28
|
#define MY_TIMER_ROUTINE_ASM_S390 28
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -276,7 +276,7 @@ extern int mi_rsame_with_pos(struct st_myisam_info *file,uchar *record,
|
|||||||
int inx, my_off_t pos);
|
int inx, my_off_t pos);
|
||||||
extern int mi_update(struct st_myisam_info *file,const uchar *old,
|
extern int mi_update(struct st_myisam_info *file,const uchar *old,
|
||||||
const uchar *new_record);
|
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 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_status(struct st_myisam_info *info, MI_ISAMINFO *x, uint flag);
|
||||||
extern int mi_lock_database(struct st_myisam_info *file,int lock_type);
|
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_rsame(MYRG_INFO *file,uchar *record,int inx);
|
||||||
extern int myrg_update(MYRG_INFO *file,const uchar *old,
|
extern int myrg_update(MYRG_INFO *file,const uchar *old,
|
||||||
const uchar *new_rec);
|
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_status(MYRG_INFO *file,MYMERGE_INFO *x,int flag);
|
||||||
extern int myrg_lock_database(MYRG_INFO *file,int lock_type);
|
extern int myrg_lock_database(MYRG_INFO *file,int lock_type);
|
||||||
extern int myrg_create(const char *name, const char **table_names,
|
extern int myrg_create(const char *name, const char **table_names,
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#define MYSQL_SERVER_VERSION "@VERSION@-MariaDB"
|
#define MYSQL_SERVER_VERSION "@VERSION@-MariaDB"
|
||||||
#define MYSQL_BASE_VERSION "mysqld-@MYSQL_BASE_VERSION@"
|
#define MYSQL_BASE_VERSION "mysqld-@MYSQL_BASE_VERSION@"
|
||||||
#define MARIADB_BASE_VERSION "mariadb-@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 MYSQL_SERVER_SUFFIX_DEF "@MYSQL_SERVER_SUFFIX@"
|
||||||
#define FRM_VER @DOT_FRM_VERSION@
|
#define FRM_VER @DOT_FRM_VERSION@
|
||||||
#define MYSQL_VERSION_ID @MYSQL_VERSION_ID@
|
#define MYSQL_VERSION_ID @MYSQL_VERSION_ID@
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
const char *load_default_groups[]= {
|
const char *load_default_groups[]= {
|
||||||
"mysqld", "server", MYSQL_BASE_VERSION,
|
"mysqld", "server", MYSQL_BASE_VERSION,
|
||||||
"mariadb", MARIADB_BASE_VERSION,
|
"mariadb", MARIADB_BASE_VERSION,
|
||||||
|
"mariadbd", MARIADBD_BASE_VERSION,
|
||||||
"client-server",
|
"client-server",
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
"galera",
|
"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
|
.sp -1
|
||||||
.IP \(bu 2.3
|
.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
|
.\" mysqladmin: user option
|
||||||
.\" user option: mysqladmin
|
.\" user option: mysqladmin
|
||||||
\fB\-\-user=\fR\fB\fIuser_name\fR\fR,
|
\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
|
\fIcount\fR
|
||||||
value is given, it indicates the number of times to retry\&. The default is one time\&.
|
value is given, it indicates the number of times to retry\&. The default is one time\&.
|
||||||
.RE
|
.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
|
.PP
|
||||||
You can also set the following variables by using
|
You can also set the following variables by using
|
||||||
\fB\-\-\fR\fB\fIvar_name\fR\fR\fB=\fR\fB\fIvalue\fR\fR
|
\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
|
# We need to wait for the implicit DROP TEMPORARY TABLE to be logged after
|
||||||
# tmp_con disconnect, otherwise we get sporadic test failures.
|
# 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'
|
--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
|
--source include/wait_condition.inc
|
||||||
|
}
|
||||||
--let $binlog_pos2=query_get_value(SHOW MASTER STATUS, Position, 1)
|
--let $binlog_pos2=query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||||
|
|
||||||
--let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 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
|
# Skip comment
|
||||||
next;
|
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 {
|
else {
|
||||||
croak "Unexpected line '$line' found in '$path'";
|
croak "Unexpected line '$line' found in '$path'";
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,8 @@ else
|
|||||||
$bindir = getcwd();
|
$bindir = getcwd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
our $wsrep_check_version;
|
||||||
|
|
||||||
# Find the safe process binary or script
|
# Find the safe process binary or script
|
||||||
sub find_bin {
|
sub find_bin {
|
||||||
if (IS_WIN32PERL or IS_CYGWIN)
|
if (IS_WIN32PERL or IS_CYGWIN)
|
||||||
@ -119,6 +121,10 @@ sub find_bin {
|
|||||||
"my_safe_process");
|
"my_safe_process");
|
||||||
push(@safe_process_cmd, $exe);
|
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
|
# 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_process safe_process_win.cc)
|
||||||
ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc)
|
ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc)
|
||||||
TARGET_LINK_LIBRARIES(my_safe_kill dbghelp psapi)
|
TARGET_LINK_LIBRARIES(my_safe_kill dbghelp psapi)
|
||||||
@ -22,6 +22,11 @@ ELSE()
|
|||||||
ADD_EXECUTABLE(my_safe_process safe_process.cc)
|
ADD_EXECUTABLE(my_safe_process safe_process.cc)
|
||||||
ENDIF()
|
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)
|
IF(NOT INSTALL_MYSQLTESTDIR)
|
||||||
RETURN()
|
RETURN()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
@ -32,6 +37,9 @@ SET(INSTALL_ARGS
|
|||||||
)
|
)
|
||||||
|
|
||||||
INSTALL(TARGETS my_safe_process ${INSTALL_ARGS})
|
INSTALL(TARGETS my_safe_process ${INSTALL_ARGS})
|
||||||
|
IF(WITH_WSREP)
|
||||||
|
INSTALL(TARGETS wsrep_check_version ${INSTALL_ARGS})
|
||||||
|
ENDIF()
|
||||||
IF (WIN32)
|
IF (WIN32)
|
||||||
INSTALL(TARGETS my_safe_kill ${INSTALL_ARGS})
|
INSTALL(TARGETS my_safe_kill ${INSTALL_ARGS})
|
||||||
ENDIF()
|
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 IO::Handle qw[ flush ];
|
||||||
use mtr_results;
|
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;
|
my $tot_real_time= 0;
|
||||||
|
|
||||||
our $timestamp= 0;
|
our $timestamp= 0;
|
||||||
@ -498,7 +513,16 @@ sub mtr_print (@) {
|
|||||||
sub mtr_report (@) {
|
sub mtr_report (@) {
|
||||||
if (defined $verbose)
|
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
|
# 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
|
# MDEV-17932 : Assertion upon double RENAME USER
|
||||||
#
|
#
|
||||||
CREATE USER foo@localhost;
|
CREATE USER foo@localhost;
|
||||||
|
@ -2247,6 +2247,35 @@ DROP USER dummy@localhost;
|
|||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--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 #
|
||||||
--echo # MDEV-17932 : Assertion upon double RENAME USER
|
--echo # MDEV-17932 : Assertion upon double RENAME USER
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2514,6 +2514,40 @@ WHERE tb1.pk = 40
|
|||||||
ORDER BY tb1.i1;
|
ORDER BY tb1.i1;
|
||||||
v2
|
v2
|
||||||
DROP TABLE t1,t2;
|
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
|
# end of 5.5 tests
|
||||||
#
|
#
|
||||||
# MDEV-19258: chained right joins all converted to inner joins
|
# MDEV-19258: chained right joins all converted to inner joins
|
||||||
|
@ -2041,6 +2041,29 @@ ORDER BY tb1.i1;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
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 # end of 5.5 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2525,6 +2525,40 @@ WHERE tb1.pk = 40
|
|||||||
ORDER BY tb1.i1;
|
ORDER BY tb1.i1;
|
||||||
v2
|
v2
|
||||||
DROP TABLE t1,t2;
|
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
|
# end of 5.5 tests
|
||||||
#
|
#
|
||||||
# MDEV-19258: chained right joins all converted to inner joins
|
# 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:
|
The following options may be given as the first argument:
|
||||||
--print-defaults Print the program argument list and exit.
|
--print-defaults Print the program argument list and exit.
|
||||||
--no-defaults Don't read default options from any option file.
|
--no-defaults Don't read default options from any option file.
|
||||||
|
@ -43,7 +43,7 @@ perl;
|
|||||||
$re2=join('|', @plugins);
|
$re2=join('|', @plugins);
|
||||||
$skip=0;
|
$skip=0;
|
||||||
open(F, '<', "$ENV{MYSQL_TMP_DIR}/mysqld--help.txt") or die;
|
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>) {
|
while (<F>) {
|
||||||
next if 1../The following groups are read/;
|
next if 1../The following groups are read/;
|
||||||
# formatting, skip line consisting entirely of dashes and blanks
|
# 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;
|
select * from t1 for update;
|
||||||
a
|
a
|
||||||
drop table t1;
|
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
|
# End of 10.4 tests
|
||||||
|
@ -1552,4 +1552,18 @@ create table t1 (a int);
|
|||||||
select * from t1 for update;
|
select * from t1 for update;
|
||||||
drop table t1;
|
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
|
--echo # End of 10.4 tests
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
create table t1 (a int) engine=myisam data directory='MYSQL_TMP_DIR';
|
create table t1 (a int) engine=myisam data directory='MYSQL_TMP_DIR';
|
||||||
insert t1 values (1);
|
insert t1 values (1);
|
||||||
# Some systems fail with errcode 40, when doing openat, while others
|
# Some systems fail with errcode 40, or 90 (MIPS) when doing openat,
|
||||||
# don't have openat and fail with errcode 20.
|
# while others don't have openat and fail with errcode 20.
|
||||||
repair table t1;
|
repair table t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 repair error 20 for record at pos 0
|
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';
|
eval create table t1 (a int) engine=myisam data directory='$MYSQL_TMP_DIR';
|
||||||
insert t1 values (1);
|
insert t1 values (1);
|
||||||
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t1.TMD
|
--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 # Some systems fail with errcode 40, or 90 (MIPS) when doing openat,
|
||||||
--echo # don't have openat and fail with errcode 20.
|
--echo # while others don't have openat and fail with errcode 20.
|
||||||
--replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /40/20/ /".*"/"<errmsg>"/
|
--replace_regex / '.*\/t1/ 'MYSQL_TMP_DIR\/t1/ /[49]0/20/ /".*"/"<errmsg>"/
|
||||||
repair table t1;
|
repair table t1;
|
||||||
drop 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';
|
eval create table t2 (a int) engine=aria data directory='$MYSQL_TMP_DIR';
|
||||||
insert t2 values (1);
|
insert t2 values (1);
|
||||||
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t2.TMD
|
--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;
|
repair table t2;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
|
||||||
|
@ -8307,6 +8307,20 @@ UNION
|
|||||||
SELECT * FROM INFORMATION_SCHEMA.TABLES JOIN INFORMATION_SCHEMA.PARAMETERS;
|
SELECT * FROM INFORMATION_SCHEMA.TABLES JOIN INFORMATION_SCHEMA.PARAMETERS;
|
||||||
DROP FUNCTION f;
|
DROP FUNCTION f;
|
||||||
DROP VIEW v;
|
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
|
#End of 10.1 tests
|
||||||
#
|
#
|
||||||
# MDEV-11081: CURSOR for query with GROUP BY
|
# 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 FUNCTION f;
|
||||||
DROP VIEW v;
|
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 #End of 10.1 tests
|
||||||
|
|
||||||
--echo #
|
--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
|
00:01:00
|
||||||
DROP TABLE t1;
|
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
|
# 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);
|
SELECT * FROM t1 WHERE 20160101 > CAST(a AS DATETIME);
|
||||||
DROP TABLE t1;
|
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 #
|
||||||
--echo # End of 10.1 tests
|
--echo # End of 10.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -687,7 +687,23 @@ DROP TABLE t1,t2;
|
|||||||
# End of 10.0 tests
|
# 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='';
|
SET sql_mode='';
|
||||||
CREATE TABLE t1 (c VARCHAR(1) DEFAULT 'foo');
|
CREATE TABLE t1 (c VARCHAR(1) DEFAULT 'foo');
|
||||||
|
@ -329,9 +329,23 @@ DROP TABLE t1,t2;
|
|||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--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 #
|
||||||
--echo # Start of 10.4 tests
|
--echo # End of 10.3 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
SET sql_mode='';
|
SET sql_mode='';
|
||||||
|
@ -138,6 +138,10 @@ my $opt_start_dirty;
|
|||||||
my $opt_start_exit;
|
my $opt_start_exit;
|
||||||
my $start_only;
|
my $start_only;
|
||||||
my $file_wsrep_provider;
|
my $file_wsrep_provider;
|
||||||
|
my $extra_path;
|
||||||
|
my $mariabackup_path;
|
||||||
|
my $mariabackup_exe;
|
||||||
|
my $garbd_exe;
|
||||||
|
|
||||||
our @global_suppressions;
|
our @global_suppressions;
|
||||||
|
|
||||||
@ -373,8 +377,162 @@ $| = 1; # Automatically flush STDOUT
|
|||||||
|
|
||||||
main();
|
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 {
|
sub main {
|
||||||
|
$ENV{MTR_PERL}=$^X;
|
||||||
|
|
||||||
# Default, verbosity on
|
# Default, verbosity on
|
||||||
report_option('verbose', 0);
|
report_option('verbose', 0);
|
||||||
|
|
||||||
@ -416,6 +574,8 @@ sub main {
|
|||||||
}
|
}
|
||||||
check_ssl_support();
|
check_ssl_support();
|
||||||
check_debug_support();
|
check_debug_support();
|
||||||
|
check_wsrep_support();
|
||||||
|
check_mariabackup_support();
|
||||||
|
|
||||||
if (!$opt_suites) {
|
if (!$opt_suites) {
|
||||||
$opt_suites= join ',', collect_default_suites(@DEFAULT_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);
|
next if (defined $t->{reserved} and $t->{reserved} != $wid);
|
||||||
if (! defined $t->{reserved})
|
if (! defined $t->{reserved})
|
||||||
{
|
{
|
||||||
|
# Force-restart not relevant when comparing *next* test
|
||||||
|
$t->{criteria} =~ s/force-restart$/no-restart/;
|
||||||
my $criteria= $t->{criteria};
|
my $criteria= $t->{criteria};
|
||||||
# Reserve similar tests for this worker, but not too many
|
# Reserve similar tests for this worker, but not too many
|
||||||
my $maxres= (@$tests - $i) / $opt_parallel + 1;
|
my $maxres= (@$tests - $i) / $opt_parallel + 1;
|
||||||
@ -1887,7 +2049,10 @@ sub collect_mysqld_features {
|
|||||||
if (/Copyright/ .. /^-{30,}/) {
|
if (/Copyright/ .. /^-{30,}/) {
|
||||||
# here we want to detect all not mandatory plugins
|
# here we want to detect all not mandatory plugins
|
||||||
# they are listed in the --help output as
|
# 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
|
push @optional_plugins, $1
|
||||||
if /^ --([-a-z0-9]+)\[=name\] +Enable or disable \w+ plugin. One of: ON, OFF, FORCE/;
|
if /^ --([-a-z0-9]+)\[=name\] +Enable or disable \w+ plugin. One of: ON, OFF, FORCE/;
|
||||||
next;
|
next;
|
||||||
@ -2581,82 +2746,72 @@ sub setup_vardir() {
|
|||||||
copytree("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data", "0022");
|
copytree("$glob_mysql_test_dir/std_data", "$opt_vardir/std_data", "0022");
|
||||||
|
|
||||||
# create a plugin dir and copy or symlink plugins into it
|
# create a plugin dir and copy or symlink plugins into it
|
||||||
if ($source_dist)
|
unless($plugindir)
|
||||||
{
|
{
|
||||||
$plugindir="$opt_vardir/plugins";
|
if ($source_dist)
|
||||||
mkpath($plugindir);
|
|
||||||
if (IS_WINDOWS)
|
|
||||||
{
|
{
|
||||||
if (!$opt_embedded_server)
|
$plugindir="$opt_vardir/plugins";
|
||||||
|
mkpath($plugindir);
|
||||||
|
if (IS_WINDOWS)
|
||||||
{
|
{
|
||||||
for (<$bindir/storage/*$opt_vs_config/*.dll>,
|
if (!$opt_embedded_server)
|
||||||
<$bindir/plugin/*$opt_vs_config/*.dll>,
|
{
|
||||||
<$bindir/libmariadb$opt_vs_config/*.dll>,
|
for (<$bindir/storage/*$opt_vs_config/*.dll>,
|
||||||
<$bindir/sql$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($_);
|
my $pname=basename($_);
|
||||||
copy rel2abs($_), "$plugindir/$pname";
|
if ($opt_use_copy)
|
||||||
|
{
|
||||||
|
copy rel2abs($_), "$plugindir/$pname";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
symlink rel2abs($_), "$plugindir/$pname";
|
||||||
|
}
|
||||||
set_plugin_var($pname);
|
set_plugin_var($pname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
my $opt_use_copy= 1;
|
# hm, what paths work for debs and for rpms ?
|
||||||
if (symlink "$opt_vardir/run", "$plugindir/symlink_test")
|
for (<$bindir/lib64/mysql/plugin/*.so>,
|
||||||
{
|
<$bindir/lib/mysql/plugin/*.so>,
|
||||||
$opt_use_copy= 0;
|
<$bindir/lib64/mariadb/plugin/*.so>,
|
||||||
unlink "$plugindir/symlink_test";
|
<$bindir/lib/mariadb/plugin/*.so>,
|
||||||
}
|
<$bindir/lib/plugin/*.so>, # bintar
|
||||||
|
<$bindir/lib/plugin/*.dll>)
|
||||||
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>)
|
|
||||||
{
|
{
|
||||||
my $pname=basename($_);
|
my $pname=basename($_);
|
||||||
if ($opt_use_copy)
|
|
||||||
{
|
|
||||||
copy rel2abs($_), "$plugindir/$pname";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
symlink rel2abs($_), "$plugindir/$pname";
|
|
||||||
}
|
|
||||||
set_plugin_var($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
|
# Remove old log files
|
||||||
foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
|
foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
|
||||||
@ -3750,6 +3905,25 @@ sub find_analyze_request
|
|||||||
return $analyze;
|
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
|
# Return timezone value of tinfo or default value
|
||||||
sub timezone {
|
sub timezone {
|
||||||
@ -4110,8 +4284,12 @@ sub run_testcase ($$) {
|
|||||||
if ( $res == 0 )
|
if ( $res == 0 )
|
||||||
{
|
{
|
||||||
my $check_res;
|
my $check_res;
|
||||||
if ( $opt_check_testcases and
|
if ( restart_forced_by_test('force_restart') )
|
||||||
$check_res= check_testcase($tinfo, "after"))
|
{
|
||||||
|
stop_all_servers($opt_shutdown_timeout);
|
||||||
|
}
|
||||||
|
elsif ( $opt_check_testcases and
|
||||||
|
$check_res= check_testcase($tinfo, "after"))
|
||||||
{
|
{
|
||||||
if ($check_res == 1) {
|
if ($check_res == 1) {
|
||||||
# Test case had sideeffects, not fatal error, just continue
|
# Test case had sideeffects, not fatal error, just continue
|
||||||
@ -4146,7 +4324,8 @@ sub run_testcase ($$) {
|
|||||||
find_testcase_skipped_reason($tinfo);
|
find_testcase_skipped_reason($tinfo);
|
||||||
mtr_report_test_skipped($tinfo);
|
mtr_report_test_skipped($tinfo);
|
||||||
# Restart if skipped due to missing perl, it may have had side effects
|
# 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);
|
stop_all_servers($opt_shutdown_timeout);
|
||||||
}
|
}
|
||||||
@ -5298,6 +5477,11 @@ sub server_need_restart {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $tinfo->{'force_restart'} ) {
|
||||||
|
mtr_verbose_restart($server, "forced in .opt file");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if ( $opt_force_restart ) {
|
if ( $opt_force_restart ) {
|
||||||
mtr_verbose_restart($server, "forced restart turned on");
|
mtr_verbose_restart($server, "forced restart turned on");
|
||||||
return 1;
|
return 1;
|
||||||
@ -6392,6 +6576,7 @@ Misc options
|
|||||||
servers to exit before finishing the process
|
servers to exit before finishing the process
|
||||||
fast Run as fast as possible, don't wait for servers
|
fast Run as fast as possible, don't wait for servers
|
||||||
to shutdown etc.
|
to shutdown etc.
|
||||||
|
force-restart Always restart servers between tests
|
||||||
parallel=N Run tests in N parallel threads (default 1)
|
parallel=N Run tests in N parallel threads (default 1)
|
||||||
Use parallel=auto for auto-setting of N
|
Use parallel=auto for auto-setting of N
|
||||||
repeat=N Run each test N number of times
|
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'} =
|
$skip{'include/maybe_debug.combinations'} =
|
||||||
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];
|
[ 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
|
# and for the wrong word size
|
||||||
# check for exact values, in case the default changes to be small everywhere
|
# check for exact values, in case the default changes to be small everywhere
|
||||||
my $longsysvar= $::mysqld_variables{'max-binlog-stmt-cache-size'};
|
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'
|
$skip{'include/not_embedded.inc'} = 'Not run for embedded server'
|
||||||
if $::opt_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'
|
$skip{'include/have_example_plugin.inc'} = 'Need example plugin'
|
||||||
unless $ENV{HA_EXAMPLE_SO};
|
unless $ENV{HA_EXAMPLE_SO};
|
||||||
|
|
||||||
@ -51,6 +47,21 @@ sub skip_combinations {
|
|||||||
$skip{'main/plugin_loaderr.test'} = 'needs compiled-in innodb'
|
$skip{'main/plugin_loaderr.test'} = 'needs compiled-in innodb'
|
||||||
unless $::mysqld_variables{'innodb'} eq "ON";
|
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
|
# disable tests that use ipv6, if unsupported
|
||||||
sub ipv6_ok() {
|
sub ipv6_ok() {
|
||||||
use Socket;
|
use Socket;
|
||||||
@ -62,22 +73,31 @@ sub skip_combinations {
|
|||||||
}
|
}
|
||||||
$skip{'include/check_ipv6.inc'} = 'No IPv6' unless ipv6_ok();
|
$skip{'include/check_ipv6.inc'} = 'No IPv6' unless ipv6_ok();
|
||||||
|
|
||||||
$skip{'main/openssl_6975.test'} = 'no or wrong openssl version'
|
# SSL is complicated
|
||||||
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
my $ssl_lib= $::mysqld_variables{'version-ssl-library'};
|
||||||
and $1 ge "1.0.1d" and $1 lt "1.1.1";
|
my $openssl_ver= $ssl_lib =~ /OpenSSL (\S+)/ ? $1 : "";
|
||||||
|
|
||||||
sub x509v3_ok() {
|
$skip{'include/have_ssl_communication.inc'} =
|
||||||
return ($::mysqld_variables{'version-ssl-library'} =~ /WolfSSL/) ||
|
$skip{'include/have_ssl_crypto_functs.inc'} = 'Requires SSL' unless $ssl_lib;
|
||||||
($::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
|
||||||
and $1 ge "1.0.2");
|
$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' ]
|
$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'
|
$skip{'main/ssl_verify_ip.test'} = 'x509v3 support required'
|
||||||
unless $::mysqld_variables{'version-ssl-library'} =~ /OpenSSL (\S+)/
|
unless $openssl_ver ge "1.0.2";
|
||||||
and $1 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;
|
%skip;
|
||||||
}
|
}
|
||||||
|
@ -14,12 +14,8 @@ CREATE TEMPORARY TABLE `table:name` (a INT);
|
|||||||
CREATE TEMPORARY TABLE shortn2 (a INT);
|
CREATE TEMPORARY TABLE shortn2 (a INT);
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# BUG#46572 DROP TEMPORARY table IF EXISTS does not have a consistent behavior
|
# MDEV-20091: DROP TEMPORARY TABLE IF EXISTS statements will be written
|
||||||
# in ROW mode
|
# to binlog only if the corresponding temporary table exists.
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
CREATE TEMPORARY TABLE tmp(c1 int);
|
CREATE TEMPORARY TABLE tmp(c1 int);
|
||||||
CREATE TEMPORARY TABLE tmp1(c1 int);
|
CREATE TEMPORARY TABLE tmp1(c1 int);
|
||||||
@ -30,12 +26,12 @@ CREATE TABLE t(c1 int);
|
|||||||
DROP TEMPORARY TABLE IF EXISTS tmp;
|
DROP TEMPORARY TABLE IF EXISTS tmp;
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
# Before fixing BUG#46572, 'DROP TEMPORARY TABLE IF EXISTS...' statement was
|
# Post MDEV-20091: Following DROP TEMPORARY TABLE statement should not be
|
||||||
# binlogged when the table did not exist in RBR.
|
# logged as the table is already dropped above.
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp;
|
DROP TEMPORARY TABLE IF EXISTS tmp;
|
||||||
|
|
||||||
# In RBR, 'DROP TEMPORARY TABLE ...' statement is never binlogged no matter if
|
# Post MDEV-20091: Only DROP TEMPORARY TABLE statement should be written only
|
||||||
# the tables exist or not.
|
# for 'tmp1' table.
|
||||||
DROP TEMPORARY TABLE IF EXISTS tmp, tmp1;
|
DROP TEMPORARY TABLE IF EXISTS tmp, tmp1;
|
||||||
DROP TEMPORARY TABLE tmp3;
|
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
|
# if there are open temporary tables. As such the implicit drop
|
||||||
# for temporary tables on session closing must be logged.
|
# 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;
|
RESET MASTER;
|
||||||
|
|
||||||
@ -92,8 +94,10 @@ SELECT @@session.binlog_format;
|
|||||||
--disconnect con1
|
--disconnect con1
|
||||||
|
|
||||||
-- connection default
|
-- connection default
|
||||||
|
if (!`SELECT @@BINLOG_FORMAT = 'ROW'`) {
|
||||||
--let $wait_binlog_event= DROP
|
--let $wait_binlog_event= DROP
|
||||||
--source include/wait_for_binlog_event.inc
|
--source include/wait_for_binlog_event.inc
|
||||||
|
}
|
||||||
-- source include/show_binlog_events.inc
|
-- source include/show_binlog_events.inc
|
||||||
RESET MASTER;
|
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######## Table_map: `test`.`t1` mapped to number #
|
||||||
# server id 1 end_log_pos # CRC32 0x######## Write_rows: table id # flags: STMT_END_F
|
# server id 1 end_log_pos # CRC32 0x######## Write_rows: table id # flags: STMT_END_F
|
||||||
COMMIT/*!*/;
|
COMMIT/*!*/;
|
||||||
# server id 1 end_log_pos # CRC32 0x######## GTID #-#-# ddl
|
|
||||||
DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t5`
|
|
||||||
DROP TABLE t1;
|
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 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `drop-temp+table-test`; CREATE TABLE t(c1 int)
|
master-bin.000001 # Query # # use `drop-temp+table-test`; CREATE TABLE t(c1 int)
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
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 # Query # # use `drop-temp+table-test`; DROP TABLE IF EXISTS `t` /* generated by server */
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
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 # 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`;
|
DROP DATABASE `drop-temp+table-test`;
|
||||||
RESET MASTER;
|
RESET MASTER;
|
||||||
CREATE TABLE t1 ( i text );
|
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 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # COMMIT
|
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;
|
RESET MASTER;
|
||||||
DROP TABLE t1;
|
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 # Query # # COMMIT
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; create table t2 (n int) engine=innodb
|
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");
|
do release_lock("lock1");
|
||||||
drop table t0,t2;
|
drop table t0,t2;
|
||||||
set autocommit=0;
|
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 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp` /* generated by server */
|
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 # 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 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp1` /* generated by server */
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
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 # Query # # use `drop-temp+table-test`; DROP TEMPORARY TABLE `tmp3` /* generated by server */
|
||||||
master-bin.000001 # Gtid # # GTID #-#-#
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `drop-temp+table-test`.`tmp2` /* generated by server */
|
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
|
Variable_name Value
|
||||||
innodb_encrypt_log ON
|
innodb_encrypt_log ON
|
||||||
innodb_encrypt_tables ON
|
innodb_encrypt_tables ON
|
||||||
|
innodb_encrypt_temporary_tables OFF
|
||||||
innodb_encryption_rotate_key_age 2
|
innodb_encryption_rotate_key_age 2
|
||||||
innodb_encryption_rotation_iops 100
|
innodb_encryption_rotation_iops 100
|
||||||
innodb_encryption_threads 4
|
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 t2
|
||||||
# Run innochecksum on t3
|
# Run innochecksum on t3
|
||||||
# Run innochecksum on t6
|
# Run innochecksum on t6
|
||||||
# In new checksum format, checksum calculated for whole page.
|
# Space ID mismatch
|
||||||
# So It should affected.
|
|
||||||
# Restore the original tables
|
# Restore the original tables
|
||||||
# Corrupt FIL_DATA+10 (data)
|
# Corrupt FIL_DATA+10 (data)
|
||||||
# Run innochecksum on t2
|
# Run innochecksum on t2
|
||||||
|
@ -96,7 +96,6 @@ connection default;
|
|||||||
SET DEBUG_SYNC = 'now WAIT_FOR done';
|
SET DEBUG_SYNC = 'now WAIT_FOR done';
|
||||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# restart
|
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
f1 f2
|
f1 f2
|
||||||
|
@ -22,6 +22,8 @@ key (col_int_key),
|
|||||||
key (col_char_key)
|
key (col_char_key)
|
||||||
) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
|
) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
|
||||||
CREATE TEMPORARY TABLE t LIKE t0;
|
CREATE TEMPORARY TABLE t LIKE t0;
|
||||||
|
Warnings:
|
||||||
|
Warning 1478 Ignoring encryption parameter during temporary table creation.
|
||||||
INSERT INTO t VALUES
|
INSERT INTO t VALUES
|
||||||
(NULL,1,1,'private','secret'),(NULL,2,2,'sacred','success'),
|
(NULL,1,1,'private','secret'),(NULL,2,2,'sacred','success'),
|
||||||
(NULL,3,3,'story','secure'),(NULL,4,4,'security','sacrament');
|
(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
|
Variable_name Value
|
||||||
innodb_encrypt_log ON
|
innodb_encrypt_log ON
|
||||||
innodb_encrypt_tables ON
|
innodb_encrypt_tables ON
|
||||||
|
innodb_encrypt_temporary_tables OFF
|
||||||
innodb_encryption_rotate_key_age 15
|
innodb_encryption_rotate_key_age 15
|
||||||
innodb_encryption_rotation_iops 100
|
innodb_encryption_rotation_iops 100
|
||||||
innodb_encryption_threads 4
|
innodb_encryption_threads 4
|
||||||
@ -58,6 +59,7 @@ SHOW VARIABLES LIKE 'innodb_encrypt%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
innodb_encrypt_log ON
|
innodb_encrypt_log ON
|
||||||
innodb_encrypt_tables OFF
|
innodb_encrypt_tables OFF
|
||||||
|
innodb_encrypt_temporary_tables OFF
|
||||||
innodb_encryption_rotate_key_age 15
|
innodb_encryption_rotate_key_age 15
|
||||||
innodb_encryption_rotation_iops 100
|
innodb_encryption_rotation_iops 100
|
||||||
innodb_encryption_threads 0
|
innodb_encryption_threads 0
|
||||||
|
@ -209,9 +209,8 @@ EOF
|
|||||||
--exec $INNOCHECKSUM $t3_IBD
|
--exec $INNOCHECKSUM $t3_IBD
|
||||||
|
|
||||||
--echo # Run innochecksum on t6
|
--echo # Run innochecksum on t6
|
||||||
--echo # In new checksum format, checksum calculated for whole page.
|
--echo # Space ID mismatch
|
||||||
--echo # So It should affected.
|
--error 1
|
||||||
--error $error_code
|
|
||||||
--exec $INNOCHECKSUM $t6_IBD
|
--exec $INNOCHECKSUM $t6_IBD
|
||||||
|
|
||||||
--enable_result_log
|
--enable_result_log
|
||||||
|
@ -123,6 +123,8 @@ SET DEBUG_SYNC = 'now WAIT_FOR done';
|
|||||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
let $restart_parameters = --innodb_encryption_threads=2;
|
||||||
|
let $restart_noprint = 2;
|
||||||
--let $shutdown_timeout= 0
|
--let $shutdown_timeout= 0
|
||||||
--source include/restart_mysqld.inc
|
--source include/restart_mysqld.inc
|
||||||
disconnect con1;
|
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
|
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-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-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-328C : MDEV-17847 Galera test failure on MW-328[A|B|C]
|
||||||
MW-329 : wsrep_local_replays not stable
|
MW-329 : MDEV-19962 Galera test failure on MW-329
|
||||||
MW-336 : MDEV-13549 incorrect wait_condition for wsrep_slave_threads changes
|
|
||||||
MW-360 : needs rewrite to be MariaDB gtid compatible
|
MW-360 : needs rewrite to be MariaDB gtid compatible
|
||||||
MW-336 : MDEV-19746 Galera test failures because of wsrep_slave_threads identification
|
MW-388: MDEV-19803 Long semaphore wait error on galera.MW-388
|
||||||
MW-416 : MDEV-13549 Galera test failures
|
|
||||||
MW-44 : MDEV-15809 Test failure on galera.MW-44
|
|
||||||
galera_account_management : MariaDB 10.0 does not support ALTER USER
|
galera_account_management : MariaDB 10.0 does not support ALTER USER
|
||||||
galera_as_master_gtid : Requires MySQL GTID
|
galera_as_master_gtid : Requires MySQL GTID
|
||||||
galera_as_master_gtid_change_master : 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_gtid_replicate_do_db_cc : Requires MySQL GTID
|
||||||
galera_as_slave_preordered : wsrep-preordered feature not merged to MariaDB
|
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_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_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_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_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_encrypt_tmp_files : Get error failed to enable encryption of temporary files
|
||||||
galera_flush : MariaDB does not have global.thread_statistics
|
galera_flush : MariaDB does not have global.thread_statistics
|
||||||
galera_gcache_recover_manytrx : MDEV-18834 Galera test failure
|
galera_gcache_recover_manytrx : MDEV-18834 Galera test failure
|
||||||
galera_ist_mariabackup : MDEV-18829 test leaves port open
|
galera_ist_mariabackup : MDEV-18829 test leaves port open
|
||||||
galera_ist_progress: MDEV-15236 fails when trying to read transfer status
|
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_kill_largechanges : MDEV-18179 Galera test failure on galera.galera_kill_largechanges
|
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_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
|
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_notify_cmd : MDEV-13549 Galera test failures
|
||||||
galera_var_reject_queries : assertion in inline_mysql_socket_send
|
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_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
|
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.
|
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
|
partition : MDEV-19958 Galera test failure on galera.partition
|
||||||
pxc-421: Lock timeout exceeded
|
|
||||||
query_cache : MDEV-18137: Galera test failure on query_cache
|
|
||||||
|
@ -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;
|
SET SESSION wsrep_sync_wait = 0;
|
||||||
Killing server ...
|
Killing server ...
|
||||||
|
connection node_1;
|
||||||
SET SESSION wsrep_sync_wait = 0;
|
SET SESSION wsrep_sync_wait = 0;
|
||||||
Killing server ...
|
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