diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
commit | 06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/suite/atomic/drop_db_long_names.test | |
parent | Initial commit. (diff) | |
download | mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/atomic/drop_db_long_names.test')
-rw-r--r-- | mysql-test/suite/atomic/drop_db_long_names.test | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/mysql-test/suite/atomic/drop_db_long_names.test b/mysql-test/suite/atomic/drop_db_long_names.test new file mode 100644 index 00000000..af582afc --- /dev/null +++ b/mysql-test/suite/atomic/drop_db_long_names.test @@ -0,0 +1,117 @@ +--source include/have_debug.inc +--source include/have_log_bin.inc +--source include/not_valgrind.inc + +# Speed up wait_until_connected_again.inc +let NO_WSREP=1; +RESET MASTER; + +# +# Testing of atomic DROP DATABASE when the generated query could be too long +# + +let $engine_count=1; +let $engines='aria'; + +let $crash_count=2; +let $crash_points='ddl_log_drop_after_drop_tables','ddl_log_drop_before_binlog'; + +let $max_tables=30; + +let $old_debug=`select @@debug_dbug`; + +let $keep_include_silent=1; +let $grep_script=DROP; +--disable_query_log + +let $e=0; +while ($e < $engine_count) +{ + inc $e; + let $engine=`select ELT($e, $engines)`; + let $default_engine=$engine; + let $extra_option=; + + if ($engine == "aria") + { + let $extra_option=transactional=1; + } + if ($engine == "aria_notrans") + { + let $default_engine="aria"; + let $extra_option=transactional=0; + } + + let $c=0; + while ($c < $crash_count) + { + inc $c; + let $crash=`select ELT($c, $crash_points)`; + let $r=0; + while ($r < 1) + { + inc $r; + create database test2; + use test2; + --eval set @@default_storage_engine=$default_engine + let $t=0; + while ($t < $max_tables) + { + inc $t; + let $name=`select concat("t",char(floor(65+$t/26)),repeat(char(65+mod($t,26)),60))`; + let $view=`select concat("t",char(floor(65+$t/26)),repeat(char(65+mod($t,26)),30),'v')`; + --eval create table $name (a int not null) $extra_option + --eval create view $view as select * from $name + } + + flush tables; + use test; + + FLUSH BINARY LOGS; + --let $start_binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) + + echo "engine: $engine crash point: $crash position: $r"; + --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect + --disable_reconnect + --eval set @@debug_dbug="+d,$crash",@debug_crash_counter=$r + let $errno=0; + --error 0,2013 + DROP DATABASE test2; + let $error=$errno; + --enable_reconnect + --source include/wait_until_connected_again.inc + --disable_query_log + --eval set @@debug_dbug="$old_debug" + + if ($error == 0) + { + echo "No crash!"; + } + use test; + # Check which tables still exists + --error 0,1 + --list_files $MYSQLD_DATADIR/test2 t* + --error 0,ER_SP_DOES_NOT_EXIST + + --let $binlog_file=$start_binlog_file + --let $binlog_output_name=master-bin.000001 + if ($error) + { + --let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1) + --let $binlog_output_name=master-bin.000002 + if ($binlog_file != $start_binlog_file) + { + --source include/show_binlog_events.inc + } + } + # Really drop the tables. The warnings will show what was dropped + --disable_warnings + --error 0, ER_DB_DROP_EXISTS + DROP DATABASE test2; + --enable_warnings + } + } +} +drop database if exists test2; + +--enable_query_log |