From 23f4e40839bd80d4309a41b21245f3d9c27a660b Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Mon, 26 Sep 2016 08:24:39 +0000 Subject: [PATCH] Tests: insert, update, delete for VTQ --- mysql-test/r/delete.result | 100 +++++++++++++++++++++++++++++++++++++ mysql-test/r/insert.result | 36 +++++++++++++ mysql-test/r/update.result | 6 +++ mysql-test/t/delete.opt | 1 + mysql-test/t/delete.test | 41 +++++++++++++++ mysql-test/t/insert.opt | 1 + mysql-test/t/insert.test | 23 +++++++++ mysql-test/t/update.opt | 1 + mysql-test/t/update.test | 5 ++ 9 files changed, 214 insertions(+) create mode 100644 mysql-test/t/delete.opt create mode 100644 mysql-test/t/insert.opt create mode 100644 mysql-test/t/update.opt diff --git a/mysql-test/r/delete.result b/mysql-test/r/delete.result index 1ee160b6864..ee1d7524541 100644 --- a/mysql-test/r/delete.result +++ b/mysql-test/r/delete.result @@ -611,3 +611,103 @@ XNo Sys_end < '2038-01-19 03:14:07' 9 1 DROP VIEW vt1; DROP TABLE t1; +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; +create table t1 ( +XNo INT UNSIGNED, +Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, +Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, +PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end) +) WITH SYSTEM VERSIONING ENGINE InnoDB; +INSERT INTO t1(XNo) VALUES(0); +INSERT INTO t1(XNo) VALUES(1); +INSERT INTO t1(XNo) VALUES(2); +INSERT INTO t1(XNo) VALUES(3); +INSERT INTO t1(XNo) VALUES(4); +INSERT INTO t1(XNo) VALUES(5); +INSERT INTO t1(XNo) VALUES(6); +INSERT INTO t1(XNo) VALUES(7); +INSERT INTO t1(XNo) VALUES(8); +INSERT INTO t1(XNo) VALUES(9); +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +XNo Sys_end < '2038-01-19 03:14:07' +0 0 +1 0 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +DELETE FROM t1 WHERE XNo = 0; +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +XNo Sys_end < '2038-01-19 03:14:07' +0 1 +1 0 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +DELETE FROM t1 WHERE XNo = 1; +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +XNo Sys_end < '2038-01-19 03:14:07' +0 1 +1 1 +2 0 +3 0 +4 0 +5 0 +6 0 +7 0 +8 0 +9 0 +DELETE FROM t1 WHERE XNo > 5; +CREATE VIEW vt1 AS SELECT XNo FROM t1; +SELECT XNo FROM vt1; +XNo +2 +3 +4 +5 +DELETE FROM vt1 WHERE XNo = 3; +SELECT XNo FROM vt1; +XNo +2 +4 +5 +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +XNo Sys_end < '2038-01-19 03:14:07' +0 1 +1 1 +2 0 +3 1 +4 0 +5 0 +6 1 +7 1 +8 1 +9 1 +DROP VIEW vt1; +DROP TABLE t1; +SET @i = 0; +SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; +No A B C D +1 1 1 1 1 +2 1 1 1 1 +3 1 1 1 1 +4 1 1 1 1 +5 1 1 1 1 +6 1 1 1 1 +7 1 1 1 1 +8 1 1 1 1 +9 1 1 1 1 +10 1 1 1 1 +11 1 1 1 1 +12 1 1 1 1 +13 1 1 1 1 +14 1 1 1 1 diff --git a/mysql-test/r/insert.result b/mysql-test/r/insert.result index 5837e1faa44..7c9776732c9 100644 --- a/mysql-test/r/insert.result +++ b/mysql-test/r/insert.result @@ -722,6 +722,7 @@ DROP TABLE t1; # # SET @@session.time_zone='+00:00'; +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; CREATE TABLE t1(x INT UNSIGNED, y INT UNSIGNED, Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end)) WITH SYSTEM VERSIONING; INSERT INTO t1(x, y) VALUES(3, 4); INSERT INTO t1(x, y) VALUES(2, 3); @@ -826,3 +827,38 @@ x y Sys_end DROP TABLE t1; DROP VIEW vt1_1; DROP VIEW vt1_2; +SET @i = 0; +SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; +No A B C D +1 1 1 1 1 +2 1 1 1 1 +3 1 1 1 1 +4 1 1 1 1 +5 1 1 1 1 +6 1 1 1 1 +7 1 1 1 1 +8 1 1 1 1 +9 1 1 1 1 +10 1 1 1 1 +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; +CREATE TABLE t1(x INT UNSIGNED, Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end)) WITH SYSTEM VERSIONING ENGINE=InnoDB; +CREATE TABLE t2(x INT UNSIGNED) ENGINE=InnoDB; +START TRANSACTION; +INSERT INTO t1(x) VALUES(1); +COMMIT; +SET @i = 0; +SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; +No A B C D +1 1 1 1 1 +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; +START TRANSACTION; +INSERT INTO t2(x) VALUES(1); +SAVEPOINT a; +INSERT INTO t1(x) VALUES(1); +ROLLBACK TO a; +COMMIT; +SET @i = 0; +SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; +No A B C D +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/r/update.result b/mysql-test/r/update.result index cab57d4ef3d..2933bb3b3ce 100644 --- a/mysql-test/r/update.result +++ b/mysql-test/r/update.result @@ -771,6 +771,7 @@ x y 8 8000 9 9000 DROP TABLE t1; +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; CREATE TABLE t1(x INT UNSIGNED, y INT UNSIGNED, Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end)) WITH SYSTEM VERSIONING ENGINE=InnoDB; INSERT INTO t1(x, y) VALUES (1, 1000), @@ -819,3 +820,8 @@ x y 8 8000 9 9000 DROP TABLE t1; +SET @i = 0; +SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; +No A B C D +1 1 1 1 1 +2 1 1 1 1 diff --git a/mysql-test/t/delete.opt b/mysql-test/t/delete.opt new file mode 100644 index 00000000000..32a25eea24f --- /dev/null +++ b/mysql-test/t/delete.opt @@ -0,0 +1 @@ +--loose-innodb-vtq diff --git a/mysql-test/t/delete.test b/mysql-test/t/delete.test index a91e6ddf82e..1832067e75c 100644 --- a/mysql-test/t/delete.test +++ b/mysql-test/t/delete.test @@ -626,3 +626,44 @@ SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIME DROP VIEW vt1; DROP TABLE t1; + +-- source include/have_innodb.inc + +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; + +create table t1 ( + XNo INT UNSIGNED, + Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, + Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, + PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end) +) WITH SYSTEM VERSIONING ENGINE InnoDB; + +INSERT INTO t1(XNo) VALUES(0); +INSERT INTO t1(XNo) VALUES(1); +INSERT INTO t1(XNo) VALUES(2); +INSERT INTO t1(XNo) VALUES(3); +INSERT INTO t1(XNo) VALUES(4); +INSERT INTO t1(XNo) VALUES(5); +INSERT INTO t1(XNo) VALUES(6); +INSERT INTO t1(XNo) VALUES(7); +INSERT INTO t1(XNo) VALUES(8); +INSERT INTO t1(XNo) VALUES(9); + +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +DELETE FROM t1 WHERE XNo = 0; +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +DELETE FROM t1 WHERE XNo = 1; +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; +DELETE FROM t1 WHERE XNo > 5; + +CREATE VIEW vt1 AS SELECT XNo FROM t1; + +SELECT XNo FROM vt1; +DELETE FROM vt1 WHERE XNo = 3; +SELECT XNo FROM vt1; +SELECT XNo, Sys_end < '2038-01-19 03:14:07' FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; + +DROP VIEW vt1; +DROP TABLE t1; + +SET @i = 0; SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; diff --git a/mysql-test/t/insert.opt b/mysql-test/t/insert.opt new file mode 100644 index 00000000000..32a25eea24f --- /dev/null +++ b/mysql-test/t/insert.opt @@ -0,0 +1 @@ +--loose-innodb-vtq diff --git a/mysql-test/t/insert.test b/mysql-test/t/insert.test index 7a4523a3f49..f806d450bcd 100644 --- a/mysql-test/t/insert.test +++ b/mysql-test/t/insert.test @@ -583,6 +583,7 @@ DROP TABLE t1; SET @@session.time_zone='+00:00'; +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; CREATE TABLE t1(x INT UNSIGNED, y INT UNSIGNED, Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end)) WITH SYSTEM VERSIONING; INSERT INTO t1(x, y) VALUES(3, 4); INSERT INTO t1(x, y) VALUES(2, 3); @@ -646,3 +647,25 @@ SELECT x, y, Sys_end FROM vt1_2; DROP TABLE t1; DROP VIEW vt1_1; DROP VIEW vt1_2; + +SET @i = 0; SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; + +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; +CREATE TABLE t1(x INT UNSIGNED, Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end)) WITH SYSTEM VERSIONING ENGINE=InnoDB; +CREATE TABLE t2(x INT UNSIGNED) ENGINE=InnoDB; +START TRANSACTION; +INSERT INTO t1(x) VALUES(1); +COMMIT; + +SET @i = 0; SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; + +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; +START TRANSACTION; +INSERT INTO t2(x) VALUES(1); +SAVEPOINT a; +INSERT INTO t1(x) VALUES(1); +ROLLBACK TO a; +COMMIT; +SET @i = 0; SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id; +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/t/update.opt b/mysql-test/t/update.opt new file mode 100644 index 00000000000..32a25eea24f --- /dev/null +++ b/mysql-test/t/update.opt @@ -0,0 +1 @@ +--loose-innodb-vtq diff --git a/mysql-test/t/update.test b/mysql-test/t/update.test index 5dfc623acc8..a1e96c88a6b 100644 --- a/mysql-test/t/update.test +++ b/mysql-test/t/update.test @@ -677,6 +677,9 @@ SELECT x, y FROM t1; SELECT x, y FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; DROP TABLE t1; +-- source include/have_innodb.inc + +select ifnull(max(trx_id), 0) into @start_trx_id from information_schema.innodb_vtq; CREATE TABLE t1(x INT UNSIGNED, y INT UNSIGNED, Sys_start TIMESTAMP(6) GENERATED ALWAYS AS ROW START, Sys_end TIMESTAMP(6) GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME (Sys_start, Sys_end)) WITH SYSTEM VERSIONING ENGINE=InnoDB; INSERT INTO t1(x, y) VALUES (1, 1000), @@ -693,3 +696,5 @@ UPDATE t1 SET y = y + 1 WHERE x > 7; SELECT x, y FROM t1; SELECT x, y FROM t1 FOR SYSTEM_TIME BETWEEN TIMESTAMP '0000-0-0 0:0:0' AND TIMESTAMP '2038-01-19 04:14:07'; DROP TABLE t1; + +SET @i = 0; SELECT @i:=@i+1 AS No, trx_id > 0 AS A, begin_ts > '2015-1-1 0:0:0' AS B, commit_ts > begin_ts AS C, concurr_trx IS NULL AS D FROM INFORMATION_SCHEMA.INNODB_VTQ WHERE trx_id > @start_trx_id;