mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Merge branch '10.6' into 10.11
This commit is contained in:
@ -70,7 +70,6 @@ IndentPPDirectives: None
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
Language: Cpp
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
@ -199,8 +199,9 @@ OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system librar
|
||||
# Can be switched on only for debug build.
|
||||
#
|
||||
OPTION(WITH_PROTECT_STATEMENT_MEMROOT "Enable protection of statement's memory root after first SP/PS execution. Turned into account only for debug build" OFF)
|
||||
IF (CMAKE_BUILD_TYPE MATCHES "Debug" AND WITH_PROTECT_STATEMENT_MEMROOT)
|
||||
ADD_DEFINITIONS(-DPROTECT_STATEMENT_MEMROOT)
|
||||
IF (WITH_PROTECT_STATEMENT_MEMROOT)
|
||||
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DPROTECT_STATEMENT_MEMROOT")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DPROTECT_STATEMENT_MEMROOT")
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(check_compiler_flag)
|
||||
|
19
README.md
19
README.md
@ -3,7 +3,7 @@ Code status:
|
||||
|
||||
* [](https://ci.appveyor.com/project/rasmushoj/server) ci.appveyor.com
|
||||
|
||||
## MariaDB: The open source relational database
|
||||
## MariaDB: The innovative open source database
|
||||
|
||||
MariaDB was designed as a drop-in replacement of MySQL(R) with more
|
||||
features, new storage engines, fewer bugs, and better performance.
|
||||
@ -33,28 +33,23 @@ https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/
|
||||
|
||||
https://mariadb.com/kb/en/new-and-old-releases/
|
||||
|
||||
Getting the code, building it and testing it
|
||||
---------------------------------------------------------------
|
||||
|
||||
Refer to the following guide: https://mariadb.org/get-involved/getting-started-for-developers/get-code-build-test/ which outlines how to correctly build the source code and run the MariaDB testing framework.
|
||||
|
||||
Help
|
||||
-----
|
||||
|
||||
More help is available from the Maria Discuss mailing list
|
||||
https://launchpad.net/~maria-discuss, MariaDB's Zulip
|
||||
https://lists.mariadb.org/postorius/lists/discuss.lists.mariadb.org/ and MariaDB's Zulip
|
||||
instance, https://mariadb.zulipchat.com/
|
||||
|
||||
Live QA for beginner contributors
|
||||
----
|
||||
MariaDB has a dedicated time each week when we answer new contributor questions live on Zulip.
|
||||
From 8:00 to 10:00 UTC on Mondays, and 10:00 to 12:00 UTC on Thursdays,
|
||||
anyone can ask any questions they’d like, and a live developer will be available to assist.
|
||||
|
||||
New contributors can ask questions any time, but we will provide immediate feedback during that interval.
|
||||
|
||||
Licensing
|
||||
---------
|
||||
|
||||
***************************************************************************
|
||||
|
||||
NOTE:
|
||||
|
||||
MariaDB is specifically available only under version 2 of the GNU
|
||||
General Public License (GPLv2). (I.e. Without the "any later version"
|
||||
clause.) This is inherited from MySQL. Please see the README file in
|
||||
|
@ -1405,7 +1405,9 @@ static void usage(void)
|
||||
refresh Flush all tables and close and open logfiles\n\
|
||||
shutdown Take server down\n\
|
||||
status Gives a short status message from the server\n\
|
||||
start-all-slaves Start all slaves\n\
|
||||
start-slave Start slave\n\
|
||||
stop-all-slaves Stop all slaves\n\
|
||||
stop-slave Stop slave\n\
|
||||
variables Prints variables available\n\
|
||||
version Get version info from server");
|
||||
|
@ -397,7 +397,7 @@ enum enum_commands {
|
||||
Q_IF,
|
||||
Q_DISABLE_PARSING, Q_ENABLE_PARSING,
|
||||
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
|
||||
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
|
||||
Q_WRITE_FILE, Q_WRITE_LINE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
|
||||
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
|
||||
Q_SEND_QUIT, Q_CHANGE_USER, Q_MKDIR, Q_RMDIR,
|
||||
Q_LIST_FILES, Q_LIST_FILES_WRITE_FILE, Q_LIST_FILES_APPEND_FILE,
|
||||
@ -500,6 +500,7 @@ const char *command_names[]=
|
||||
"remove_file",
|
||||
"file_exists",
|
||||
"write_file",
|
||||
"write_line",
|
||||
"copy_file",
|
||||
"perl",
|
||||
"die",
|
||||
@ -1534,7 +1535,6 @@ void free_used_memory()
|
||||
void ha_pre_shutdown();
|
||||
#endif
|
||||
|
||||
|
||||
ATTRIBUTE_NORETURN static void cleanup_and_exit(int exit_code,
|
||||
bool called_from_die)
|
||||
{
|
||||
@ -4369,6 +4369,49 @@ void do_write_file(struct st_command *command)
|
||||
do_write_file_command(command, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Write a line to the start of the file.
|
||||
Truncates existing file, creates new one if it doesn't exist.
|
||||
|
||||
Usage
|
||||
write_line <line> <filename>;
|
||||
|
||||
Example
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
@note Both the file and the line parameters are evaluated
|
||||
(can be variables).
|
||||
|
||||
@note This is a better alternative to
|
||||
exec echo > file, as it doesn't depend on shell,
|
||||
and can better handle sporadic file access errors caused
|
||||
by antivirus or backup software on Windows.
|
||||
*/
|
||||
void do_write_line(struct st_command *command)
|
||||
{
|
||||
DYNAMIC_STRING ds_line;
|
||||
DYNAMIC_STRING ds_filename;
|
||||
|
||||
struct command_arg write_line_args[] = {
|
||||
{ "line", ARG_STRING, FALSE, &ds_line, "line to add" },
|
||||
{ "filename", ARG_STRING, TRUE, &ds_filename, "File to write to" },
|
||||
};
|
||||
DBUG_ENTER("do_write_line");
|
||||
|
||||
check_command_args(command,
|
||||
command->first_argument,
|
||||
write_line_args,
|
||||
sizeof(write_line_args)/sizeof(struct command_arg),
|
||||
' ');
|
||||
|
||||
if (bad_path(ds_filename.str))
|
||||
DBUG_VOID_RETURN;
|
||||
dynstr_append_mem(&ds_line, "\n", 1);
|
||||
str_to_file2(ds_filename.str, ds_line.str, ds_line.length, FALSE);
|
||||
dynstr_free(&ds_filename);
|
||||
dynstr_free(&ds_line);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
/*
|
||||
SYNOPSIS
|
||||
@ -5286,7 +5329,11 @@ void do_shutdown_server(struct st_command *command)
|
||||
*/
|
||||
|
||||
if (timeout && mysql_shutdown(mysql, SHUTDOWN_DEFAULT))
|
||||
die("mysql_shutdown failed");
|
||||
{
|
||||
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
|
||||
mysql_sqlstate(mysql), &ds_res);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
if (!timeout || wait_until_dead(pid, timeout))
|
||||
{
|
||||
@ -7495,7 +7542,7 @@ void str_to_file2(const char *fname, char *str, size_t size, my_bool append)
|
||||
die("Could not open '%s' for writing, errno: %d", buff, errno);
|
||||
if (append && my_seek(fd, 0, SEEK_END, MYF(0)) == MY_FILEPOS_ERROR)
|
||||
die("Could not find end of file '%s', errno: %d", buff, errno);
|
||||
if (my_write(fd, (uchar*)str, size, MYF(MY_WME|MY_FNABP)))
|
||||
if (size > 0 && my_write(fd, (uchar*)str, size, MYF(MY_WME|MY_FNABP)))
|
||||
die("write failed, errno: %d", errno);
|
||||
my_close(fd, MYF(0));
|
||||
}
|
||||
@ -8290,7 +8337,7 @@ static int match_expected_error(struct st_command *command,
|
||||
|
||||
SYNOPSIS
|
||||
handle_error()
|
||||
q - query context
|
||||
command - command
|
||||
err_errno - error number
|
||||
err_error - error message
|
||||
err_sqlstate - sql state
|
||||
@ -10291,6 +10338,7 @@ int main(int argc, char **argv)
|
||||
break;
|
||||
case Q_FILE_EXIST: do_file_exist(command); break;
|
||||
case Q_WRITE_FILE: do_write_file(command); break;
|
||||
case Q_WRITE_LINE: do_write_line(command); break;
|
||||
case Q_APPEND_FILE: do_append_file(command); break;
|
||||
case Q_DIFF_FILES: do_diff_files(command); break;
|
||||
case Q_SEND_QUIT: do_send_quit(command); break;
|
||||
|
@ -379,5 +379,11 @@ FUNCTION (MAYBE_DISABLE_IPO target)
|
||||
INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF
|
||||
INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO OFF
|
||||
INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL OFF)
|
||||
IF(CMAKE_CONFIGURATION_TYPES)
|
||||
FOREACH(cfg ${CMAKE_CONFIGURATION_TYPES})
|
||||
STRING(TOUPPER "${cfg}" cfg_upper)
|
||||
SET_TARGET_PROPERTIES(${target} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_${cfg_upper} OFF)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
@ -40,6 +40,13 @@ SET(CLIENT_PLUGIN_PVIO_SOCKET STATIC)
|
||||
MESSAGE("== Configuring MariaDB Connector/C")
|
||||
ADD_SUBDIRECTORY(libmariadb)
|
||||
|
||||
IF(MSVC AND TARGET mariadb_obj AND TARGET mariadbclient)
|
||||
# With MSVC, do not produce LTCG-compiled static client libraries.
|
||||
# They are not usable by end-users, being tied to exact compiler version
|
||||
MAYBE_DISABLE_IPO(mariadb_obj)
|
||||
MAYBE_DISABLE_IPO(mariadbclient)
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
INSTALL(CODE "EXECUTE_PROCESS(
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR})
|
||||
|
@ -984,3 +984,8 @@ IF(have_C__Werror)
|
||||
)
|
||||
SET(CMAKE_REQUIRED_FLAGS ${SAVE_CMAKE_REQUIRED_FLAGS})
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_C_COMPILER_ID MATCHES "Intel")
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-no-ansi-alias")
|
||||
MY_CHECK_AND_SET_COMPILER_FLAG("-fp-model precise")
|
||||
ENDIF()
|
||||
|
@ -655,6 +655,7 @@ extern size_t my_fwrite(FILE *stream,const uchar *Buffer,size_t Count,
|
||||
myf MyFlags);
|
||||
extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags);
|
||||
extern my_off_t my_ftell(FILE *stream,myf MyFlags);
|
||||
extern void (*my_sleep_for_space)(unsigned int seconds);
|
||||
|
||||
/* implemented in my_memmem.c */
|
||||
extern void *my_memmem(const void *haystack, size_t haystacklen,
|
||||
|
@ -1,5 +1,5 @@
|
||||
if "%MTR_PARALLEL%"=="" set MTR_PARALLEL=%NUMBER_OF_PROCESSORS%
|
||||
perl mysql-test-run.pl --verbose-restart --force --suite-timeout=120 --max-test-fail=10 --retry=3 --suite=^
|
||||
perl mysql-test-run.pl --force --suite-timeout=120 --max-test-fail=10 --retry=3 --suite=^
|
||||
vcol,gcol,perfschema,^
|
||||
main,^
|
||||
innodb,^
|
||||
|
@ -613,13 +613,17 @@ call p_verify_status_increment(2, 0, 2, 0);
|
||||
drop table t2;
|
||||
set sql_mode=no_engine_substitution;
|
||||
create temporary table t2 (a int);
|
||||
call p_verify_status_increment(1, 0, 0, 0);
|
||||
# One commit for the create temporary table, and two for committing the
|
||||
# read of the stored procedure from Aria table (creating temporary table
|
||||
# clears the sp cache).
|
||||
call p_verify_status_increment(3, 0, 2, 0);
|
||||
set sql_mode=default;
|
||||
--echo # 19. A function changes temp-trans-table.
|
||||
--echo #
|
||||
select f1();
|
||||
--echo # Two commits because a binary log record is written
|
||||
call p_verify_status_increment(2, 0, 1, 0);
|
||||
--echo # Two commits because a binary log record is written, and another two
|
||||
--echo # as the function f1() is reloaded after creating temporary table.
|
||||
call p_verify_status_increment(4, 0, 3, 0);
|
||||
commit;
|
||||
call p_verify_status_increment(2, 0, 1, 0);
|
||||
|
||||
@ -672,9 +676,11 @@ call p_verify_status_increment(2, 0, 1, 0);
|
||||
--echo # 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
|
||||
--echo #
|
||||
drop temporary table t2;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
# Dropping temporary table clears SP caches, so get another two commit
|
||||
# increments from loading the p_verify_status_increment procedure.
|
||||
call p_verify_status_increment(3, 0, 2, 0);
|
||||
commit;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(1, 0, 0, 0);
|
||||
|
||||
--echo # 26. Verify that SET AUTOCOMMIT issues an implicit commit
|
||||
--echo #
|
||||
@ -721,7 +727,9 @@ call p_verify_status_increment(1, 0, 1, 0);
|
||||
create table t2 (a int);
|
||||
call p_verify_status_increment(0, 0, 0, 0);
|
||||
do (select f1() from t1 where a=2);
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
# Again extra 2 commit increments from re-loading function f1 after
|
||||
# dropping temporary table.
|
||||
call p_verify_status_increment(4, 2, 4, 2);
|
||||
commit;
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# Write file to make mysql-test-run.pl expect crash and restart
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Setup the mysqld to crash at shutdown
|
||||
SET debug_dbug="d,crash_shutdown";
|
||||
|
@ -91,7 +91,7 @@ loose-performance-schema-events-statements-history-size=10
|
||||
loose-performance-schema-events-statements-history-long-size=1000
|
||||
loose-performance-schema-events-transactions-history-size=10
|
||||
loose-performance-schema-events-transactions-history-long-size=1000
|
||||
loose-performance-schema-max-thread-instances=200
|
||||
loose-performance-schema-max-thread-instances=400
|
||||
loose-performance-schema-session-connect-attrs-size=2048
|
||||
loose-performance-schema-max-metadata-locks=10000
|
||||
|
||||
|
@ -2,4 +2,4 @@
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
|
||||
# There should be a debug crash after using this .inc file
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
--write_line wait $_expect_file_name
|
||||
|
@ -7,7 +7,7 @@ if (!$restart_parameters)
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
|
||||
--echo # Kill and $restart_parameters
|
||||
--exec echo "$restart_parameters" > $_expect_file_name
|
||||
--write_line "$restart_parameters" $_expect_file_name
|
||||
--shutdown_server 0
|
||||
--source include/wait_until_disconnected.inc
|
||||
--enable_reconnect
|
||||
|
@ -3,7 +3,7 @@
|
||||
# Write file to make mysql-test-run.pl expect the crash, but don't start it
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
--write_line wait $_expect_file_name
|
||||
|
||||
# Kill the connected server
|
||||
--disable_reconnect
|
||||
|
@ -2,6 +2,6 @@
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
|
||||
--echo # Kill the server
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
--write_line wait $_expect_file_name
|
||||
--shutdown_server 0
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
@ -96,10 +96,11 @@
|
||||
# Remove whitespace from $rpl_topology
|
||||
--let $rpl_topology= `SELECT REPLACE('$rpl_topology', ' ', '')`
|
||||
|
||||
--source include/slow_environ.inc
|
||||
|
||||
--let $include_filename= rpl_change_topology.inc [new topology=$rpl_topology]
|
||||
--source include/begin_include_file.inc
|
||||
|
||||
|
||||
if ($rpl_debug)
|
||||
{
|
||||
--echo ---- Check input ----
|
||||
@ -235,11 +236,11 @@ if (!$rpl_skip_change_master)
|
||||
}
|
||||
if ($rpl_master_log_file)
|
||||
{
|
||||
eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_LOG_FILE = '$_rpl_master_log_file'$_rpl_master_log_pos, MASTER_CONNECT_RETRY = 1, MASTER_USE_GTID=NO;
|
||||
eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_LOG_FILE = '$_rpl_master_log_file'$_rpl_master_log_pos, MASTER_CONNECT_RETRY = 1$_timeout_adjustment, MASTER_USE_GTID=NO;
|
||||
}
|
||||
if (!$rpl_master_log_file)
|
||||
{
|
||||
eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_CONNECT_RETRY=1;
|
||||
eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_CONNECT_RETRY=1$_timeout_adjustment;
|
||||
}
|
||||
}
|
||||
if ($_rpl_master == '')
|
||||
|
@ -49,7 +49,7 @@ if ($rpl_server_parameters)
|
||||
--source include/rpl_connection.inc
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "$_rpl_start_server_command" > $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
--write_line "$_rpl_start_server_command" $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
|
||||
if (!$rpl_server_error)
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ if ($rpl_debug)
|
||||
|
||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
||||
# it until it's told to
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
|
||||
# Send shutdown to the connected server and give
|
||||
# it 60 seconds (of mysqltest's default) to die before zapping it
|
||||
|
@ -36,7 +36,7 @@
|
||||
# let SEARCH_FILE= $error_log;
|
||||
# # Stop the server
|
||||
# let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
||||
# --exec echo "wait" > $restart_file
|
||||
# --write_line wait $restart_file
|
||||
# --shutdown_server
|
||||
# --source include/wait_until_disconnected.inc
|
||||
#
|
||||
|
@ -24,18 +24,15 @@ if ($rpl_inited)
|
||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start it
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
--write_line wait $_expect_file_name
|
||||
|
||||
# Avoid warnings from connection threads that does not have time to exit
|
||||
--disable_query_log
|
||||
set @@global.log_warnings=0;
|
||||
--enable_query_log
|
||||
|
||||
--let $server_shutdown_timeout= 60
|
||||
if ($VALGRIND_TEST)
|
||||
{
|
||||
--let $server_shutdown_timeout= 300
|
||||
}
|
||||
--source include/slow_environ.inc
|
||||
--let $server_shutdown_timeout= 60$_timeout_adjustment
|
||||
|
||||
if ($shutdown_timeout)
|
||||
{
|
||||
|
9
mysql-test/include/slow_environ.inc
Normal file
9
mysql-test/include/slow_environ.inc
Normal file
@ -0,0 +1,9 @@
|
||||
if (!$slow_environ_check)
|
||||
{
|
||||
let $_timeout_adjustment=;
|
||||
if (`select $VALGRIND_TEST + count(*) from information_schema.system_variables where variable_name='have_sanitizer' and global_value like '%SAN%'`)
|
||||
{
|
||||
let $_timeout_adjustment=0;
|
||||
}
|
||||
let $slow_environ_check=1;
|
||||
}
|
@ -21,7 +21,7 @@ if ($restart_bindir)
|
||||
|
||||
if ($restart_parameters)
|
||||
{
|
||||
--exec echo "$restart_cmd: $restart_parameters" > $_expect_file_name
|
||||
--write_line "$restart_cmd: $restart_parameters" $_expect_file_name
|
||||
if (!$restart_noprint)
|
||||
{
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
||||
@ -34,7 +34,7 @@ if ($restart_parameters)
|
||||
}
|
||||
if (!$restart_parameters)
|
||||
{
|
||||
--exec echo "$restart_cmd" > $_expect_file_name
|
||||
--write_line "$restart_cmd" $_expect_file_name
|
||||
if ($restart_noprint < 2)
|
||||
{
|
||||
--exec echo "# $restart_cmd"
|
||||
|
@ -34,8 +34,17 @@ if (!$rpl_debug)
|
||||
--disable_query_log
|
||||
}
|
||||
|
||||
|
||||
let $_enable_warnings=0;
|
||||
if ($rpl_allow_error) {
|
||||
if ($ENABLED_WARNINGS) {
|
||||
let $_enable_warnings=1;
|
||||
disable_warnings;
|
||||
}
|
||||
}
|
||||
STOP SLAVE IO_THREAD;
|
||||
if ($_enable_warnings) {
|
||||
enable_warnings;
|
||||
}
|
||||
--source include/wait_for_slave_io_to_stop.inc
|
||||
|
||||
|
||||
|
@ -25,11 +25,8 @@
|
||||
let $_slave_timeout= $slave_timeout;
|
||||
if (!$_slave_timeout)
|
||||
{
|
||||
let $_slave_timeout= 300;
|
||||
if ($VALGRIND_TEST)
|
||||
{
|
||||
let $_slave_timeout= 1500;
|
||||
}
|
||||
source include/slow_environ.inc;
|
||||
let $_slave_timeout= 300$_timeout_adjustment;
|
||||
}
|
||||
|
||||
--let $_master_log_file= query_get_value(SHOW SLAVE STATUS, Master_Log_File, 1)
|
||||
|
@ -33,11 +33,8 @@
|
||||
let $_slave_timeout= $slave_timeout;
|
||||
if (!$_slave_timeout)
|
||||
{
|
||||
let $_slave_timeout= 120;
|
||||
if ($VALGRIND_TEST)
|
||||
{
|
||||
let $_slave_timeout= 1200;
|
||||
}
|
||||
source include/slow_environ.inc;
|
||||
let $_slave_timeout= 120$_timeout_adjustment;
|
||||
}
|
||||
|
||||
--let $_result= `SELECT master_gtid_wait('$master_pos', $_slave_timeout)`
|
||||
|
@ -49,11 +49,8 @@
|
||||
let $_slave_timeout= $slave_timeout;
|
||||
if (!$_slave_timeout)
|
||||
{
|
||||
let $_slave_timeout= 300;
|
||||
if ($VALGRIND_TEST)
|
||||
{
|
||||
let $_slave_timeout= 1500;
|
||||
}
|
||||
source include/slow_environ.inc;
|
||||
let $_slave_timeout= 300$_timeout_adjustment;
|
||||
}
|
||||
|
||||
let $_slave_param_comparison= $slave_param_comparison;
|
||||
|
@ -263,6 +263,7 @@ sub pre_setup() {
|
||||
$::opt_suite_timeout= 24 * 60; # in minutes
|
||||
$::opt_shutdown_timeout= ($interactive ? 24 * 60 : 3) * 60; # in seconds
|
||||
$::opt_start_timeout= $::opt_shutdown_timeout; # in seconds
|
||||
$::opt_debug_sync_timeout= 3000; # in seconds
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -634,7 +634,7 @@ SUCCESS
|
||||
drop table t2;
|
||||
set sql_mode=no_engine_substitution;
|
||||
create temporary table t2 (a int);
|
||||
call p_verify_status_increment(1, 0, 0, 0);
|
||||
call p_verify_status_increment(3, 0, 2, 0);
|
||||
SUCCESS
|
||||
|
||||
set sql_mode=default;
|
||||
@ -643,8 +643,9 @@ set sql_mode=default;
|
||||
select f1();
|
||||
f1()
|
||||
2
|
||||
# Two commits because a binary log record is written
|
||||
call p_verify_status_increment(2, 0, 1, 0);
|
||||
# Two commits because a binary log record is written, and another two
|
||||
# as the function f1() is reloaded after creating temporary table.
|
||||
call p_verify_status_increment(4, 0, 3, 0);
|
||||
SUCCESS
|
||||
|
||||
commit;
|
||||
@ -715,11 +716,11 @@ SUCCESS
|
||||
# 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
|
||||
#
|
||||
drop temporary table t2;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(3, 0, 2, 0);
|
||||
SUCCESS
|
||||
|
||||
commit;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(1, 0, 0, 0);
|
||||
SUCCESS
|
||||
|
||||
# 26. Verify that SET AUTOCOMMIT issues an implicit commit
|
||||
@ -801,7 +802,7 @@ call p_verify_status_increment(0, 0, 0, 0);
|
||||
SUCCESS
|
||||
|
||||
do (select f1() from t1 where a=2);
|
||||
call p_verify_status_increment(2, 2, 2, 2);
|
||||
call p_verify_status_increment(4, 2, 4, 2);
|
||||
SUCCESS
|
||||
|
||||
commit;
|
||||
|
@ -235,3 +235,16 @@ t1 CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
drop procedure sp;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-33768: Memory leak found in the test main.constraints run with --ps-protocol against a server built with the option -DWITH_PROTECT_STATEMENT_MEMROOT
|
||||
# This test case was added by reviewer's request.
|
||||
#
|
||||
PREPARE stmt FROM 'CREATE TABLE t1 (a INT)';
|
||||
EXECUTE stmt;
|
||||
DROP TABLE t1;
|
||||
EXECUTE stmt;
|
||||
EXECUTE stmt;
|
||||
ERROR 42S01: Table 't1' already exists
|
||||
# Clean up
|
||||
DROP TABLE t1;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
@ -189,3 +189,18 @@ call sp;
|
||||
show create table t1;
|
||||
drop procedure sp;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33768: Memory leak found in the test main.constraints run with --ps-protocol against a server built with the option -DWITH_PROTECT_STATEMENT_MEMROOT
|
||||
--echo # This test case was added by reviewer's request.
|
||||
--echo #
|
||||
PREPARE stmt FROM 'CREATE TABLE t1 (a INT)';
|
||||
EXECUTE stmt;
|
||||
DROP TABLE t1;
|
||||
EXECUTE stmt;
|
||||
--error ER_TABLE_EXISTS_ERROR
|
||||
EXECUTE stmt;
|
||||
|
||||
--echo # Clean up
|
||||
DROP TABLE t1;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
@ -17,7 +17,7 @@ insert into t1 values(9);
|
||||
SET GLOBAL debug_dbug="d,crash_commit_before";
|
||||
|
||||
# Write file to make mysql-test-run.pl expect crash and restart
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
# Run the crashing query
|
||||
--error 2013
|
||||
|
@ -1803,7 +1803,7 @@ show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`color` char(32) GENERATED ALWAYS AS (column_get(`dynamic_cols`,1 as char charset latin1)) STORED,
|
||||
`cl` char(32) GENERATED ALWAYS AS (column_get(column_add(column_create(1,'blue' AS char charset latin1 ),2,'ttt'),`i` as char charset latin1)) STORED,
|
||||
`cl` char(32) GENERATED ALWAYS AS (column_get(column_add(column_create(1,'blue' AS char charset latin1 collate latin1_swedish_ci ),2,'ttt'),`i` as char charset latin1)) STORED,
|
||||
`item_name` varchar(32) NOT NULL,
|
||||
`i` int(11) DEFAULT NULL,
|
||||
`dynamic_cols` blob DEFAULT NULL,
|
||||
|
@ -150,7 +150,7 @@ select hex(COLUMN_CREATE(1, "afaf" AS char character set utf8,
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select hex(column_create(1,'afaf' AS char charset utf8mb3 ,2,1212 AS unsigned int,3,1212 AS int,4,12.12 AS double,4 + 1,12.12 AS decimal,6,'2011-04-05' AS date,7,'- 0:45:49.000001' AS time,8,'2011-04-05 0:45:49.000001' AS datetime)) AS `ex`
|
||||
Note 1003 select hex(column_create(1,'afaf' AS char charset utf8mb3 collate utf8mb3_general_ci ,2,1212 AS unsigned int,3,1212 AS int,4,12.12 AS double,4 + 1,12.12 AS decimal,6,'2011-04-05' AS date,7,'- 0:45:49.000001' AS time,8,'2011-04-05 0:45:49.000001' AS datetime)) AS `ex`
|
||||
select hex(column_create(1, 0.0 AS decimal));
|
||||
hex(column_create(1, 0.0 AS decimal))
|
||||
000100010004
|
||||
@ -354,7 +354,7 @@ select column_get(column_create(1, "1212" AS char charset utf8), 1 as char chars
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select column_get(column_create(1,'1212' AS char charset utf8mb3 ),1 as char charset utf8mb3) AS `ex`
|
||||
Note 1003 select column_get(column_create(1,'1212' AS char charset utf8mb3 collate utf8mb3_general_ci ),1 as char charset utf8mb3) AS `ex`
|
||||
select column_get(column_create(1, 1212 AS unsigned int), 1 as char charset utf8) as ex;
|
||||
ex
|
||||
1212
|
||||
@ -414,7 +414,7 @@ select column_get(column_create(1, "1212" AS char charset utf8), 1 as char chars
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select column_get(column_create(1,'1212' AS char charset utf8mb3 ),1 as char charset binary) AS `ex`
|
||||
Note 1003 select column_get(column_create(1,'1212' AS char charset utf8mb3 collate utf8mb3_general_ci ),1 as char charset binary) AS `ex`
|
||||
#
|
||||
# column get real
|
||||
#
|
||||
@ -1882,7 +1882,7 @@ drop table t1;
|
||||
create view v1 as select column_get(column_add(column_create(1 , 'blue' as char), 2, 'ttt'), 1 as char);
|
||||
show create view v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select column_get(column_add(column_create(1,'blue' AS char charset utf8mb3 ),2,'ttt'),1 as char charset utf8mb3) AS `Name_exp_1` utf8mb3 utf8mb3_general_ci
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select column_get(column_add(column_create(1,'blue' AS char charset utf8mb3 collate utf8mb3_general_ci ),2,'ttt'),1 as char charset utf8mb3) AS `Name_exp_1` utf8mb3 utf8mb3_general_ci
|
||||
select * from v1;
|
||||
Name_exp_1
|
||||
blue
|
||||
@ -1949,3 +1949,23 @@ ex
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.5 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.5 tests
|
||||
#
|
||||
#
|
||||
# MDEV-33788 HEX(COLUMN_CREATE(.. AS CHAR ...)) fails with --view-protocol
|
||||
#
|
||||
SELECT hex(column_create(1,'a' AS CHAR CHARACTER SET utf8mb3 COLLATE utf8mb3_bin)) AS ex;
|
||||
ex
|
||||
0001000100035361
|
||||
SELECT hex(column_add(column_create(
|
||||
1, 'a' AS CHAR CHARACTER SET utf8mb3 COLLATE utf8mb3_bin),
|
||||
2, 'b' AS CHAR CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci)) AS ex;
|
||||
ex
|
||||
00020001000302001353612162
|
||||
#
|
||||
# Start of 10.5 tests
|
||||
#
|
||||
|
@ -1000,3 +1000,24 @@ SELECT HEX(COLUMN_ADD(COLUMN_CREATE(1,10),2,NULL,1,NULL)) as ex;
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.5 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.5 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33788 HEX(COLUMN_CREATE(.. AS CHAR ...)) fails with --view-protocol
|
||||
--echo #
|
||||
|
||||
SELECT hex(column_create(1,'a' AS CHAR CHARACTER SET utf8mb3 COLLATE utf8mb3_bin)) AS ex;
|
||||
SELECT hex(column_add(column_create(
|
||||
1, 'a' AS CHAR CHARACTER SET utf8mb3 COLLATE utf8mb3_bin),
|
||||
2, 'b' AS CHAR CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci)) AS ex;
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.5 tests
|
||||
--echo #
|
||||
|
@ -3,10 +3,10 @@
|
||||
#
|
||||
--source include/not_embedded.inc
|
||||
create server '' foreign data wrapper w2 options (host '127.0.0.1');
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
-- enable_reconnect
|
||||
-- source include/wait_until_connected_again.inc
|
||||
|
@ -208,12 +208,13 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `a` (`a`,`b`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
drop table t1;
|
||||
set sql_mode= default;
|
||||
#
|
||||
# MDEV-33460 select '123' 'x'; unexpected result
|
||||
#
|
||||
SELECT '';
|
||||
NULL
|
||||
NULL
|
||||
|
||||
|
||||
SELECT '' 'b' 'c';
|
||||
bc
|
||||
bc
|
||||
|
@ -25,12 +25,15 @@ flush tables;
|
||||
update t1 set a = 2;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
set sql_mode= default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33460 select '123' 'x'; unexpected result
|
||||
--echo #
|
||||
|
||||
--disable_view_protocol
|
||||
SELECT '';
|
||||
--enable_view_protocol
|
||||
SELECT '' 'b' 'c';
|
||||
SELECT '' '' 'c';
|
||||
SELECT 'a' '' 'c';
|
||||
|
@ -971,6 +971,84 @@ c1
|
||||
9223372036854775808
|
||||
drop table `a`;
|
||||
#
|
||||
# MDEV-18319 BIGINT UNSIGNED Performance issue
|
||||
#
|
||||
CREATE OR REPLACE TABLE t1 (
|
||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
);
|
||||
FOR i IN 0..255
|
||||
DO
|
||||
INSERT INTO t1 VALUES ();
|
||||
END FOR
|
||||
$$
|
||||
SELECT MIN(id), MAX(id), COUNT(*) FROM t1;
|
||||
MIN(id) MAX(id) COUNT(*)
|
||||
1 256 256
|
||||
EXPLAIN SELECT id FROM t1 WHERE id IN (1,2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL 2 Using where; Using index
|
||||
EXPLAIN SELECT id FROM t1 WHERE id IN (9223372036854775806, 9223372036854775807);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL 2 Using where; Using index
|
||||
EXPLAIN SELECT id FROM t1 WHERE id IN (9223372036854775807, 9223372036854775808);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 8 NULL 2 Using where; Using index
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-18898 SELECT using wrong index when using operator IN with mixed types
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
name varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `name` (`name`)
|
||||
);
|
||||
FOR i IN 1..255
|
||||
DO
|
||||
INSERT INTO t1 VALUES (i, MD5(i));
|
||||
END FOR
|
||||
$$
|
||||
#
|
||||
# Constants alone
|
||||
#
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = 1;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 NULL 100.00 NULL
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = '2';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 NULL 100.00 NULL
|
||||
#
|
||||
# Two constants using IN
|
||||
#
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN (1, 2);
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN ('1', 2) /* Used a wrong index */;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN (1, '2') /* Used a wrong index */;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN ('1', '2');
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
#
|
||||
# Two constants using OR
|
||||
#
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = 1 OR id = 2;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = '1' OR id = '2';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = 1 OR id = '2';
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = '1' OR id = 2;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 2.00 100.00 100.00 Using index condition
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
#
|
||||
|
@ -742,6 +742,66 @@ SELECT c1 FROM a WHERE c1 IN ( 1, 9223372036854775807 );
|
||||
SELECT c1 FROM a WHERE c1 IN ( 1, 9223372036854775808 );
|
||||
drop table `a`;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-18319 BIGINT UNSIGNED Performance issue
|
||||
--echo #
|
||||
|
||||
CREATE OR REPLACE TABLE t1 (
|
||||
id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
);
|
||||
DELIMITER $$;
|
||||
FOR i IN 0..255
|
||||
DO
|
||||
INSERT INTO t1 VALUES ();
|
||||
END FOR
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
SELECT MIN(id), MAX(id), COUNT(*) FROM t1;
|
||||
EXPLAIN SELECT id FROM t1 WHERE id IN (1,2);
|
||||
EXPLAIN SELECT id FROM t1 WHERE id IN (9223372036854775806, 9223372036854775807);
|
||||
EXPLAIN SELECT id FROM t1 WHERE id IN (9223372036854775807, 9223372036854775808);
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-18898 SELECT using wrong index when using operator IN with mixed types
|
||||
--echo #
|
||||
|
||||
CREATE TEMPORARY TABLE t1 (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
name varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `name` (`name`)
|
||||
);
|
||||
DELIMITER $$;
|
||||
FOR i IN 1..255
|
||||
DO
|
||||
INSERT INTO t1 VALUES (i, MD5(i));
|
||||
END FOR
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
--echo #
|
||||
--echo # Constants alone
|
||||
--echo #
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = 1;
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = '2';
|
||||
--echo #
|
||||
--echo # Two constants using IN
|
||||
--echo #
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN (1, 2);
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN ('1', 2) /* Used a wrong index */;
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN (1, '2') /* Used a wrong index */;
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id IN ('1', '2');
|
||||
--echo #
|
||||
--echo # Two constants using OR
|
||||
--echo #
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = 1 OR id = 2;
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = '1' OR id = '2';
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = 1 OR id = '2';
|
||||
ANALYZE SELECT id, name FROM t1 WHERE id = '1' OR id = 2;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
@ -1690,6 +1690,13 @@ select json_arrayagg('ä'), json_objectagg(1, 'ä');
|
||||
json_arrayagg('ä') json_objectagg(1, 'ä')
|
||||
["ä"] {"1":"ä"}
|
||||
#
|
||||
# MDEV-31402: SIGSEGV in json_get_path_next | Item_func_json_extract::read_json
|
||||
#
|
||||
CREATE TABLE t (id CHAR AS (JSON_COMPACT (JSON_EXTRACT(doc,"$._id"))) UNIQUE KEY,doc JSON,CONSTRAINT notnu CHECK (id IS NOT NULL));
|
||||
INSERT INTO t (doc) VALUES ('{ "_id" : { "$oid" : "0ca0b0f0" },"a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" :0} ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] }');
|
||||
ERROR 22001: Data too long for column 'id' at row 1
|
||||
DROP TABLE t;
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
#
|
||||
|
@ -1118,6 +1118,16 @@ set names latin1;
|
||||
select json_arrayagg('ä'), json_objectagg(1, 'ä');
|
||||
--enable_service_connection
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-31402: SIGSEGV in json_get_path_next | Item_func_json_extract::read_json
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t (id CHAR AS (JSON_COMPACT (JSON_EXTRACT(doc,"$._id"))) UNIQUE KEY,doc JSON,CONSTRAINT notnu CHECK (id IS NOT NULL));
|
||||
--error ER_DATA_TOO_LONG
|
||||
INSERT INTO t (doc) VALUES ('{ "_id" : { "$oid" : "0ca0b0f0" },"a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" : [ { "a" :0} ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] } ] }');
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
@ -6373,3 +6373,57 @@ NULL
|
||||
SELECT FROM_UNIXTIME(LEAST(3696610869, NULL));
|
||||
FROM_UNIXTIME(LEAST(3696610869, NULL))
|
||||
NULL
|
||||
#
|
||||
# Start of 10.5 tests
|
||||
#
|
||||
#
|
||||
# MDEV-29149 Assertion `!is_valid_datetime() || fraction_remainder(((item->decimals) < (6) ? (item->decimals) : (6))) == 0' failed in Datetime_truncation_not_needed::Datetime_truncation_not_needed
|
||||
#
|
||||
SET @@timestamp= UNIX_TIMESTAMP('2022-07-21 23:00:00');
|
||||
SELECT DATE_SUB('2022-07-21 00:00:00', INTERVAL 800 HOUR) AS expected_result;
|
||||
expected_result
|
||||
2022-06-17 16:00:00
|
||||
SELECT
|
||||
IF(1,TIMEDIFF('38:59:59','839:00:00'),CAST('2022-12-12' AS DATE)) AS c1,
|
||||
IF(1,TIMEDIFF('-839:00:00','-38:59:59'),CAST('2022-12-12' AS DATE)) AS c2;
|
||||
c1 c2
|
||||
2022-06-17 16:00:00 2022-06-17 16:00:00
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '839:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '-839:00:00'
|
||||
SELECT
|
||||
IF(1,TIMEDIFF(385959,8390000),CAST('2022-12-12' AS DATE)) AS c1,
|
||||
IF(1,TIMEDIFF(-8390000,-385959),CAST('2022-12-12' AS DATE)) AS c2;
|
||||
c1 c2
|
||||
2022-06-17 16:00:00 2022-06-17 16:00:00
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '8390000'
|
||||
Warning 1292 Truncated incorrect time value: '-8390000'
|
||||
SELECT
|
||||
TIMEDIFF('38:59:59','839:00:00') AS c1,
|
||||
CAST(TIMEDIFF('38:59:59','839:00:00') AS TIME(6)) AS c2,
|
||||
TIMEDIFF('839:00:00','38:59:59') AS c3,
|
||||
CAST(TIMEDIFF('839:00:00','38:59:59') AS TIME(6)) AS c4;
|
||||
c1 c2 c3 c4
|
||||
-800:00:00 -800:00:00.000000 800:00:00 800:00:00.000000
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '839:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '839:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '839:00:00'
|
||||
Warning 1292 Truncated incorrect time value: '839:00:00'
|
||||
SELECT
|
||||
TIMEDIFF(385959,8390000) AS c1,
|
||||
CAST(TIMEDIFF(385959,8390000) AS TIME(6)) AS c2,
|
||||
TIMEDIFF(8390000,385959) AS c3,
|
||||
CAST(TIMEDIFF(8390000,385959) AS TIME(6)) AS c4;
|
||||
c1 c2 c3 c4
|
||||
-800:00:00 -800:00:00.000000 800:00:00 800:00:00.000000
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect time value: '8390000'
|
||||
Warning 1292 Truncated incorrect time value: '8390000'
|
||||
Warning 1292 Truncated incorrect time value: '8390000'
|
||||
Warning 1292 Truncated incorrect time value: '8390000'
|
||||
SET @@timestamp= DEFAULT;
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
|
@ -3218,3 +3218,42 @@ SELECT CONCAT(MAKETIME('01', '01', LEAST( -100, NULL )));
|
||||
--echo #
|
||||
|
||||
SELECT FROM_UNIXTIME(LEAST(3696610869, NULL));
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.5 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29149 Assertion `!is_valid_datetime() || fraction_remainder(((item->decimals) < (6) ? (item->decimals) : (6))) == 0' failed in Datetime_truncation_not_needed::Datetime_truncation_not_needed
|
||||
--echo #
|
||||
|
||||
SET @@timestamp= UNIX_TIMESTAMP('2022-07-21 23:00:00');
|
||||
|
||||
SELECT DATE_SUB('2022-07-21 00:00:00', INTERVAL 800 HOUR) AS expected_result;
|
||||
|
||||
SELECT
|
||||
IF(1,TIMEDIFF('38:59:59','839:00:00'),CAST('2022-12-12' AS DATE)) AS c1,
|
||||
IF(1,TIMEDIFF('-839:00:00','-38:59:59'),CAST('2022-12-12' AS DATE)) AS c2;
|
||||
|
||||
SELECT
|
||||
IF(1,TIMEDIFF(385959,8390000),CAST('2022-12-12' AS DATE)) AS c1,
|
||||
IF(1,TIMEDIFF(-8390000,-385959),CAST('2022-12-12' AS DATE)) AS c2;
|
||||
|
||||
SELECT
|
||||
TIMEDIFF('38:59:59','839:00:00') AS c1,
|
||||
CAST(TIMEDIFF('38:59:59','839:00:00') AS TIME(6)) AS c2,
|
||||
TIMEDIFF('839:00:00','38:59:59') AS c3,
|
||||
CAST(TIMEDIFF('839:00:00','38:59:59') AS TIME(6)) AS c4;
|
||||
|
||||
SELECT
|
||||
TIMEDIFF(385959,8390000) AS c1,
|
||||
CAST(TIMEDIFF(385959,8390000) AS TIME(6)) AS c2,
|
||||
TIMEDIFF(8390000,385959) AS c3,
|
||||
CAST(TIMEDIFF(8390000,385959) AS TIME(6)) AS c4;
|
||||
|
||||
SET @@timestamp= DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
@ -5072,37 +5072,37 @@ ERROR 42000: Incorrect parameter count in the call to native function 'WITHIN(PO
|
||||
# MDEV-20009 Add CAST(expr AS pluggable_type)
|
||||
#
|
||||
SELECT CAST(1 AS GEOMETRY);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometry)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometry)'
|
||||
SELECT CAST(1 AS GEOMETRYCOLLECTION);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometrycollection)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometrycollection)'
|
||||
SELECT CAST(1 AS POINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS point)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS point)'
|
||||
SELECT CAST(1 AS LINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS linestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS linestring)'
|
||||
SELECT CAST(1 AS POLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS polygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS polygon)'
|
||||
SELECT CAST(1 AS MULTIPOINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipoint)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipoint)'
|
||||
SELECT CAST(1 AS MULTILINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multilinestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multilinestring)'
|
||||
SELECT CAST(1 AS MULTIPOLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipolygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipolygon)'
|
||||
SELECT CONVERT(1, GEOMETRY);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometry)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometry)'
|
||||
SELECT CONVERT(1, GEOMETRYCOLLECTION);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometrycollection)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometrycollection)'
|
||||
SELECT CONVERT(1, POINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS point)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS point)'
|
||||
SELECT CONVERT(1, LINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS linestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS linestring)'
|
||||
SELECT CONVERT(1, POLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS polygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS polygon)'
|
||||
SELECT CONVERT(1, MULTIPOINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipoint)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipoint)'
|
||||
SELECT CONVERT(1, MULTILINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multilinestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multilinestring)'
|
||||
SELECT CONVERT(1, MULTIPOLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipolygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipolygon)'
|
||||
#
|
||||
# MDEV-17832 Protocol: extensions for Pluggable types and JSON, GEOMETRY
|
||||
#
|
||||
|
@ -43,10 +43,10 @@ select @@global.Host_Cache_Size > 0;
|
||||
--echo # Restart server with Host_Cache_Size 1
|
||||
|
||||
let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
||||
--exec echo "wait" > $restart_file
|
||||
--write_line wait $restart_file
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
-- exec echo "restart:--host_cache_size=1 " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line "restart:--host_cache_size=1 " $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
-- enable_reconnect
|
||||
-- source include/wait_until_connected_again.inc
|
||||
|
||||
@ -142,10 +142,10 @@ SELECT Host_Cache_Size = @@SESSION.Host_Cache_Size;
|
||||
#--remove_file $MYSQL_TMP_DIR/bind_ip
|
||||
|
||||
#let $restart_file= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect;
|
||||
#--exec echo "wait" > $restart_file
|
||||
#--write_line wait $restart_file
|
||||
#--shutdown_server
|
||||
#--source include/wait_until_disconnected.inc
|
||||
#-- exec echo "restart:--bind-address=$bind_ip " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
#-- write_line "restart:--bind-address=$bind_ip " $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
#-- enable_reconnect
|
||||
#-- source include/wait_until_connected_again.inc
|
||||
|
||||
|
@ -15,12 +15,12 @@ EOF
|
||||
|
||||
--enable_reconnect
|
||||
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--exec echo "restart:--init-file=$MYSQLTEST_VARDIR/init.file " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line "restart:--init-file=$MYSQLTEST_VARDIR/init.file " $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--source include/wait_until_connected_again.inc
|
||||
select user,host,password,plugin,authentication_string from mysql.user where user='foo';
|
||||
|
@ -6401,5 +6401,27 @@ b b d c c
|
||||
10 NULL NULL NULL NULL
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-21102: Server crashes in JOIN_CACHE::write_record_data upon EXPLAIN with subqueries and constant tables
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c int, d int) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,10);
|
||||
CREATE TABLE t3 (e int, key (e)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (2),(3);
|
||||
# Must not crash, must use join buffer in subquery
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a > b OR a IN (
|
||||
SELECT c FROM t2 WHERE EXISTS (
|
||||
SELECT * FROM t3 t3a JOIN t3 t3b WHERE t3a.e < d
|
||||
)
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1
|
||||
3 SUBQUERY t3a range e e 5 NULL 2 Using where; Using index
|
||||
3 SUBQUERY t3b index NULL e 5 NULL 2 Using index; Using join buffer (flat, BNL join)
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
@ -4304,6 +4304,27 @@ eval $q2;
|
||||
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-21102: Server crashes in JOIN_CACHE::write_record_data upon EXPLAIN with subqueries and constant tables
|
||||
--echo #
|
||||
CREATE TABLE t1 (a int, b int) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE t2 (c int, d int) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,10);
|
||||
|
||||
CREATE TABLE t3 (e int, key (e)) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (2),(3);
|
||||
|
||||
--echo # Must not crash, must use join buffer in subquery
|
||||
EXPLAIN
|
||||
SELECT * FROM t1
|
||||
WHERE a > b OR a IN (
|
||||
SELECT c FROM t2 WHERE EXISTS (
|
||||
SELECT * FROM t3 t3a JOIN t3 t3b WHERE t3a.e < d
|
||||
)
|
||||
);
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
@ -1,8 +1,4 @@
|
||||
SET DEBUG_SYNC='dispatch_command_end SIGNAL ready WAIT_FOR go';
|
||||
select 1;
|
||||
connect con1,localhost,root,,;
|
||||
SET DEBUG_SYNC='now wait_for ready';
|
||||
SET DEBUG_SYNC='now signal go';
|
||||
SHOW PROCESSLIST;
|
||||
Id User Host db Command Time State Info Progress
|
||||
# root # test Sleep # # NULL 0.000
|
||||
@ -10,8 +6,6 @@ Id User Host db Command Time State Info Progress
|
||||
SET DEBUG_SYNC='before_execute_sql_command SIGNAL ready WAIT_FOR go';
|
||||
SHOW PROCESSLIST;
|
||||
connection default;
|
||||
1
|
||||
1
|
||||
SET DEBUG_SYNC='now WAIT_FOR ready';
|
||||
KILL QUERY con_id;
|
||||
SET DEBUG_SYNC='now SIGNAL go';
|
||||
|
@ -4,23 +4,24 @@
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
# This is to ensure that the following SHOW PROCESSLIST does not show the query
|
||||
SET DEBUG_SYNC='dispatch_command_end SIGNAL ready WAIT_FOR go';
|
||||
--send select 1
|
||||
--disable_ps_protocol
|
||||
# Ensure no lingering connections from an earlier test run, which can very
|
||||
# rarely still be visible in SHOW PROCESSLIST here.
|
||||
--let $wait_condition= SELECT COUNT(*) = 1 from information_schema.processlist
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--connect (con1,localhost,root,,)
|
||||
SET DEBUG_SYNC='now wait_for ready';
|
||||
SET DEBUG_SYNC='now signal go';
|
||||
|
||||
--let $con_id = `SELECT CONNECTION_ID()`
|
||||
|
||||
let $wait_condition=select command = 'sleep' from information_schema.processlist where id != $con_id;
|
||||
source include/wait_condition.inc;
|
||||
|
||||
--replace_result Execute Query
|
||||
--replace_column 1 # 3 # 6 # 7 #
|
||||
SHOW PROCESSLIST;
|
||||
SET DEBUG_SYNC='before_execute_sql_command SIGNAL ready WAIT_FOR go';
|
||||
send SHOW PROCESSLIST;
|
||||
--connection default
|
||||
--reap
|
||||
|
||||
# We must wait for the SHOW PROCESSLIST query to have started before sending
|
||||
# the kill. Otherwise, the KILL may be lost since it is reset at the start of
|
||||
# query execution.
|
||||
@ -34,9 +35,7 @@ reap;
|
||||
SET DEBUG_SYNC='reset';
|
||||
|
||||
# Wait until default connection has reset query string
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 from information_schema.processlist
|
||||
WHERE info is NULL;
|
||||
let $wait_condition=select command = 'sleep' from information_schema.processlist where id != $con_id;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--replace_result Execute Query
|
||||
|
@ -0,0 +1,18 @@
|
||||
set global alter_algorithm=INPLACE;
|
||||
RENAME TABLE mysql.time_zone TO mysql.time_zone_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_name TO mysql.time_zone_name_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_transition TO mysql.time_zone_transition_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_transition_type TO mysql.time_zone_transition_type_BACKUP;
|
||||
CREATE TABLE mysql.time_zone LIKE mysql.time_zone_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_name LIKE mysql.time_zone_name_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_transition LIKE mysql.time_zone_transition_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_transition_type LIKE mysql.time_zone_transition_type_BACKUP;
|
||||
DROP TABLE mysql.time_zone;
|
||||
DROP TABLE mysql.time_zone_name;
|
||||
DROP TABLE mysql.time_zone_transition;
|
||||
DROP TABLE mysql.time_zone_transition_type;
|
||||
RENAME TABLE mysql.time_zone_BACKUP TO mysql.time_zone;
|
||||
RENAME TABLE mysql.time_zone_name_BACKUP TO mysql.time_zone_name;
|
||||
RENAME TABLE mysql.time_zone_transition_BACKUP TO mysql.time_zone_transition;
|
||||
RENAME TABLE mysql.time_zone_transition_type_BACKUP TO mysql.time_zone_transition_type;
|
||||
set global alter_algorithm=DEFAULT;
|
@ -0,0 +1,40 @@
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# MDEV-33044 Loading time zones does not work with alter_algorithm INPLACE
|
||||
|
||||
set global alter_algorithm=INPLACE;
|
||||
|
||||
# Because loading timezones alters the mysql tables,
|
||||
# this test will leave mysql in a different state than when it started.
|
||||
# Furthermore, checksums on the various mysql.timezone_x tables will fail.
|
||||
|
||||
# Therefore we:
|
||||
# 1. Make "backups" of the existing tables by renaming them
|
||||
# 2. Make dummy clones of the tables we just backed up
|
||||
# 3. Load timezones with alterations made to the dummy clone tables
|
||||
# 4. Drop the newly made tables with changes made to them
|
||||
# 5. Restore the backed up tables so the checksums will pass
|
||||
|
||||
RENAME TABLE mysql.time_zone TO mysql.time_zone_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_name TO mysql.time_zone_name_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_transition TO mysql.time_zone_transition_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_transition_type TO mysql.time_zone_transition_type_BACKUP;
|
||||
|
||||
CREATE TABLE mysql.time_zone LIKE mysql.time_zone_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_name LIKE mysql.time_zone_name_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_transition LIKE mysql.time_zone_transition_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_transition_type LIKE mysql.time_zone_transition_type_BACKUP;
|
||||
|
||||
--exec $MYSQL_TZINFO_TO_SQL std_data/zoneinfo | $MYSQL mysql
|
||||
|
||||
DROP TABLE mysql.time_zone;
|
||||
DROP TABLE mysql.time_zone_name;
|
||||
DROP TABLE mysql.time_zone_transition;
|
||||
DROP TABLE mysql.time_zone_transition_type;
|
||||
|
||||
RENAME TABLE mysql.time_zone_BACKUP TO mysql.time_zone;
|
||||
RENAME TABLE mysql.time_zone_name_BACKUP TO mysql.time_zone_name;
|
||||
RENAME TABLE mysql.time_zone_transition_BACKUP TO mysql.time_zone_transition;
|
||||
RENAME TABLE mysql.time_zone_transition_type_BACKUP TO mysql.time_zone_transition_type;
|
||||
|
||||
set global alter_algorithm=DEFAULT;
|
@ -30,12 +30,12 @@
|
||||
--echo # Case 2: Starting server with fifo file as general log file
|
||||
--echo # and slow query log file.
|
||||
# Restart server with fifo file as general log file.
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
--enable_reconnect
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "restart: --general-log-file=$gen_log_file --slow-query-log-file=$slow_query_log_file" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line "restart: --general-log-file=$gen_log_file --slow-query-log-file=$slow_query_log_file" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
# Error 6 is reported, because the other end is closed
|
||||
|
@ -16,7 +16,7 @@ let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err;
|
||||
--remove_file $SEARCH_FILE
|
||||
|
||||
#Shutdown the server
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
@ -30,7 +30,7 @@ let SEARCH_PATTERN= \[ERROR\] The server option \'lower_case_table_names\' is co
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
#Restart the server
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
#Cleanup
|
||||
|
@ -2431,6 +2431,9 @@ create table t1 (a int) engine=myisam;
|
||||
create table t2 (a int) stats_persistent=0, engine=innodb;
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (1);
|
||||
connect con1, localhost, root;
|
||||
start transaction with consistent snapshot;
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'after_open_table_mdl_shared SIGNAL table_opened WAIT_FOR grlwait execute 2';
|
||||
update t1,t2 set t1.a=2,t2.a=3;
|
||||
connection con2;
|
||||
@ -2462,6 +2465,7 @@ connection default;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
drop table t1,t2;
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
#
|
||||
# Bug#50786 Assertion `thd->mdl_context.trans_sentinel() == __null'
|
||||
# failed in open_ltable()
|
||||
|
@ -3115,6 +3115,12 @@ create table t2 (a int) stats_persistent=0, engine=innodb;
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (1);
|
||||
|
||||
connect (con1, localhost, root);
|
||||
# disable innodb purge thread, otherwise it might start purging t2,
|
||||
# and will take an mdl, affecting metadata_lock_info output.
|
||||
start transaction with consistent snapshot;
|
||||
connection default;
|
||||
|
||||
SET DEBUG_SYNC= 'after_open_table_mdl_shared SIGNAL table_opened WAIT_FOR grlwait execute 2';
|
||||
--send update t1,t2 set t1.a=2,t2.a=3
|
||||
|
||||
@ -3160,6 +3166,7 @@ connection default;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
drop table t1,t2;
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#50786 Assertion `thd->mdl_context.trans_sentinel() == __null'
|
||||
|
@ -26,14 +26,14 @@ INSERT INTO t1 VALUES (1,2),(2,3),(3,4),(4,5),(5,6);
|
||||
SET SESSION debug_dbug="d,crash_before_flush_keys";
|
||||
|
||||
--echo # Write file to make mysql-test-run.pl expect crash
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--echo # Run the crashing query
|
||||
--error 2013
|
||||
FLUSH TABLE t1;
|
||||
|
||||
--echo # Write file to make mysql-test-run.pl start the server
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--echo # Turn on reconnect
|
||||
--enable_reconnect
|
||||
|
@ -23,7 +23,7 @@ call mtr.add_suppression(" IP address .* could not be resolved");
|
||||
# server or run mysql-test-run --debug mysql_client_test and check
|
||||
# var/log/mysql_client_test.trace
|
||||
|
||||
--exec echo "$MYSQL_CLIENT_TEST" > $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1
|
||||
--write_line "$MYSQL_CLIENT_TEST" $MYSQLTEST_VARDIR/log/mysql_client_test.out.log
|
||||
--exec $MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -12,7 +12,7 @@ SET @old_slow_query_log= @@global.slow_query_log;
|
||||
|
||||
call mtr.add_suppression(" Error reading file './client_test_db/test_frm_bug.frm'");
|
||||
call mtr.add_suppression(" IP address .* could not be resolved");
|
||||
--exec echo "$MYSQL_CLIENT_TEST" > $MYSQLTEST_VARDIR/log/mysql_client_test_comp.out.log 2>&1
|
||||
--write_line "$MYSQL_CLIENT_TEST" $MYSQLTEST_VARDIR/log/mysql_client_test_comp.out.log
|
||||
--exec $MYSQL_CLIENT_TEST --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test_comp.out.log 2>&1
|
||||
|
||||
# End of test
|
||||
|
@ -19,7 +19,7 @@ call mtr.add_suppression(" IP address .* could not be resolved");
|
||||
# server or run mysql-test-run --debug mysql_client_test and check
|
||||
# var/log/mysql_client_test.trace
|
||||
|
||||
--exec echo "$MYSQL_CLIENT_TEST --non-blocking-api" > $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1
|
||||
--write_line "$MYSQL_CLIENT_TEST --non-blocking-api" $MYSQLTEST_VARDIR/log/mysql_client_test.out.log
|
||||
--exec $MYSQL_CLIENT_TEST --non-blocking-api --getopt-ll-test=25600M >> $MYSQLTEST_VARDIR/log/mysql_client_test.out.log 2>&1
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -18,6 +18,8 @@ execute immediate if(@wsrep_cannot_replicate_tz, 'select ENGINE into @time_zone_
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME=''time_zone_transition_type''', 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
|
||||
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
||||
SET session alter_algorithm='COPY';
|
||||
TRUNCATE TABLE time_zone;
|
||||
TRUNCATE TABLE time_zone_name;
|
||||
TRUNCATE TABLE time_zone_transition;
|
||||
@ -52,6 +54,7 @@ execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone E
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
|
||||
SET session alter_algorithm=@old_alter_alg;
|
||||
#
|
||||
# MDEV-28263: mariadb-tzinfo-to-sql improve wsrep and binlog cases
|
||||
#
|
||||
@ -67,6 +70,8 @@ execute immediate if(@wsrep_cannot_replicate_tz, 'select ENGINE into @time_zone_
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME=''time_zone_transition_type''', 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
|
||||
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
||||
SET session alter_algorithm='COPY';
|
||||
TRUNCATE TABLE time_zone;
|
||||
TRUNCATE TABLE time_zone_name;
|
||||
TRUNCATE TABLE time_zone_transition;
|
||||
@ -98,6 +103,7 @@ execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone E
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
|
||||
SET session alter_algorithm=@old_alter_alg;
|
||||
SELECT COUNT(*) FROM time_zone;
|
||||
COUNT(*)
|
||||
2
|
||||
@ -123,6 +129,8 @@ execute immediate if(@wsrep_is_on, 'SET @save_wsrep_on=@@WSREP_ON, WSREP_ON=OFF'
|
||||
SET @save_sql_log_bin=@@SQL_LOG_BIN;
|
||||
SET SESSION SQL_LOG_BIN=0;
|
||||
SET @wsrep_cannot_replicate_tz=0;
|
||||
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
||||
SET session alter_algorithm='COPY';
|
||||
TRUNCATE TABLE time_zone;
|
||||
TRUNCATE TABLE time_zone_name;
|
||||
TRUNCATE TABLE time_zone_transition;
|
||||
@ -152,6 +160,7 @@ execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_t
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id');
|
||||
SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
|
||||
execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
|
||||
SET session alter_algorithm=@old_alter_alg;
|
||||
SELECT COUNT(*) FROM time_zone;
|
||||
COUNT(*)
|
||||
2
|
||||
@ -505,6 +514,8 @@ execute immediate if(@wsrep_cannot_replicate_tz, 'select ENGINE into @time_zone_
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition ENGINE=InnoDB', 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'select ENGINE into @time_zone_transition_type_engine from information_schema.TABLES where TABLE_SCHEMA=DATABASE() and TABLE_NAME=''time_zone_transition_type''', 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, 'ALTER TABLE time_zone_transition_type ENGINE=InnoDB', 'do 0');
|
||||
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
||||
SET session alter_algorithm='COPY';
|
||||
TRUNCATE TABLE time_zone;
|
||||
TRUNCATE TABLE time_zone_name;
|
||||
TRUNCATE TABLE time_zone_transition;
|
||||
@ -522,6 +533,7 @@ execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone E
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_name ENGINE=', @time_zone_name_engine), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
|
||||
SET session alter_algorithm=@old_alter_alg;
|
||||
DROP TABLE baseline;
|
||||
DROP TABLE time_zone;
|
||||
DROP TABLE time_zone_name;
|
||||
|
@ -4,13 +4,16 @@ Test bad default storage engine.
|
||||
Test non-numeric value passed to number option.
|
||||
Test that bad value for plugin enum option is rejected correctly.
|
||||
Test to see if multiple unknown options will be displayed in the error output
|
||||
unknown option '--nonexistentoption'
|
||||
unknown option '--alsononexistent'
|
||||
unknown variable 'nonexistentvariable=1'
|
||||
FOUND 1 /unknown option '--nonexistentoption2'/ in mysqltest.log
|
||||
FOUND 1 /unknown option '--alsononexistent'/ in mysqltest.log
|
||||
FOUND 1 /unknown variable 'nonexistentvariable=1'/ in mysqltest.log
|
||||
Test to see if multiple ambiguous options and invalid arguments will be displayed in the error output
|
||||
Error while setting value 'invalid_value' to 'sql_mode'
|
||||
ambiguous option '--character' (character-set-client-handshake, character_sets_dir)
|
||||
option '--bootstrap' cannot take an argument
|
||||
FOUND 1 /Error while setting value 'invalid_value' to 'sql_mode'/ in mysqltest.log
|
||||
FOUND 1 /ambiguous option '--character'/ in mysqltest.log
|
||||
FOUND 1 /option '--bootstrap' cannot take an argument/ in mysqltest.log
|
||||
FOUND 1 /Integer value out of range for uint64: '18446744073709551616' for binlog_cache_size/ in mysqltest.log
|
||||
FOUND 1 /Unknown suffix 'y' used for variable 'bulk_insert_buffer_size' \(value '123y'\). Legal suffix characters are: K, M, G, T, P, E/ in mysqltest.log
|
||||
FOUND 1 /Error while setting value '123y' to 'bulk_insert_buffer_size'/ in mysqltest.log
|
||||
Test that --help --verbose works
|
||||
Test that --not-known-option --help --verbose gives error
|
||||
Done.
|
||||
|
@ -25,7 +25,7 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_option_err;
|
||||
|
||||
|
||||
--echo Test bad binlog format.
|
||||
--error 1
|
||||
--error 13
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --log-bin --binlog-format=badformat >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
|
||||
|
||||
|
||||
@ -35,7 +35,7 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_option_err;
|
||||
|
||||
|
||||
--echo Test non-numeric value passed to number option.
|
||||
--error 1
|
||||
--error 9
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --min-examined-row-limit=notanumber >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
|
||||
|
||||
|
||||
@ -46,17 +46,35 @@ mkdir $MYSQLTEST_VARDIR/tmp/mysqld_option_err;
|
||||
--error 7
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --plugin-dir=$MYSQLTEST_VARDIR/plugins --plugin-load=example=ha_example.so --plugin-example-enum-var=noexist >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
|
||||
|
||||
--let SEARCH_FILE = $MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log
|
||||
|
||||
--echo Test to see if multiple unknown options will be displayed in the error output
|
||||
# Remove the noise to make the test robust
|
||||
--replace_regex /^((?!nonexistent).)*$// /.*unknown/unknown/
|
||||
--error 7
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --nonexistentoption --alsononexistent --nonexistentvariable=1 2>&1
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --nonexistentoption2 --alsononexistent --nonexistentvariable=1 >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
|
||||
|
||||
--let SEARCH_PATTERN=unknown option '--nonexistentoption2'
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=unknown option '--alsononexistent'
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=unknown variable 'nonexistentvariable=1'
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo Test to see if multiple ambiguous options and invalid arguments will be displayed in the error output
|
||||
# Remove the noise to make the test robust
|
||||
--replace_regex /^((?!('sql_mode'|'--character'|'--bootstrap')).)*$// /.*Error while setting value/Error while setting value/ /.*ambiguous option/ambiguous option/ /.*option '--bootstrap'/option '--bootstrap'/
|
||||
--error 1
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --getopt-prefix-matching --sql-mode=invalid_value --character --bootstrap=partstoob 2>&1
|
||||
--error 9
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --skip-networking --datadir=$MYSQLTEST_VARDIR/tmp/mysqld_option_err --skip-grant-tables --getopt-prefix-matching --sql-mode=invalid_value --character --bootstrap=partstoob --binlog_cache_size=18446744073709551616 --bulk_insert_buffer_size=123y >>$MYSQLTEST_VARDIR/tmp/mysqld_option_err/mysqltest.log 2>&1
|
||||
|
||||
--let SEARCH_PATTERN=Error while setting value 'invalid_value' to 'sql_mode'
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=ambiguous option '--character'
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=option '--bootstrap' cannot take an argument
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=Integer value out of range for uint64: '18446744073709551616' for binlog_cache_size
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=Unknown suffix 'y' used for variable 'bulk_insert_buffer_size' \(value '123y'\). Legal suffix characters are: K, M, G, T, P, E
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=Error while setting value '123y' to 'bulk_insert_buffer_size'
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
#
|
||||
# Test that an wrong option with --help --verbose gives an error
|
||||
|
@ -68,7 +68,7 @@ drop table t1;
|
||||
# Test that we can't open connection to server if we are using
|
||||
# a different cacert
|
||||
#
|
||||
--exec echo "this query should not execute;" > $MYSQLTEST_VARDIR/tmp/test.sql
|
||||
--write_line "this query should not execute;" $MYSQLTEST_VARDIR/tmp/test.sql
|
||||
# Handle that openssl gives different error messages from YaSSL.
|
||||
--replace_regex /2026 TLS\/SSL error.*/2026 TLS\/SSL error: xxxx/
|
||||
--error 1
|
||||
|
@ -13,14 +13,14 @@ FROM INFORMATION_SCHEMA.PLUGINS WHERE plugin_name = 'innodb';
|
||||
--echo #
|
||||
--echo # MDEV-6351 --plugin=force has no effect for built-in plugins
|
||||
--echo #
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--error 1
|
||||
--exec $MYSQLD_CMD --innodb=force --innodb-page-size=6000 --disable-log-error
|
||||
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--disable_reconnect
|
||||
|
@ -5979,6 +5979,19 @@ EXECUTE stmt USING DEFAULT;
|
||||
# Clean up
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1, t2;
|
||||
# MDEV-33218: Assertion `active_arena->is_stmt_prepare_or_first_stmt_execute() || active_arena->state == Query_arena::STMT_SP_QUERY_ARGUMENTS' failed. in st_select_lex::fix_prepare_information
|
||||
CREATE TABLE t1 AS SELECT 1 f;
|
||||
PREPARE stmt FROM 'SHOW CREATE TABLE t1';
|
||||
DROP TABLE t1;
|
||||
EXECUTE stmt;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
CREATE VIEW t1 AS SELECT 1;
|
||||
EXECUTE stmt;
|
||||
View Create View character_set_client collation_connection
|
||||
t1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `t1` AS select 1 AS `1` latin1 latin1_swedish_ci
|
||||
# Clean up
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
@ -5421,6 +5421,18 @@ EXECUTE stmt USING DEFAULT;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo # MDEV-33218: Assertion `active_arena->is_stmt_prepare_or_first_stmt_execute() || active_arena->state == Query_arena::STMT_SP_QUERY_ARGUMENTS' failed. in st_select_lex::fix_prepare_information
|
||||
CREATE TABLE t1 AS SELECT 1 f;
|
||||
PREPARE stmt FROM 'SHOW CREATE TABLE t1';
|
||||
DROP TABLE t1;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
EXECUTE stmt;
|
||||
CREATE VIEW t1 AS SELECT 1;
|
||||
EXECUTE stmt;
|
||||
--echo # Clean up
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
@ -2208,12 +2208,42 @@ Qcache_queries_in_cache 0
|
||||
DROP FUNCTION foo;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-33861: main.query_cache fails with embedded after
|
||||
# enabling WITH_PROTECT_STATEMENT_MEMROOT
|
||||
#
|
||||
create table t1 (s1 int);
|
||||
create procedure f3 () begin
|
||||
select * from t1;
|
||||
end;
|
||||
//
|
||||
create procedure f4 () begin
|
||||
select * from t1;
|
||||
end;
|
||||
//
|
||||
Call f4();
|
||||
s1
|
||||
cAll f3();
|
||||
s1
|
||||
insert into t1 values (2);
|
||||
caLl f3();
|
||||
s1
|
||||
2
|
||||
drop procedure f3;
|
||||
drop procedure f4;
|
||||
drop table t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-24858 SIGABRT in DbugExit from my_malloc in Query_cache::init_cache Regression
|
||||
#
|
||||
SET @qc= @@query_cache_size;
|
||||
set global Query_cache_size=18446744073709547520;
|
||||
SET GLOBAL query_cache_size= @qc;
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
#
|
||||
# MDEV-22301 JSON_TABLE: Queries are not inserted into query cache.
|
||||
#
|
||||
create table t1 (a text);
|
||||
@ -2239,6 +2269,7 @@ DROP TABLE t;
|
||||
restore defaults
|
||||
SET GLOBAL query_cache_type= default;
|
||||
SET GLOBAL query_cache_size=@save_query_cache_size;
|
||||
# End of 10.6 tests
|
||||
#
|
||||
# MDEV-29028: Queries using RANDOM_BYTES get stored in query cache
|
||||
#
|
||||
@ -2261,6 +2292,4 @@ improbable
|
||||
0
|
||||
drop table t1;
|
||||
set global query_cache_type= @qcache;
|
||||
#
|
||||
# End of 10.10 tests
|
||||
#
|
||||
|
@ -1807,6 +1807,40 @@ show status like "Qcache_queries_in_cache";
|
||||
DROP FUNCTION foo;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33861: main.query_cache fails with embedded after
|
||||
--echo # enabling WITH_PROTECT_STATEMENT_MEMROOT
|
||||
--echo #
|
||||
|
||||
create table t1 (s1 int);
|
||||
--delimiter //
|
||||
create procedure f3 () begin
|
||||
select * from t1;
|
||||
end;
|
||||
//
|
||||
create procedure f4 () begin
|
||||
select * from t1;
|
||||
end;
|
||||
//
|
||||
--delimiter ;
|
||||
|
||||
Call f4();
|
||||
|
||||
cAll f3();
|
||||
|
||||
insert into t1 values (2);
|
||||
|
||||
caLl f3();
|
||||
|
||||
drop procedure f3;
|
||||
drop procedure f4;
|
||||
drop table t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-24858 SIGABRT in DbugExit from my_malloc in Query_cache::init_cache Regression
|
||||
--echo #
|
||||
@ -1816,6 +1850,10 @@ set global Query_cache_size=18446744073709547520;
|
||||
SET GLOBAL query_cache_size= @qc;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.5 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-22301 JSON_TABLE: Queries are not inserted into query cache.
|
||||
--echo #
|
||||
@ -1838,6 +1876,8 @@ DROP TABLE t;
|
||||
SET GLOBAL query_cache_type= default;
|
||||
SET GLOBAL query_cache_size=@save_query_cache_size;
|
||||
|
||||
--echo # End of 10.6 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29028: Queries using RANDOM_BYTES get stored in query cache
|
||||
--echo #
|
||||
@ -1866,7 +1906,6 @@ select random_bytes(1024) = random_bytes(1024) as improbable;
|
||||
drop table t1;
|
||||
set global query_cache_type= @qcache;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.10 tests
|
||||
--echo #
|
||||
|
||||
--enable_ps2_protocol
|
||||
|
@ -70,7 +70,7 @@ UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
DROP USER test@localhost;
|
||||
disconnect con1;
|
||||
echo End of 5.1 tests
|
||||
# End of 5.1 tests
|
||||
#
|
||||
# Bug#33669: Transactional temporary tables do not work under --read-only
|
||||
#
|
||||
@ -244,3 +244,26 @@ connection default;
|
||||
SET GLOBAL READ_ONLY = OFF;
|
||||
DROP USER bug33669@localhost;
|
||||
DROP DATABASE db1;
|
||||
# End of 5.5 tests
|
||||
#
|
||||
# MDEV-33889 Read only server throws error when running a create temporary table as select statement
|
||||
#
|
||||
create table t1(a int) engine=innodb;
|
||||
create user u1@localhost;
|
||||
grant insert, select, update, delete, create temporary tables on test.* to u1@localhost;
|
||||
insert into t1 values (1);
|
||||
set global read_only=1;
|
||||
connect u1,localhost,u1;
|
||||
set default_tmp_storage_engine=innodb;
|
||||
create temporary table tt1 (a int);
|
||||
create temporary table tt2 like t1;
|
||||
create temporary table tt3 as select * from t1;
|
||||
select * from tt3;
|
||||
a
|
||||
1
|
||||
disconnect u1;
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop user u1@localhost;
|
||||
set global read_only=0;
|
||||
# End of 10.5 tests
|
||||
|
@ -103,7 +103,7 @@ DROP USER test@localhost;
|
||||
|
||||
disconnect con1;
|
||||
|
||||
--echo echo End of 5.1 tests
|
||||
--echo # End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug#33669: Transactional temporary tables do not work under --read-only
|
||||
@ -250,3 +250,29 @@ SET GLOBAL READ_ONLY = OFF;
|
||||
DROP USER bug33669@localhost;
|
||||
DROP DATABASE db1;
|
||||
|
||||
--echo # End of 5.5 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33889 Read only server throws error when running a create temporary table as select statement
|
||||
--echo #
|
||||
create table t1(a int) engine=innodb;
|
||||
create user u1@localhost;
|
||||
grant insert, select, update, delete, create temporary tables on test.* to u1@localhost;
|
||||
insert into t1 values (1);
|
||||
set global read_only=1;
|
||||
|
||||
connect u1,localhost,u1;
|
||||
set default_tmp_storage_engine=innodb;
|
||||
|
||||
create temporary table tt1 (a int);
|
||||
create temporary table tt2 like t1;
|
||||
create temporary table tt3 as select * from t1;
|
||||
select * from tt3;
|
||||
disconnect u1;
|
||||
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop user u1@localhost;
|
||||
set global read_only=0;
|
||||
|
||||
--echo # End of 10.5 tests
|
||||
|
@ -4170,5 +4170,105 @@ Warnings:
|
||||
Note 1276 Field or reference 'test.t1.pk' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`pk` AS `pk`,`test`.`t1`.`c1` AS `c1` from `test`.`t1` where !<expr_cache><`test`.`t1`.`c1`,`test`.`t1`.`pk`>(<in_optimizer>(`test`.`t1`.`c1`,<exists>(/* select#2 */ select `test`.`t2`.`c1` from `test`.`t2` join `test`.`t1` `a1` where `test`.`t2`.`i1` = `test`.`t1`.`pk` and `test`.`t2`.`i1` between 3 and 5 and trigcond(<cache>(`test`.`t1`.`c1`) = `test`.`t2`.`c1`))))
|
||||
DROP TABLE t1,t2;
|
||||
set global innodb_stats_persistent= @stats.save;
|
||||
#
|
||||
# MDEV-31154: Fatal InnoDB error or assertion `!is_v' failure upon multi-update with indexed virtual column
|
||||
#
|
||||
# Test with auto generated Primary Key
|
||||
#
|
||||
SET @save_optimizer_switch= @@optimizer_switch;
|
||||
SET optimizer_switch='rowid_filter=on';
|
||||
CREATE TABLE t0(a int);
|
||||
INSERT INTO t0 SELECT seq FROM seq_1_to_20;
|
||||
ANALYZE TABLE t0 PERSISTENT FOR ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t0 analyze status Engine-independent statistics collected
|
||||
test.t0 analyze status OK
|
||||
CREATE TABLE t1 (
|
||||
a int,
|
||||
b int as (a * 2) VIRTUAL,
|
||||
f char(200), /* Filler */
|
||||
key (b),
|
||||
key (a)
|
||||
) engine=innodb;
|
||||
INSERT INTO t1 (a, f) SELECT seq, seq FROM seq_1_to_1000;
|
||||
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
# Test for type 'ref|filter'
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 20 Using where
|
||||
1 SIMPLE t1 ref|filter b,a b|a 5|5 test.t0.a 1 (2%) Using where; Using rowid filter
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
count(*)
|
||||
10
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 20 Using where
|
||||
1 SIMPLE t1 ref|filter b,a b|a 5|5 test.t0.a 1 (2%) Using where; Using rowid filter
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
count(*)
|
||||
10
|
||||
# Test for type 'range|filter'
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range|filter b,a b|a 5|5 NULL 49 (10%) Using where; Using rowid filter
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
count(*)
|
||||
49
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range|filter b,a b|a 5|5 NULL 49 (10%) Using where; Using rowid filter
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
count(*)
|
||||
49
|
||||
# Test with Primary Key
|
||||
#
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
p int PRIMARY KEY AUTO_INCREMENT,
|
||||
a int,
|
||||
b int as (a * 2) VIRTUAL,
|
||||
f char(200), /* Filler */
|
||||
key (b),
|
||||
key (a)
|
||||
) engine=innodb;
|
||||
INSERT INTO t1 (a, f) SELECT seq, seq FROM seq_1_to_1000;
|
||||
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
# Test for type 'ref|filter'
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 20 Using where
|
||||
1 SIMPLE t1 ref|filter b,a b|a 5|5 test.t0.a 1 (2%) Using where; Using rowid filter
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
count(*)
|
||||
10
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 20 Using where
|
||||
1 SIMPLE t1 ref|filter b,a b|a 5|5 test.t0.a 1 (2%) Using where; Using rowid filter
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
count(*)
|
||||
10
|
||||
# Test for type 'range|filter'
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range|filter b,a b|a 5|5 NULL 49 (10%) Using where; Using rowid filter
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
count(*)
|
||||
49
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range|filter b,a b|a 5|5 NULL 49 (10%) Using where; Using rowid filter
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
count(*)
|
||||
49
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
DROP TABLE t0, t1;
|
||||
# End of 10.4 tests
|
||||
# End of 10.6 tests
|
||||
set global innodb_stats_persistent= @stats.save;
|
||||
|
@ -1,6 +1,8 @@
|
||||
--source include/no_valgrind_without_big.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_sequence.inc
|
||||
--source include/innodb_stable_estimates.inc
|
||||
|
||||
SET SESSION DEFAULT_STORAGE_ENGINE='InnoDB';
|
||||
|
||||
@ -683,6 +685,82 @@ eval EXPLAIN EXTENDED $q;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
set global innodb_stats_persistent= @stats.save;
|
||||
--echo #
|
||||
--echo # MDEV-31154: Fatal InnoDB error or assertion `!is_v' failure upon multi-update with indexed virtual column
|
||||
--echo #
|
||||
|
||||
--echo # Test with auto generated Primary Key
|
||||
--echo #
|
||||
|
||||
SET @save_optimizer_switch= @@optimizer_switch;
|
||||
SET optimizer_switch='rowid_filter=on';
|
||||
|
||||
CREATE TABLE t0(a int);
|
||||
INSERT INTO t0 SELECT seq FROM seq_1_to_20;
|
||||
ANALYZE TABLE t0 PERSISTENT FOR ALL;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a int,
|
||||
b int as (a * 2) VIRTUAL,
|
||||
f char(200), /* Filler */
|
||||
key (b),
|
||||
key (a)
|
||||
) engine=innodb;
|
||||
|
||||
INSERT INTO t1 (a, f) SELECT seq, seq FROM seq_1_to_1000;
|
||||
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||
|
||||
--echo # Test for type 'ref|filter'
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
|
||||
--echo # Test for type 'range|filter'
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
|
||||
--echo # Test with Primary Key
|
||||
--echo #
|
||||
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
p int PRIMARY KEY AUTO_INCREMENT,
|
||||
a int,
|
||||
b int as (a * 2) VIRTUAL,
|
||||
f char(200), /* Filler */
|
||||
key (b),
|
||||
key (a)
|
||||
) engine=innodb;
|
||||
|
||||
INSERT INTO t1 (a, f) SELECT seq, seq FROM seq_1_to_1000;
|
||||
ANALYZE TABLE t1 PERSISTENT FOR ALL;
|
||||
|
||||
--echo # Test for type 'ref|filter'
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20;
|
||||
|
||||
EXPLAIN SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
SELECT count(*) from t0,t1 WHERE t0.a=t1.b AND t1.a<20 FOR UPDATE;
|
||||
|
||||
--echo # Test for type 'range|filter'
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100;
|
||||
|
||||
EXPLAIN SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
SELECT count(*) FROM t1 WHERE a<100 and b <100 FOR UPDATE;
|
||||
|
||||
SET optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
DROP TABLE t0, t1;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
||||
--echo # End of 10.6 tests
|
||||
|
||||
set global innodb_stats_persistent= @stats.save;
|
||||
|
||||
|
@ -20,13 +20,13 @@ drop procedure try_shutdown;
|
||||
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
--write_line wait $_expect_file_name
|
||||
|
||||
--send shutdown
|
||||
--connection default
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--exec echo "restart" > $_expect_file_name
|
||||
--write_line restart $_expect_file_name
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
|
@ -176,12 +176,12 @@ drop user baz@baz;
|
||||
SELECT @@skip_grant_tables AS EXPECT_1;
|
||||
|
||||
# Also check when the server starts without "--skip-grant-table" option
|
||||
--let $restart_parameters = "--skip-skip-grant-tables"
|
||||
--let $restart_parameters = --skip-skip-grant-tables
|
||||
--source include/restart_mysqld.inc
|
||||
SELECT @@skip_grant_tables AS EXPECT_0;
|
||||
|
||||
# Need to restart the server to restore the "--skip-grant-tables" state
|
||||
--let $restart_parameters = "--skip-grant-tables"
|
||||
--let $restart_parameters = --skip-grant-tables
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--echo #
|
||||
|
@ -7179,15 +7179,14 @@ CREATE VIEW t1 AS SELECT 10 AS f1;
|
||||
CALL p1(1);
|
||||
ERROR HY000: The target table t1 of the INSERT is not insertable-into
|
||||
CREATE TEMPORARY TABLE t1 (f1 INT);
|
||||
# t1 still refers to the view since it was inlined
|
||||
CALL p1(2);
|
||||
ERROR HY000: The target table t1 of the INSERT is not insertable-into
|
||||
DROP VIEW t1;
|
||||
# t1 now refers to the temporary table
|
||||
CALL p1(3);
|
||||
# Check which values were inserted into the temp table.
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
2
|
||||
3
|
||||
DROP TEMPORARY TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
|
@ -8632,8 +8632,6 @@ CALL p1(1);
|
||||
|
||||
CREATE TEMPORARY TABLE t1 (f1 INT);
|
||||
|
||||
--echo # t1 still refers to the view since it was inlined
|
||||
--error ER_NON_INSERTABLE_TABLE
|
||||
CALL p1(2);
|
||||
|
||||
DROP VIEW t1;
|
||||
|
@ -2,4 +2,4 @@
|
||||
Variable_name Value
|
||||
Ssl_version TLS_VERSION
|
||||
# try logging in with a certificate in the server's --ssl-crl : should fail
|
||||
ERROR 2026 (HY000): TLS/SSL error: sslv3 alert certificate revoked
|
||||
ERROR 2026 (HY000): TLS/SSL error: ssl/tls alert certificate revoked
|
||||
|
@ -7,7 +7,7 @@
|
||||
--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-new-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-new-cert.pem test -e "SHOW STATUS LIKE 'Ssl_version'"
|
||||
|
||||
--echo # try logging in with a certificate in the server's --ssl-crl : should fail
|
||||
# OpenSSL 1.1.1a correctly rejects the certificate, but the error message is different
|
||||
--replace_regex /ERROR 2013 \(HY000\): Lost connection to server at '.*', system error: [0-9]+/ERROR 2026 (HY000): TLS\/SSL error: sslv3 alert certificate revoked/
|
||||
# OpenSSL 1.1.1a and later releases correctly rejects the certificate, but the error message is different
|
||||
--replace_regex /(ERROR 2013 \(HY000\): Lost connection to server at '.*', system error: [0-9]+|ERROR 2026 \(HY000\): TLS\/SSL error: sslv3 alert certificate revoked)/ERROR 2026 (HY000): TLS\/SSL error: ssl\/tls alert certificate revoked/
|
||||
--error 1
|
||||
--exec $MYSQL --ssl-ca=$MYSQL_TEST_DIR/std_data/cacert.pem --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test -e "SHOW STATUS LIKE 'Ssl_version'" 2>&1
|
||||
|
@ -1,5 +1,5 @@
|
||||
# connect with read timeout so SLEEP() should timeout
|
||||
connect ssl_con,localhost,root,,,,,SSL read_timeout=5;
|
||||
connect ssl_con,localhost,root,,,,,SSL read_timeout=5$_timeout_adjustment;
|
||||
# Check ssl turned on
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
have_ssl
|
||||
|
@ -1,10 +1,11 @@
|
||||
--source include/have_ssl_communication.inc
|
||||
--source include/slow_environ.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
--echo # connect with read timeout so SLEEP() should timeout
|
||||
connect (ssl_con,localhost,root,,,,,SSL read_timeout=5);
|
||||
connect (ssl_con,localhost,root,,,,,SSL read_timeout=5$_timeout_adjustment);
|
||||
|
||||
--echo # Check ssl turned on
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
|
@ -3330,4 +3330,33 @@ a
|
||||
2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-33747: Optimization of (SELECT) IN (SELECT ...) executes subquery at prepare stage
|
||||
#
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 select seq, seq from seq_1_to_200;
|
||||
create table t2 as select * from t1;
|
||||
create table t3 as select * from t1;
|
||||
analyze table t1,t2,t3;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
test.t2 analyze status Engine-independent statistics collected
|
||||
test.t2 analyze status OK
|
||||
test.t3 analyze status Engine-independent statistics collected
|
||||
test.t3 analyze status OK
|
||||
select @@expensive_subquery_limit < 200 as DEFAULTS_ARE_SUITABLE;
|
||||
DEFAULTS_ARE_SUITABLE
|
||||
1
|
||||
flush status;
|
||||
explain select * from t1 where a<3 or (select max(a) from t2) in (select b from t3);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 200 Using where
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 200 Using where
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 200
|
||||
# Must show 0. If this shows 200, this means subquery was executed and you have a bug:
|
||||
show status like 'Handler_read_rnd_next%';
|
||||
Variable_name Value
|
||||
Handler_read_rnd_next 0
|
||||
drop table t1,t2,t3;
|
||||
# End of 10.4 tests
|
||||
|
@ -2670,5 +2670,20 @@ DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33747: Optimization of (SELECT) IN (SELECT ...) executes subquery at prepare stage
|
||||
--echo #
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 select seq, seq from seq_1_to_200;
|
||||
create table t2 as select * from t1;
|
||||
create table t3 as select * from t1;
|
||||
analyze table t1,t2,t3;
|
||||
select @@expensive_subquery_limit < 200 as DEFAULTS_ARE_SUITABLE;
|
||||
flush status;
|
||||
explain select * from t1 where a<3 or (select max(a) from t2) in (select b from t3);
|
||||
--echo # Must show 0. If this shows 200, this means subquery was executed and you have a bug:
|
||||
show status like 'Handler_read_rnd_next%';
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
||||
|
@ -614,6 +614,55 @@ Tables_in_test
|
||||
# in 11.2 and above here should be listed above used temporary tables
|
||||
DROP TEMPORARY TABLE t1, t2;
|
||||
#
|
||||
# MDEV-33218: Assertion `active_arena->is_stmt_prepare_or_first_stmt_execute() || active_arena->state == Query_arena::STMT_SP_QUERY_ARGUMENTS' failed. in st_select_lex::fix_prepare_information
|
||||
#
|
||||
CREATE VIEW v1 AS SELECT 5;
|
||||
CREATE PROCEDURE sp() SELECT * FROM v1;
|
||||
CREATE TEMPORARY TABLE v1 as SELECT 7;
|
||||
# sp() accesses the temporary table v1 that hides the view with the same name
|
||||
# Therefore expected output is the row (7)
|
||||
CALL sp();
|
||||
7
|
||||
7
|
||||
DROP TEMPORARY TABLE v1;
|
||||
# After the temporary table v1 has been dropped the next invocation of sp()
|
||||
# accesses the view v1. So, expected output is the row (5)
|
||||
CALL sp();
|
||||
5
|
||||
5
|
||||
# Clean up
|
||||
DROP VIEW v1;
|
||||
DROP PROCEDURE sp;
|
||||
# Another use case is when a temporary table hides a view is dropped
|
||||
# inside a stored routine being called.
|
||||
CREATE VIEW t1 AS SELECT 1;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DROP TEMPORARY TABLE t1;
|
||||
END
|
||||
|
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
CALL p1();
|
||||
RETURN 1;
|
||||
END
|
||||
|
|
||||
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS a;
|
||||
PREPARE stmt FROM 'SELECT f1()';
|
||||
EXECUTE stmt;
|
||||
f1()
|
||||
1
|
||||
# The temporary table t1 has been dropped on first
|
||||
# execution of the prepared statement 'stmt',
|
||||
# next time this statement is run it results in issuing
|
||||
# the error ER_BAD_TABLE_ERROR
|
||||
EXECUTE stmt;
|
||||
ERROR 42S02: Unknown table 'test.t1'
|
||||
# Clean up
|
||||
DROP VIEW t1;
|
||||
DROP FUNCTION f1;
|
||||
DROP PROCEDURE p1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
create function f1() returns int
|
||||
|
@ -669,6 +669,60 @@ SHOW TABLES;
|
||||
|
||||
DROP TEMPORARY TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33218: Assertion `active_arena->is_stmt_prepare_or_first_stmt_execute() || active_arena->state == Query_arena::STMT_SP_QUERY_ARGUMENTS' failed. in st_select_lex::fix_prepare_information
|
||||
--echo #
|
||||
CREATE VIEW v1 AS SELECT 5;
|
||||
CREATE PROCEDURE sp() SELECT * FROM v1;
|
||||
CREATE TEMPORARY TABLE v1 as SELECT 7;
|
||||
--echo # sp() accesses the temporary table v1 that hides the view with the same name
|
||||
--echo # Therefore expected output is the row (7)
|
||||
CALL sp();
|
||||
DROP TEMPORARY TABLE v1;
|
||||
--echo # After the temporary table v1 has been dropped the next invocation of sp()
|
||||
--echo # accesses the view v1. So, expected output is the row (5)
|
||||
CALL sp();
|
||||
|
||||
--echo # Clean up
|
||||
DROP VIEW v1;
|
||||
DROP PROCEDURE sp;
|
||||
|
||||
--echo # Another use case is when a temporary table hides a view is dropped
|
||||
--echo # inside a stored routine being called.
|
||||
|
||||
CREATE VIEW t1 AS SELECT 1;
|
||||
|
||||
--delimiter |
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DROP TEMPORARY TABLE t1;
|
||||
END
|
||||
|
|
||||
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
CALL p1();
|
||||
RETURN 1;
|
||||
END
|
||||
|
|
||||
|
||||
--delimiter ;
|
||||
|
||||
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS a;
|
||||
PREPARE stmt FROM 'SELECT f1()';
|
||||
EXECUTE stmt;
|
||||
--echo # The temporary table t1 has been dropped on first
|
||||
--echo # execution of the prepared statement 'stmt',
|
||||
--echo # next time this statement is run it results in issuing
|
||||
--echo # the error ER_BAD_TABLE_ERROR
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
EXECUTE stmt;
|
||||
|
||||
--echo # Clean up
|
||||
DROP VIEW t1;
|
||||
DROP FUNCTION f1;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
@ -4550,8 +4550,6 @@ sub extract_warning_lines ($$) {
|
||||
qr/WSREP: Guessing address for incoming client/,
|
||||
|
||||
qr/InnoDB: Difficult to find free blocks in the buffer pool*/,
|
||||
# for UBSAN
|
||||
qr/decimal\.c.*: runtime error: signed integer overflow/,
|
||||
# Disable test for UBSAN on dynamically loaded objects
|
||||
qr/runtime error: member call.*object.*'Handler_share'/,
|
||||
qr/sql_type\.cc.* runtime error: member call.*object.* 'Type_collection'/,
|
||||
@ -5711,6 +5709,8 @@ sub start_mysqltest ($) {
|
||||
mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
|
||||
}
|
||||
|
||||
mtr_add_arg($args, "--wait-for-pos-timeout=%d", $opt_debug_sync_timeout);
|
||||
|
||||
client_debug_arg($args, "mysqltest");
|
||||
|
||||
if ( $opt_record )
|
||||
|
@ -98,7 +98,7 @@ reset master;
|
||||
--echo # crash_purge_before_update_index
|
||||
flush logs;
|
||||
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
SET SESSION debug_dbug="+d,crash_purge_before_update_index";
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
--error 2013
|
||||
@ -119,7 +119,7 @@ SELECT @index;
|
||||
--echo # crash_purge_non_critical_after_update_index
|
||||
flush logs;
|
||||
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
SET SESSION debug_dbug="+d,crash_purge_non_critical_after_update_index";
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
--error 2013
|
||||
@ -143,7 +143,7 @@ SELECT @index;
|
||||
--echo # crash_purge_critical_after_update_index
|
||||
flush logs;
|
||||
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
SET SESSION debug_dbug="+d,crash_purge_critical_after_update_index";
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
--error 2013
|
||||
@ -167,7 +167,7 @@ file_exists $MYSQLD_DATADIR/master-bin.000008;
|
||||
SELECT @index;
|
||||
|
||||
--echo # crash_create_non_critical_before_update_index
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
SET SESSION debug_dbug="+d,crash_create_non_critical_before_update_index";
|
||||
--error 2013
|
||||
flush logs;
|
||||
@ -185,7 +185,7 @@ file_exists $MYSQLD_DATADIR/master-bin.000009;
|
||||
SELECT @index;
|
||||
|
||||
--echo # crash_create_critical_before_update_index
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
SET SESSION debug_dbug="+d,crash_create_critical_before_update_index";
|
||||
--error 2013
|
||||
flush logs;
|
||||
@ -205,7 +205,7 @@ file_exists $MYSQLD_DATADIR/master-bin.000011;
|
||||
SELECT @index;
|
||||
|
||||
--echo # crash_create_after_update_index
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
SET SESSION debug_dbug="+d,crash_create_after_update_index";
|
||||
--error 2013
|
||||
flush logs;
|
||||
|
@ -26,10 +26,10 @@
|
||||
ALTER TABLE mysql.gtid_slave_pos ENGINE=innodb;
|
||||
|
||||
--echo # Restart the server so mysqld reads the gtid_slave_pos using innodb
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
|
@ -68,10 +68,10 @@ while ($loop_times) {
|
||||
|
||||
# try to change the log-bin configs and restart
|
||||
--echo # ======= now try to change the log-bin config for mysqld =======
|
||||
--let $restart_parameters="--log-bin=new_log_bin"
|
||||
--let $restart_parameters=--log-bin=new_log_bin
|
||||
--echo #begin to restart mysqld
|
||||
--source include/restart_mysqld.inc
|
||||
--let $restart_parameters= ""
|
||||
--let $restart_parameters=
|
||||
|
||||
--source include/show_binary_logs.inc
|
||||
let $loop_times= 10;
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
--connection $_cur_con
|
||||
--enable_reconnect
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
|
||||
shutdown_server;
|
||||
|
||||
@ -31,5 +31,5 @@ if ($rpl_server_parameters)
|
||||
{
|
||||
--let $_rpl_start_server_command= restart:$rpl_server_parameters
|
||||
}
|
||||
--exec echo "$_rpl_start_server_command" > $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
--write_line "$_rpl_start_server_command" $MYSQLTEST_VARDIR/tmp/mysqld.$rpl_server_number.expect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
@ -206,10 +206,12 @@ RETURN x;
|
||||
END
|
||||
||
|
||||
SET sql_log_bin=1;
|
||||
include/stop_slave_io.inc
|
||||
connection server_1;
|
||||
INSERT INTO t3 VALUES (49,0);
|
||||
connection server_2;
|
||||
START SLAVE SQL_THREAD;
|
||||
CHANGE MASTER TO master_use_gtid=no;
|
||||
include/start_slave.inc
|
||||
SELECT * FROM t3 WHERE a >= 40 ORDER BY a;
|
||||
a b
|
||||
41 41
|
||||
@ -239,10 +241,6 @@ SET GLOBAL slave_parallel_threads=0;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
include/start_slave.inc
|
||||
*** 3. Same as (2), but not using gtid mode ***
|
||||
connection server_2;
|
||||
include/stop_slave.inc
|
||||
CHANGE MASTER TO master_use_gtid=no;
|
||||
include/start_slave.inc
|
||||
connection server_1;
|
||||
connection con_temp3;
|
||||
SET debug_sync='commit_after_release_LOCK_prepare_ordered SIGNAL master_queued1 WAIT_FOR master_cont1';
|
||||
|
@ -33,37 +33,37 @@ ERROR 42000: Incorrect parameter count in the call to native function 'WITHIN(PO
|
||||
# MDEV-20009 Add CAST(expr AS pluggable_type)
|
||||
#
|
||||
SELECT CAST(1 AS GEOMETRY);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometry)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometry)'
|
||||
SELECT CAST(1 AS GEOMETRYCOLLECTION);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometrycollection)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometrycollection)'
|
||||
SELECT CAST(1 AS POINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS point)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS point)'
|
||||
SELECT CAST(1 AS LINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS linestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS linestring)'
|
||||
SELECT CAST(1 AS POLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS polygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS polygon)'
|
||||
SELECT CAST(1 AS MULTIPOINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipoint)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipoint)'
|
||||
SELECT CAST(1 AS MULTILINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multilinestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multilinestring)'
|
||||
SELECT CAST(1 AS MULTIPOLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipolygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipolygon)'
|
||||
SELECT CONVERT(1, GEOMETRY);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometry)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometry)'
|
||||
SELECT CONVERT(1, GEOMETRYCOLLECTION);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS geometrycollection)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS geometrycollection)'
|
||||
SELECT CONVERT(1, POINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS point)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS point)'
|
||||
SELECT CONVERT(1, LINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS linestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS linestring)'
|
||||
SELECT CONVERT(1, POLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS polygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS polygon)'
|
||||
SELECT CONVERT(1, MULTIPOINT);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipoint)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipoint)'
|
||||
SELECT CONVERT(1, MULTILINESTRING);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multilinestring)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multilinestring)'
|
||||
SELECT CONVERT(1, MULTIPOLYGON);
|
||||
ERROR HY000: Operator does not exists: 'CAST(expr AS multipolygon)'
|
||||
ERROR HY000: Operator does not exist: 'CAST(expr AS multipolygon)'
|
||||
#
|
||||
# End of 10.5 tests
|
||||
#
|
||||
|
@ -16,7 +16,7 @@ call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* becau
|
||||
--let $MYSQLD_DATADIR = `SELECT @@datadir`
|
||||
--let SEARCH_RANGE = 10000000
|
||||
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
@ -25,7 +25,7 @@ call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* becau
|
||||
4;770A8A65DA156D24EE2A093277530143
|
||||
EOF
|
||||
|
||||
--exec echo "restart:--innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line "restart:--innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
@ -47,7 +47,7 @@ UNLOCK TABLES;
|
||||
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
@ -62,7 +62,7 @@ ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--exec echo "restart:--innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys2.txt" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line "restart:--innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys2.txt" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--source include/restart_mysqld.inc
|
||||
@ -80,7 +80,7 @@ SELECT * FROM t1;
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
@ -89,7 +89,7 @@ SELECT * FROM t1;
|
||||
4;770A8A65DA156D24EE2A093277530143
|
||||
EOF
|
||||
|
||||
--exec echo "restart:--innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--write_line "restart:--innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
DROP TABLE t1;
|
||||
|
@ -21,7 +21,7 @@ CREATE TABLE t1(f1 BIGINT PRIMARY KEY, f2 int not null,
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
|
||||
|
||||
CREATE TABLE t2 (f1 int not null)engine=innodb;
|
||||
let $restart_parameters="--debug=d,ib_log_checkpoint_avoid";
|
||||
let $restart_parameters=--debug=d,ib_log_checkpoint_avoid;
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
# Stop the purge
|
||||
|
@ -22,7 +22,7 @@ galera_concurrent_ctas : MDEV-32779 galera_concurrent_ctas: assertion in the gal
|
||||
galera_as_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
|
||||
galera_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
|
||||
galera_sst_mysqldump_with_key : MDEV-32782 galera_sst_mysqldump_with_key test failed
|
||||
mdev-31285 : MDEV-25089 Assertion `error.len > 0' failed in galera::ReplicatorSMM::handle_apply_error()
|
||||
galera_var_ignore_apply_errors : MENT-1997 galera_var_ignore_apply_errors test freezes
|
||||
MW-402 : temporarily disabled at the request of Codership
|
||||
galera_desync_overlapped : MDEV-21538 galera_desync_overlapped MTR failed: Result content mismatch
|
||||
galera_create_table_as_select : MDEV-33952 fails sporadically
|
||||
|
@ -8,7 +8,7 @@ if (!$kill_signal)
|
||||
# Write file to make mysql-test-run.pl expect the crash, but don't start it
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
--write_line wait $_expect_file_name
|
||||
|
||||
# Kill the connected server
|
||||
--disable_reconnect
|
||||
|
@ -1,18 +0,0 @@
|
||||
# This is the first half of include/restart_mysqld.inc.
|
||||
if ($rpl_inited)
|
||||
{
|
||||
if (!$allow_rpl_inited)
|
||||
{
|
||||
--die ERROR IN TEST: When using the replication test framework (master-slave.inc, rpl_init.inc etc), use rpl_restart_server.inc instead of restart_mysqld.inc. If you know what you are doing and you really have to use restart_mysqld.inc, set allow_rpl_inited=1 before you source restart_mysqld.inc
|
||||
}
|
||||
}
|
||||
|
||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start it
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
||||
# Send shutdown to the connected server
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
@ -4,12 +4,12 @@
|
||||
|
||||
if ($galera_wsrep_start_position != '') {
|
||||
--echo Using --wsrep-start-position when starting mysqld ...
|
||||
--exec echo "restart:$start_mysqld_params --wsrep-start-position=$galera_wsrep_start_position" > $_expect_file_name
|
||||
--write_line "restart:$start_mysqld_params --wsrep-start-position=$galera_wsrep_start_position" $_expect_file_name
|
||||
--let $galera_wsrep_start_position = 0
|
||||
}
|
||||
|
||||
if ($galera_wsrep_start_position == '') {
|
||||
--exec echo "restart:$start_mysqld_params" > $_expect_file_name
|
||||
--write_line "restart:$start_mysqld_params" $_expect_file_name
|
||||
}
|
||||
|
||||
--source include/galera_wait_ready.inc
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user