summaryrefslogtreecommitdiff
path: root/mysql-test/suite/versioning
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2023-01-03 17:08:42 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2023-01-03 17:08:42 +0200
commit8b9b4ab3f59f86e1c8f6cd6a0e6b8916db61933d (patch)
tree3e2c81b24b86a194243fe3e7913393e96de99991 /mysql-test/suite/versioning
parentc4938eafc594d6d64e5a17be13c337ada0beb63d (diff)
parentfb0808c450849e00993fa38839f33969a9daf7e8 (diff)
downloadmariadb-git-8b9b4ab3f59f86e1c8f6cd6a0e6b8916db61933d.tar.gz
Merge 10.4 into 10.5
Diffstat (limited to 'mysql-test/suite/versioning')
-rw-r--r--mysql-test/suite/versioning/r/alter.result5
-rw-r--r--mysql-test/suite/versioning/r/debug.result4
-rw-r--r--mysql-test/suite/versioning/r/delete.result1
-rw-r--r--mysql-test/suite/versioning/r/delete_history.result23
-rw-r--r--mysql-test/suite/versioning/r/foreign.result37
-rw-r--r--mysql-test/suite/versioning/t/alter.test2
-rw-r--r--mysql-test/suite/versioning/t/delete_history.test28
-rw-r--r--mysql-test/suite/versioning/t/foreign.test33
8 files changed, 130 insertions, 3 deletions
diff --git a/mysql-test/suite/versioning/r/alter.result b/mysql-test/suite/versioning/r/alter.result
index f92e530eacf..9751f7c718d 100644
--- a/mysql-test/suite/versioning/r/alter.result
+++ b/mysql-test/suite/versioning/r/alter.result
@@ -377,6 +377,11 @@ a b
2 NULL
3 1
4 2
+alter table t add c int, drop system versioning;
+select * from t;
+a b c
+3 1 NULL
+4 2 NULL
create or replace table t (a int) with system versioning;
insert into t values (1), (2), (3);
delete from t where a<3;
diff --git a/mysql-test/suite/versioning/r/debug.result b/mysql-test/suite/versioning/r/debug.result
index 4ea6c6202bc..3efddd40275 100644
--- a/mysql-test/suite/versioning/r/debug.result
+++ b/mysql-test/suite/versioning/r/debug.result
@@ -19,7 +19,7 @@ show create table tt2;
Table Create Table
tt2 CREATE TEMPORARY TABLE `tt2` (
`a` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci WITH SYSTEM VERSIONING
connect con1, localhost, root;
create table t3 (a int);
show create table t3;
@@ -32,7 +32,7 @@ show create table tt3;
Table Create Table
tt3 CREATE TEMPORARY TABLE `tt3` (
`a` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci WITH SYSTEM VERSIONING
disconnect con1;
connection default;
set debug_dbug='+d,sysvers_show';
diff --git a/mysql-test/suite/versioning/r/delete.result b/mysql-test/suite/versioning/r/delete.result
index 0f9e2c22130..6f8c8921790 100644
--- a/mysql-test/suite/versioning/r/delete.result
+++ b/mysql-test/suite/versioning/r/delete.result
@@ -146,6 +146,5 @@ delete from t1;
select f1, f3, check_row_ts(row_start, row_end) from t1 for system_time all;
f1 f3 check_row_ts(row_start, row_end)
1 1 HISTORICAL ROW
-1 NULL ERROR: row_end == row_start
1 1 HISTORICAL ROW
drop table t1;
diff --git a/mysql-test/suite/versioning/r/delete_history.result b/mysql-test/suite/versioning/r/delete_history.result
index a44342bd4cd..cf68536d4a6 100644
--- a/mysql-test/suite/versioning/r/delete_history.result
+++ b/mysql-test/suite/versioning/r/delete_history.result
@@ -1,3 +1,5 @@
+set @saved_frequency= @@global.innodb_purge_rseg_truncate_frequency;
+set global innodb_purge_rseg_truncate_frequency= 1;
call mtr.add_suppression("need more HISTORY partitions");
create table t (a int);
delete history from t before system_time now();
@@ -188,6 +190,26 @@ x
drop prepare stmt;
drop table t1;
#
+# MDEV-25004 Missing row in FTS_DOC_ID_INDEX during DELETE HISTORY
+#
+create table t1 (a integer, c0 varchar(255), fulltext key (c0))
+with system versioning engine innodb;
+set system_versioning_alter_history= keep;
+alter table t1 drop system versioning;
+alter table t1 add system versioning;
+insert into t1 values (1, 'politician');
+update t1 set c0= 'criminal';
+InnoDB 0 transactions not purged
+delete history from t1;
+drop table t1;
+create table t1 (id int primary key, ftx varchar(255))
+with system versioning engine innodb;
+insert into t1 values (1, 'c');
+delete from t1;
+alter table t1 add fulltext key(ftx);
+drop table t1;
+set global innodb_purge_rseg_truncate_frequency= @saved_frequency;
+#
# MDEV-28201 Server crashes upon SHOW ANALYZE/EXPLAIN FORMAT=JSON
#
CREATE TABLE t1 (a INT) WITH SYSTEM VERSIONING;
@@ -199,3 +221,4 @@ DELETE HISTORY FROM v1;
ERROR HY000: The target table v1 of the DELETE is not updatable
DROP VIEW v1;
DROP TABLE t1;
+# End of 10.4 tests
diff --git a/mysql-test/suite/versioning/r/foreign.result b/mysql-test/suite/versioning/r/foreign.result
index 3c8508507fd..8a779be760a 100644
--- a/mysql-test/suite/versioning/r/foreign.result
+++ b/mysql-test/suite/versioning/r/foreign.result
@@ -445,6 +445,43 @@ pk f1 f2 left(f3, 4) check_row_ts(row_start, row_end)
1 8 8 SHOR HISTORICAL ROW
2 8 8 LONG HISTORICAL ROW
drop table t1;
+# Shorter case for clustered index (MDEV-25004)
+create table t1 (
+y int primary key, r int, f int, key (r),
+foreign key (f) references t1 (r) on delete set null)
+with system versioning engine innodb;
+insert into t1 values (1, 6, 6), (2, 6, 6);
+delete from t1;
+select *, check_row_ts(row_start, row_end) from t1 for system_time all;
+y r f check_row_ts(row_start, row_end)
+1 6 6 HISTORICAL ROW
+2 6 6 HISTORICAL ROW
+drop tables t1;
+# Secondary unique index
+create table t1 (
+y int unique null, r int, f int, key (r),
+foreign key (f) references t1 (r) on delete set null)
+with system versioning engine innodb;
+insert into t1 values (1, 6, 6), (2, 6, 6);
+delete from t1;
+select *, check_row_ts(row_start, row_end) from t1 for system_time all;
+y r f check_row_ts(row_start, row_end)
+1 6 6 HISTORICAL ROW
+2 6 6 HISTORICAL ROW
+drop tables t1;
+# Non-unique index cannot be fixed because it does not trigger duplicate error
+create table t1 (
+y int, r int, f int, key (y), key (r),
+foreign key (f) references t1 (r) on delete set null)
+with system versioning engine innodb;
+insert into t1 values (1, 6, 6), (2, 6, 6);
+delete from t1;
+select *, check_row_ts(row_start, row_end) from t1 for system_time all;
+y r f check_row_ts(row_start, row_end)
+1 6 6 HISTORICAL ROW
+2 6 NULL ERROR: row_end == row_start
+2 6 6 HISTORICAL ROW
+drop tables t1;
#
# MDEV-21555 Assertion secondary index is out of sync on delete from versioned table
#
diff --git a/mysql-test/suite/versioning/t/alter.test b/mysql-test/suite/versioning/t/alter.test
index 85b61c8655e..a395f0cedb5 100644
--- a/mysql-test/suite/versioning/t/alter.test
+++ b/mysql-test/suite/versioning/t/alter.test
@@ -264,6 +264,8 @@ select * from t;
select * from t for system_time all;
insert into t values (4, 0);
select * from t for system_time all;
+alter table t add c int, drop system versioning;
+select * from t;
create or replace table t (a int) with system versioning;
insert into t values (1), (2), (3);
diff --git a/mysql-test/suite/versioning/t/delete_history.test b/mysql-test/suite/versioning/t/delete_history.test
index 535e6a0c3fe..042670bcfec 100644
--- a/mysql-test/suite/versioning/t/delete_history.test
+++ b/mysql-test/suite/versioning/t/delete_history.test
@@ -2,6 +2,9 @@
--source include/have_partition.inc
--source suite/versioning/engines.inc
+set @saved_frequency= @@global.innodb_purge_rseg_truncate_frequency;
+set global innodb_purge_rseg_truncate_frequency= 1;
+
call mtr.add_suppression("need more HISTORY partitions");
create table t (a int);
@@ -192,6 +195,29 @@ drop prepare stmt;
drop table t1;
--echo #
+--echo # MDEV-25004 Missing row in FTS_DOC_ID_INDEX during DELETE HISTORY
+--echo #
+create table t1 (a integer, c0 varchar(255), fulltext key (c0))
+with system versioning engine innodb;
+set system_versioning_alter_history= keep;
+alter table t1 drop system versioning;
+alter table t1 add system versioning;
+insert into t1 values (1, 'politician');
+update t1 set c0= 'criminal';
+--source suite/innodb/include/wait_all_purged.inc
+delete history from t1;
+drop table t1;
+
+create table t1 (id int primary key, ftx varchar(255))
+with system versioning engine innodb;
+insert into t1 values (1, 'c');
+delete from t1;
+alter table t1 add fulltext key(ftx);
+drop table t1;
+
+set global innodb_purge_rseg_truncate_frequency= @saved_frequency;
+
+--echo #
--echo # MDEV-28201 Server crashes upon SHOW ANALYZE/EXPLAIN FORMAT=JSON
--echo #
CREATE TABLE t1 (a INT) WITH SYSTEM VERSIONING;
@@ -204,4 +230,6 @@ DELETE HISTORY FROM v1;
DROP VIEW v1;
DROP TABLE t1;
+--echo # End of 10.4 tests
+
--source suite/versioning/common_finish.inc
diff --git a/mysql-test/suite/versioning/t/foreign.test b/mysql-test/suite/versioning/t/foreign.test
index 441491e461f..a354489521c 100644
--- a/mysql-test/suite/versioning/t/foreign.test
+++ b/mysql-test/suite/versioning/t/foreign.test
@@ -476,6 +476,39 @@ select pk, f1, f2, left(f3, 4), check_row_ts(row_start, row_end) from t1 for sys
# cleanup
drop table t1;
+--echo # Shorter case for clustered index (MDEV-25004)
+create table t1 (
+ y int primary key, r int, f int, key (r),
+ foreign key (f) references t1 (r) on delete set null)
+with system versioning engine innodb;
+
+insert into t1 values (1, 6, 6), (2, 6, 6);
+delete from t1;
+select *, check_row_ts(row_start, row_end) from t1 for system_time all;
+drop tables t1;
+
+--echo # Secondary unique index
+create table t1 (
+ y int unique null, r int, f int, key (r),
+ foreign key (f) references t1 (r) on delete set null)
+with system versioning engine innodb;
+
+insert into t1 values (1, 6, 6), (2, 6, 6);
+delete from t1;
+select *, check_row_ts(row_start, row_end) from t1 for system_time all;
+drop tables t1;
+
+--echo # Non-unique index cannot be fixed because it does not trigger duplicate error
+create table t1 (
+ y int, r int, f int, key (y), key (r),
+ foreign key (f) references t1 (r) on delete set null)
+with system versioning engine innodb;
+
+insert into t1 values (1, 6, 6), (2, 6, 6);
+delete from t1;
+select *, check_row_ts(row_start, row_end) from t1 for system_time all;
+drop tables t1;
+
--echo #
--echo # MDEV-21555 Assertion secondary index is out of sync on delete from versioned table
--echo #