mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
106 lines
3 KiB
Text
106 lines
3 KiB
Text
create or replace table t1 (
|
|
x int,
|
|
row_start SYS_TYPE as row start invisible,
|
|
row_end SYS_TYPE as row end invisible,
|
|
period for system_time (row_start, row_end))
|
|
with system versioning;
|
|
create or replace table tf engine=FEDERATED connection='mysql://root@127.0.0.1:MASTER_MYPORT/test/t1';
|
|
show create table tf;
|
|
Table Create Table
|
|
tf CREATE TABLE `tf` (
|
|
`x` int(11) DEFAULT NULL,
|
|
`row_start` SYS_TYPE INVISIBLE DEFAULT '1971-01-01 00:00:00.000000',
|
|
`row_end` SYS_TYPE INVISIBLE DEFAULT '1971-01-01 00:00:00.000000'
|
|
) ENGINE=FEDERATED DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci CONNECTION='mysql://root@127.0.0.1:MASTER_MYPORT/test/t1'
|
|
# INSERT
|
|
insert into t1 values (1);
|
|
select * from tf;
|
|
x
|
|
1
|
|
insert into tf (x) values (2);
|
|
select * from t1;
|
|
x
|
|
1
|
|
2
|
|
select * from tf;
|
|
x
|
|
1
|
|
2
|
|
# UPDATE
|
|
update tf set x= x + 2;
|
|
select *, check_row(row_start, row_end) from t1 for system_time all
|
|
order by x;
|
|
x check_row(row_start, row_end)
|
|
1 HISTORICAL ROW
|
|
2 HISTORICAL ROW
|
|
3 CURRENT ROW
|
|
4 CURRENT ROW
|
|
# DELETE
|
|
delete from tf;
|
|
select *, check_row(row_start, row_end) from t1 for system_time all
|
|
order by x;
|
|
x check_row(row_start, row_end)
|
|
1 HISTORICAL ROW
|
|
2 HISTORICAL ROW
|
|
3 HISTORICAL ROW
|
|
4 HISTORICAL ROW
|
|
select * from tf;
|
|
x
|
|
# MDEV-15966: Behavior for TRUNCATE versioned table is not documented
|
|
# and not covered by tests
|
|
# As of standard, TRUNCATE on versioned tables is forbidden
|
|
truncate tf;
|
|
ERROR HY000: Got error 10000 'Error on remote system: 4137: System-versioned tables do not support TRUNCATE TABLE' from FEDERATED
|
|
delete history from t1;
|
|
select * from t1 for system_time all;
|
|
x
|
|
# REPLACE
|
|
create or replace table t2 (
|
|
id int primary key, y int,
|
|
row_start SYS_TYPE as row start invisible,
|
|
row_end SYS_TYPE as row end invisible,
|
|
period for system_time (row_start, row_end))
|
|
with system versioning;
|
|
create or replace table t2f engine=FEDERATED connection='mysql://root@127.0.0.1:MASTER_MYPORT/test/t2';
|
|
insert t2f (id, y) values (1, 2);
|
|
replace t2f (id, y) values (1, 3);
|
|
select *, check_row(row_start, row_end) from t2 for system_time all
|
|
order by y;
|
|
id y check_row(row_start, row_end)
|
|
1 2 HISTORICAL ROW
|
|
1 3 CURRENT ROW
|
|
# VIEW
|
|
create or replace view vt1 as select * from tf;
|
|
insert into vt1 values (3);
|
|
update vt1 set x= x + 1;
|
|
select *, check_row(row_start, row_end) from t1 for system_time all
|
|
order by x;
|
|
x check_row(row_start, row_end)
|
|
3 HISTORICAL ROW
|
|
4 CURRENT ROW
|
|
delete from vt1;
|
|
select *, check_row(row_start, row_end) from t1 for system_time all
|
|
order by x;
|
|
x check_row(row_start, row_end)
|
|
3 HISTORICAL ROW
|
|
4 HISTORICAL ROW
|
|
# multi-UPDATE
|
|
delete from t1;
|
|
delete history from t1;
|
|
delete from t2;
|
|
delete history from t2;
|
|
insert into t1 values (1);
|
|
insert into t2 values (2, 2);
|
|
update tf, t2f set tf.x= 11, t2f.y= 22;
|
|
select *, check_row(row_start, row_end) from t1 for system_time all
|
|
order by x;
|
|
x check_row(row_start, row_end)
|
|
1 HISTORICAL ROW
|
|
11 CURRENT ROW
|
|
select *, check_row(row_start, row_end) from t2 for system_time all
|
|
order by y;
|
|
id y check_row(row_start, row_end)
|
|
2 2 HISTORICAL ROW
|
|
2 22 CURRENT ROW
|
|
drop view vt1;
|
|
drop tables t1, t2, t2f, tf;
|