1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-24 19:42:23 +03:00
Files
mariadb/mysql-test/suite/versioning/t/truncate.test
Sergei Golubchik f38ef43013 cleanup: remove *.opt files from the versioning suite
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).
2018-02-23 15:33:23 +01:00

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;