mirror of
https://github.com/MariaDB/server.git
synced 2025-07-24 19:42:23 +03:00
use include/have_xxx.inc when some feature needs to be present (because --xxx in the opt file will fail if the xxx is not compiled in) set variables in the test, not on the command line, to avoid unnecessary server restarts (they're must slower than SET).
77 lines
2.0 KiB
Plaintext
77 lines
2.0 KiB
Plaintext
--source include/have_partition.inc
|
|
--source suite/versioning/engines.inc
|
|
|
|
create table t (a int);
|
|
--error ER_VERS_NOT_VERSIONED
|
|
delete history from t before system_time now();
|
|
|
|
# TRUNCATE is not DELETE and trigger must not be called.
|
|
create or replace table t (a int) with system versioning;
|
|
insert into t values (1);
|
|
update t set a=2;
|
|
set @test = 'correct';
|
|
create trigger trg_before before delete on t for each row set @test = 'incorrect';
|
|
create trigger trg_after after delete on t for each row set @test = 'incorrect';
|
|
delete history from t;
|
|
select @test from t;
|
|
drop table t;
|
|
|
|
create table t (a int) with system versioning;
|
|
insert into t values (1), (2);
|
|
update t set a=11 where a=1;
|
|
--real_sleep 0.01
|
|
set @ts1=now(6);
|
|
--real_sleep 0.01
|
|
update t set a=22 where a=2;
|
|
select * from t for system_time all;
|
|
delete history from t before system_time timestamp @ts1;
|
|
select * from t for system_time all;
|
|
prepare stmt from 'delete history from t';
|
|
execute stmt; drop prepare stmt;
|
|
select * from t for system_time all;
|
|
delete from t;
|
|
|
|
delimiter ~~;
|
|
create or replace procedure truncate_sp()
|
|
begin
|
|
delete history from t before system_time timestamp now(6);
|
|
end~~
|
|
delimiter ;~~
|
|
call truncate_sp;
|
|
select * from t for system_time all;
|
|
|
|
drop procedure truncate_sp;
|
|
|
|
--echo # Truncate partitioned
|
|
create or replace table t (a int)
|
|
with system versioning
|
|
engine myisam
|
|
partition by system_time limit 1 (
|
|
partition p0 history,
|
|
partition p1 history,
|
|
partition pn current);
|
|
insert into t values (1);
|
|
update t set a= 2;
|
|
update t set a= 3;
|
|
delete history from t;
|
|
select * from t for system_time all;
|
|
|
|
--echo # VIEW
|
|
create or replace table t (i int) with system versioning;
|
|
delete history from t;
|
|
create or replace view v as select * from t;
|
|
--error ER_VERS_TRUNCATE_VIEW
|
|
delete history from v;
|
|
|
|
create or replace table t (i int);
|
|
--error ER_VERS_NOT_VERSIONED
|
|
delete history from t;
|
|
create or replace view v as select * from t;
|
|
--error ER_VERS_TRUNCATE_VIEW
|
|
delete history from v;
|
|
--error ER_VERS_NOT_VERSIONED
|
|
prepare stmt from 'delete history from t';
|
|
|
|
drop table t;
|
|
drop view v;
|