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
|
--source include/have_debug.inc
--source include/have_partition.inc
--let $datadir=`select @@datadir`
create table t1 (a int);
show create table t1;
--error ER_VERS_NOT_SUPPORTED
create temporary table tt1 (a int) with system versioning;
set @old_dbug=@@global.debug_dbug;
set global debug_dbug='+d,sysvers_force';
create table t2 (a int);
show create table t2;
create temporary table tt2 (a int) with system versioning;
show create table tt2;
--connect con1, localhost, root
create table t3 (a int);
show create table t3;
create temporary table tt3 (a int) with system versioning;
show create table tt3;
--disconnect con1
--connection default
set debug_dbug='+d,sysvers_show';
show create table t3;
create table t4 (a int);
show create table t4;
drop table t1, t2, t3, t4;
set debug_dbug= @old_dbug;
set global debug_dbug= @old_dbug;
--echo #
--echo # MDEV-19525 remove ER_VERS_FIELD_WRONG_TYPE from init_from_binary_frm_image()
--echo #
create table t1 (x int) with system versioning;
set debug_dbug='+d,error_vers_wrong_type';
--replace_result $datadir ./
--error ER_NOT_FORM_FILE
show create table t1;
--replace_result $datadir ./
show warnings;
drop table t1;
set debug_dbug= @old_dbug;
--echo #
--echo # MDEV-17554 Auto-create new partition for system versioned tables
--echo # with history partitioned by INTERVAL/LIMIT
--echo #
call mtr.add_suppression("need more HISTORY partitions");
create or replace table t1 (x int) with system versioning
partition by system_time limit 1 auto partitions 2;
insert into t1 values (1);
update t1 set x= x + 1;
--connect con2, localhost, root
--connect con1, localhost, root
--disable_warnings
--echo # Both threads create partition simultaneously
--connection con1
set debug_sync= 'add_history_partition signal s1 wait_for s2';
send update t1 set x= x + 10;
--connection con2
set debug_sync= 'now wait_for s1';
flush tables t1;
set debug_sync= 'add_history_partition signal s2';
update t1 set x= x + 20;
--connection con1
reap;
--connection default
# 1 or 2 history rows may be created depending on which UPDATE finishes first (MDEV-28459)
# select partition_name, table_rows from information_schema.partitions
# where table_name = 't1';
# Fill empty partition for next UPDATE to trigger auto-create
update t1 set x= x + 2;
--echo # Second thread skips to reopen 3 times until first thread creates partition
--connection con1
set debug_sync= 'add_history_partition SIGNAL s1 WAIT_FOR s2';
send update t1 set x= x + 30;
--connection con2
set debug_sync= 'now WAIT_FOR s1';
set debug_sync= 'reopen_history_partition SIGNAL s2 EXECUTE 3';
update t1 set x= x + 40;
--connection con1
reap;
--connection default
# Same here (MDEV-28459)
# select partition_name, table_rows from information_schema.partitions
# where table_name = 't1';
--enable_warnings
--disconnect con1
--disconnect con2
set @@timestamp= default;
drop tables t1;
set debug_sync= 'reset';
|