-
Notifications
You must be signed in to change notification settings - Fork 4k
/
Copy pathenforce_gtid_consistency_tmp_consistent.test
112 lines (87 loc) · 3.71 KB
/
enforce_gtid_consistency_tmp_consistent.test
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
--let $error_code= 0
--let $statement_ends_transaction= 1
--let $gtid_violation= 0
--let $sync_point= before_execute_sql_command
# When CREATE TEMPORARY and DROP TEMPORARY occur *outside* a
# transaction, it is GTID-consistent.
--echo ---- CREATE TEMPORARY outside trx ----
--let $statement= CREATE TEMPORARY TABLE t1 (a INT) ENGINE = InnoDB
--source common/binlog/enforce_gtid_consistency_statement.inc
--echo ---- DROP TEMPORARY outside trx ----
--let $statement= DROP TEMPORARY TABLE t1
--source common/binlog/enforce_gtid_consistency_statement.inc
# ALTER is always GTID-consistent. In fact, ALTER TEMPORARY does not
# exist. ALTER without the TEMPORARY keyword can operate on a
# temporary table, but even then it has an implicit commit.
if ($gtid_next != GTID)
{
--echo ---- ALTER without TEMPORARY, on temp table, in trx ----
# If gtid_next=GTID, it generates
# ER_CANT_DO_IMPLICIT_COMMIT_IN_TRX_WHEN_GTID_NEXT_IS_SET.
CREATE TEMPORARY TABLE t1 (a INT) ENGINE = InnoDB;
--let $pre_statement= BEGIN
--let $statement= ALTER TABLE t1 ADD COLUMN (b INT)
--source common/binlog/enforce_gtid_consistency_statement.inc
# DROP without TEMPORARY is always GTID-consistent, since it has an
# implicit commit even if it operates on a temporary table.
--echo ---- DROP without TEMPORARY, on temp table ----
--let $pre_statement= BEGIN
--let $statement= DROP TABLE t1
--source common/binlog/enforce_gtid_consistency_statement.inc
--let $gtid_violation= 0
DROP TABLE IF EXISTS t1; # May still exist if gtid_violation=1.
# When SQL_LOG_BIN=0, it is GTID-consistent since nothing is logged.
}
SET SQL_LOG_BIN = 0;
--echo ---- CREATE TEMPORARY in trx, SQL_LOG_BIN=0 (InnoDB, BEGIN) ----
--let $pre_statement= BEGIN
--let $statement= CREATE TEMPORARY TABLE t1 (a INT) ENGINE = InnoDB
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
DROP TEMPORARY TABLE t1;
--echo ---- CREATE TEMPORARY in trx, SQL_LOG_BIN=0 (MyISAM, BEGIN) ----
--let $pre_statement= BEGIN
--let $statement= CREATE TEMPORARY TABLE t1 (a INT) ENGINE = MyISAM
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
DROP TEMPORARY TABLE t1;
SET AUTOCOMMIT = 0;
--echo ---- CREATE TEMPORARY in trx, SQL_LOG_BIN=0 (InnoDB, AUTOCOMMIT=0) ----
--let $statement= CREATE TEMPORARY TABLE t1 (a INT) ENGINE = InnoDB
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
DROP TEMPORARY TABLE t1;
COMMIT;
--echo ---- CREATE TEMPORARY in trx, SQL_LOG_BIN=0 (MyISAM, AUTOCOMMIT=0) ----
--let $statement= CREATE TEMPORARY TABLE t1 (a INT) ENGINE = MyISAM
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
DROP TEMPORARY TABLE t1;
SET AUTOCOMMIT = 1;
--echo ---- DROP TEMPORARY in trx, SQL_LOG_BIN=0 (InnoDB, BEGIN) ----
CREATE TEMPORARY TABLE t1 (a INT) ENGINE = InnoDB;
--let $pre_statement= BEGIN
--let $statement= DROP TEMPORARY TABLE t1
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
--echo ---- DROP TEMPORARY in trx, SQL_LOG_BIN=0 (MyISAM, BEGIN) ----
CREATE TEMPORARY TABLE t1 (a INT) ENGINE = MyISAM;
--let $pre_statement= BEGIN
--let $statement= DROP TEMPORARY TABLE t1
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
SET AUTOCOMMIT = 0;
--echo ---- DROP TEMPORARY in trx, SQL_LOG_BIN=0 (InnoDB, AUTOCOMMIT=0) ----
CREATE TEMPORARY TABLE t1 (a INT) ENGINE = InnoDB;
COMMIT;
--let $statement= DROP TEMPORARY TABLE t1
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
--echo ---- DROP TEMPORARY in trx, SQL_LOG_BIN=0 (MyISAM, AUTOCOMMIT=0) ----
CREATE TEMPORARY TABLE t1 (a INT) ENGINE = MyISAM;
COMMIT;
--let $statement= DROP TEMPORARY TABLE t1
--source common/binlog/enforce_gtid_consistency_statement.inc
COMMIT;
SET AUTOCOMMIT = 1;
SET SQL_LOG_BIN = 1;