mariadb/mysql-test/suite/versioning/t/delete.test

130 lines
3.9 KiB
Text
Raw Normal View History

-- source suite/versioning/common.inc
delimiter ~~;
create or replace procedure test_01(
sys_type varchar(255),
engine varchar(255),
fields varchar(255))
begin
set @str= concat('
create or replace table t1(
XNo int unsigned,
sys_start ', sys_type, ' as row start invisible,
sys_end ', sys_type, ' as row end invisible,
period for system_time (sys_start, sys_end))
with system versioning
engine ', engine);
prepare stmt from @str; execute stmt; drop prepare stmt;
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);
set @str= concat('select XNo, ',
fields, " < '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'");
prepare stmt from @str; execute stmt;
delete from t1 where XNo = 0;
2017-10-22 22:20:43 +03:00
select "Deleted 0";
execute stmt;
delete from t1 where XNo = 1;
2017-10-22 22:20:43 +03:00
select "Deleted 1";
execute stmt;
delete from t1 where XNo > 5;
2017-10-22 22:20:43 +03:00
select "Deleted >5";
create view vt1 as select XNo from t1;
2017-10-22 22:20:43 +03:00
select XNo as XNo_vt1 from vt1;
delete from vt1 where XNo = 3;
2017-10-22 22:20:43 +03:00
select "Deleted from VIEW 3";
select XNo as XNo_vt1 from vt1;
execute stmt; drop prepare stmt;
drop view vt1;
drop table t1;
end~~
create or replace procedure test_02(
sys_type varchar(255),
engine varchar(255),
fields varchar(255))
begin
set @str= concat('create or replace table t1 (
x int,
sys_start ', sys_type, ' as row start invisible,
sys_end ', sys_type, ' as row end invisible,
period for system_time (sys_start, sys_end))
with system versioning
engine ', engine);
prepare stmt from @str; execute stmt; drop prepare stmt;
insert into t1(x) values (1);
select sys_start into @sys_start from t1;
delete from t1;
select * from t1;
select x = 1 as A, sys_start = @sys_start as B, sys_end > sys_start as C
from t1 for system_time all;
drop table t1;
end~~
create or replace procedure test_03(
sys_type varchar(255),
engine varchar(255),
fields varchar(255))
begin
set @str0= concat('(
x int,
y int,
sys_start ', sys_type, ' as row start invisible,
sys_end ', sys_type, ' as row end invisible,
period for system_time (sys_start, sys_end))
with system versioning
engine ', engine);
set @str= concat('create or replace table t1', @str0);
prepare stmt from @str; execute stmt; drop prepare stmt;
set @str= concat('create or replace table t2', @str0);
prepare stmt from @str; execute stmt; drop prepare stmt;
insert into t1(x, y) values (1, 1), (2, 2), (3, 3), (14, 4);
insert into t2(x, y) values (11, 1), (12, 2), (13, 32), (14, 4);
delete t1, t2 from t1 join t2 where t1.y = 3 and t2.y = 32;
select x as t1_x from t1;
select x as t2_x from t2;
delete t1, t2 from t1 join t2 where t1.x = t2.x;
select x as t1_x from t1;
select x as t2_x from t2;
select x as t1_x_all from t1 for system_time all;
select x as t2_x_all from t2 for system_time all;
drop table t1;
drop table t2;
end~~
delimiter ;~~
--echo # Basic + delete from view
call test_01('timestamp(6)', 'myisam', 'sys_end');
call test_01('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
call verify_vtq;
--echo # Check sys_start, sys_end
call test_02('timestamp(6)', 'myisam', 'sys_end');
call test_02('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
call verify_vtq;
--echo # Multi-delete
call test_03('timestamp(6)', 'myisam', 'sys_end');
call test_03('bigint unsigned', 'innodb', 'vtq_commit_ts(sys_end)');
call verify_vtq;
2017-10-22 22:20:43 +03:00
--echo # Update + delete
create or replace table t1 (x int) with system versioning;
insert into t1 values (1);
update t1 set x= 2;
delete from t1;
select x from t1 for system_time all;
2017-10-22 22:20:43 +03:00
drop database test;
create database test;