mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
92 lines
2.7 KiB
Text
92 lines
2.7 KiB
Text
delimiter ~~;
|
|
create or replace procedure drop_archives (in vtmd_name varchar(64))
|
|
begin
|
|
declare archive_name varchar(64);
|
|
declare cur_done bool default false;
|
|
declare cur cursor for
|
|
select cur_tmp.archive_name from cur_tmp;
|
|
declare continue handler for not found set cur_done = true;
|
|
|
|
set @tmp= concat('
|
|
create or replace temporary table
|
|
cur_tmp as
|
|
select vtmd.archive_name from ', vtmd_name, ' as vtmd
|
|
for system_time all
|
|
where vtmd.archive_name is not null
|
|
group by vtmd.archive_name');
|
|
prepare stmt from @tmp; execute stmt; drop prepare stmt;
|
|
|
|
open cur;
|
|
fetch_loop: loop
|
|
fetch cur into archive_name;
|
|
if cur_done then
|
|
leave fetch_loop;
|
|
end if;
|
|
set @tmp= concat('drop table ', archive_name);
|
|
prepare stmt from @tmp; execute stmt; drop prepare stmt;
|
|
end loop;
|
|
|
|
drop table cur_tmp;
|
|
end~~
|
|
delimiter ;~~
|
|
|
|
delimiter ~~;
|
|
create procedure test_01(in engine varchar(64))
|
|
begin
|
|
set @tmp = concat('create table t (a int) with system versioning engine ', engine);
|
|
prepare stmt from @tmp; execute stmt; drop prepare stmt;
|
|
|
|
set @tm1 = now(6);
|
|
alter table t add column b int;
|
|
|
|
set @tm2 = now(6);
|
|
alter table t add column c int;
|
|
|
|
show create table t for system_time as of timestamp @tm1;
|
|
show create table t for system_time as of timestamp @tm2;
|
|
show create table t for system_time as of now;
|
|
show create table t for system_time as of timestamp now(6);
|
|
show create table t;
|
|
|
|
set @tm3 = now(6);
|
|
rename table t to tt;
|
|
show create table tt for system_time as of timestamp @tm3;
|
|
|
|
set @tm4 = now(6);
|
|
alter table tt add column d int;
|
|
show create table tt for system_time as of timestamp @tm3;
|
|
show create table tt for system_time as of timestamp @tm4;
|
|
show create table tt;
|
|
|
|
drop table tt;
|
|
call drop_archives('tt_vtmd');
|
|
drop table tt_vtmd;
|
|
end~~
|
|
delimiter ;~~
|
|
|
|
create table t (a int) with system versioning;
|
|
--error ER_NO_SUCH_TABLE
|
|
show create table t for system_time as of now;
|
|
|
|
set versioning_ddl_survival=on;
|
|
|
|
create or replace table t (a int) with system versioning;
|
|
--error ER_VERS_RANGE_PROHIBITED
|
|
show create table t for system_time between timestamp @tm1 and timestamp @tm1;
|
|
--error ER_VERS_RANGE_PROHIBITED
|
|
show create table t for system_time from timestamp @tm1 to timestamp @tm1;
|
|
--error ER_VERS_RANGE_PROHIBITED
|
|
show create table t for system_time before timestamp @tm1;
|
|
--error ER_VERS_VTMD_ERROR
|
|
show create table t for system_time as of timestamp '01-01-1990';
|
|
--error ER_VERS_VTMD_ERROR
|
|
show create table t for system_time as of timestamp '01-01-2020';
|
|
drop table t;
|
|
call drop_archives('t_vtmd');
|
|
drop table t_vtmd;
|
|
|
|
call test_01('myisam');
|
|
call test_01('innodb');
|
|
|
|
drop procedure test_01;
|
|
drop procedure drop_archives;
|