1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
|
--disable_warnings
DROP DATABASE IF EXISTS `drop-temp+table-test`;
--enable_warnings
connect (con1,localhost,root,,);
connect (con2,localhost,root,,);
connection con1;
RESET MASTER;
CREATE DATABASE `drop-temp+table-test`;
USE `drop-temp+table-test`;
CREATE TEMPORARY TABLE shortn1 (a INT);
CREATE TEMPORARY TABLE `table:name` (a INT);
CREATE TEMPORARY TABLE shortn2 (a INT);
##############################################################################
# BUG#46572 DROP TEMPORARY table IF EXISTS does not have a consistent behavior
# in ROW mode
##############################################################################
CREATE TEMPORARY TABLE tmp(c1 int);
CREATE TEMPORARY TABLE tmp1(c1 int);
CREATE TEMPORARY TABLE tmp2(c1 int);
CREATE TEMPORARY TABLE tmp3(c1 int);
CREATE TABLE t(c1 int);
DROP TEMPORARY TABLE IF EXISTS tmp;
--disable_warnings
DROP TEMPORARY TABLE IF EXISTS tmp;
DROP TEMPORARY TABLE IF EXISTS tmp, tmp1;
DROP TEMPORARY TABLE tmp3;
DROP TABLE IF EXISTS tmp2, t;
DROP TABLE IF EXISTS tmp2, t;
--enable_warnings
SELECT GET_LOCK("a",10);
#
# BUG48216 Replication fails on all slaves after upgrade to 5.0.86 on master
#
# When the session is closed, any temporary tables of the session are dropped
# and are binlogged. But it will be binlogged with a wrong database name when
# the length of the database name('drop-temp-table-test') is greater than the
# current database name('test').
#
USE test;
disconnect con1;
connection con2;
# We want to SHOW BINLOG EVENTS, to know what was logged. But there is no
# guarantee that logging of the terminated con1 has been done yet.
# To be sure that logging has been done, we use a user lock.
SELECT GET_LOCK("a",10);
let $VERSION=`SELECT VERSION()`;
if (`SELECT @@GLOBAL.binlog_format = 'STATEMENT'`)
{
let $wait_binlog_event=DROP /*!40005 TEMPORARY */ TABLE IF EXISTS;
source include/wait_for_binlog_event.inc;
}
source include/show_binlog_events.inc;
DROP DATABASE `drop-temp+table-test`;
RESET MASTER;
# End of 4.1 tests
--echo #
--echo # Bug 83003: Using temporary tables on slaves increases GTID sequence number
--echo #
--source include/count_sessions.inc
--connect (con1,localhost,root,,)
# Check with transactional tables to be logged in close_temporary_tables.
CREATE TEMPORARY TABLE temp_trx(a INT) ENGINE=InnoDB;
CREATE TEMPORARY TABLE temp_needs_logging_in_stmt(a INT) ENGINE=InnoDB;
SET SESSION sql_log_bin= 0;
CREATE TEMPORARY TABLE temp_binlog_disabled(a INT) ENGINE=InnoDB;
SET SESSION sql_log_bin= 1;
--disconnect con1
--connection default
--source include/wait_until_count_sessions.inc
--source include/show_binlog_events.inc
# End of 5.6 tests
--echo #
--echo # BUG#21638823: ASSERTION FAILED:
--echo # THD->GET_TRANSACTION()->IS_EMPTY(TRANSACTION_CTX::STMT) || THD
--echo #
--echo # Test case first checks that it is possible to terminate a connection
--echo # with a temporary table (which will implicitly remove the temporary
--echo # table) while in XA_idle. Then checks that an explicit DROP TEMPORARY
--echo # TABLE is rejected with ER_XAER_RMFAIL as required by the XA spec.
--echo #
--echo # Reset master to avoid clutter when dumping binlog
RESET MASTER;
--echo # Create separate connection
connect (con3,localhost,root,,);
--connection con3
--echo # Create temporary table
CREATE TEMPORARY TABLE temp(i int);
INSERT INTO temp VALUES (0), (1), (2), (3);
--echo # Start XA txn and leave it in XA_idle
XA START 'idle_at_disconnect';
XA END 'idle_at_disconnect';
--echo # Terminate connection to verify that the temporary table can be
--echo # removed at disconnect even in XA_idle, and that this does not
--echo # cause problems for replication
--disconnect con3
--source include/wait_until_disconnected.inc
--connection default
if (`SELECT @@GLOBAL.binlog_format = 'STATEMENT'`)
{
--let $wait_binlog_event= DROP
--source include/wait_for_binlog_event.inc
}
--echo # Dump binlog to show that, either the generated DROP comes after tx
--echo # commit (stmt), or there is no trace of the XA txn and
--echo # the temp table (row or mixed)
--source include/show_binlog_events.inc
--echo #
--echo # Start XA txn and leave in XA_idle
XA START 'idle_when_drop_temp';
XA END 'idle_when_drop_temp';
--echo # Verify that explicit DROP TEMPORARY TABLE is rejected in XA_idle
--error ER_XAER_RMFAIL, ER_CLIENT_GTID_UNSAFE_CREATE_DROP_TEMP_TABLE_IN_TRX_IN_SBR
DROP TEMPORARY TABLE IF EXISTS t;
XA ROLLBACK 'idle_when_drop_temp';
# clean up the binary log at in the end of the test
# case as well.
RESET MASTER;
--echo #
--echo # BUG#28642318: POINT IN TIME RECOVERY USING MYSQLBINLOG BROKEN
--echo # WITH TEMPORARY TABLE -> ERRORS
--echo # Test case for DELETE query.
RESET MASTER;
connect (con1,localhost,root,,);
--echo # Set up.
--connection default
--disable_warnings
SET @save_binlog_format= @@session.binlog_format;
SET @@session.binlog_format=STATEMENT;
let $MYSQLD_DATADIR= `select @@datadir`;
CREATE TABLE t1 (a INT) ENGINE=INNODB;
--connection con1
SET @@session.binlog_format=STATEMENT;
CREATE TEMPORARY TABLE t1 (b BLOB) ENGINE=INNODB;
--connection default
DELETE d1, d2 FROM t1 AS d1, t1 AS d2 WHERE d1.a<>d2.a;
--exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/binlog.000001 > $MYSQLTEST_VARDIR/tmp/bug28642318.sql
--connection default
DROP TABLE t1;
--echo # DELETE query fails with table re-open error without patch.
--exec $MYSQL -e "SET SQL_LOG_BIN=0; SOURCE $MYSQLTEST_VARDIR/tmp/bug28642318.sql;"
--echo # Clean up.
--connection con1
DROP TABLE IF EXISTS t1;
--connection default
DROP TABLE IF EXISTS t1;
RESET MASTER;
--echo # Test case for DROP query.
--connection default
CREATE TABLE t1 (a INT) ENGINE=INNODB;
--connection con1
CREATE TEMPORARY TABLE t1 (b BLOB) ENGINE=INNODB;
--connection default
DROP TABLE t1;
--connection con1
DROP TABLE t1;
--connection default
--exec $MYSQL_BINLOG --force-if-open $MYSQLD_DATADIR/binlog.000001 > $MYSQLTEST_VARDIR/tmp/bug28642318.sql
--echo # DROP table query fails with unknown table error without patch.
--exec $MYSQL -e "SET SQL_LOG_BIN=0; SOURCE $MYSQLTEST_VARDIR/tmp/bug28642318.sql;"
--echo # Clean up
--connection default
SET @@session.binlog_format= @save_binlog_format;
RESET MASTER;
--remove_file $MYSQLTEST_VARDIR/tmp/bug28642318.sql
--disconnect con1
--enable_warnings
|