call mtr.add_suppression("need more HISTORY partitions"); create table t (a int); delete history from t before system_time now(); ERROR HY000: Table `t` is not system-versioned create or replace table t ( a 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; 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; @test correct drop table t; create or replace table t ( a 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; insert into t values (1), (2); update t set a=11 where a=1; set @ts1=now(6); update t set a=22 where a=2; select * from t for system_time all; a 11 22 1 2 delete history from t before system_time timestamp @ts1; select * from t for system_time all; a 11 22 2 prepare stmt from 'delete history from t'; execute stmt; drop prepare stmt; select * from t for system_time all; a 11 22 delete from t; create or replace procedure truncate_sp() begin delete history from t before system_time timestamp now(6); end~~ call truncate_sp; select * from t for system_time all; a drop procedure truncate_sp; # Truncate partitioned create or replace table t (a int) with system versioning partition by system_time limit 1 partitions 3; insert into t values (1); update t set a= 2; update t set a= 3; delete history from t; Warnings: Warning 4114 Versioned table `test`.`t`: last HISTORY partition (`p1`) is out of LIMIT, need more HISTORY partitions # The above warning is one command late (MDEV-20345) ^^^ select * from t for system_time all; a 3 # VIEW create or replace table t ( i 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; delete history from t; create or replace view v as select * from t; delete history from v; ERROR 42S02: 'v' is a view create or replace table t (i int); delete history from t; ERROR HY000: Table `t` is not system-versioned create or replace view v as select * from t; delete history from v; ERROR 42S02: 'v' is a view prepare stmt from 'delete history from t'; ERROR HY000: Table `t` is not system-versioned drop table t; drop view v; create or replace table t (i int); create or replace view v as select * from t; drop table v; ERROR 42S02: 'test.v' is a view lock table v write; delete history from v before system_time now(6); ERROR 42S02: 'v' is a view unlock tables; drop view v; drop table t; create table t1 (i int) with system versioning; create procedure pr() delete history from t1 before system_time now(); call pr; call pr; drop procedure pr; drop table t1; # MDEV-15966 Behavior for TRUNCATE versioned table is not documented and not covered by tests create or replace table t1 (id int); create or replace table t2 (id int) with system versioning; # force cleaning table shares flush tables t1, t2; truncate table t1; truncate table t2; ERROR HY000: System-versioned tables do not support TRUNCATE TABLE # fetch table shares describe t1; Field Type Null Key Default Extra id int(11) YES NULL describe t2; Field Type Null Key Default Extra id int(11) YES NULL truncate table t1; truncate table t2; ERROR HY000: System-versioned tables do not support TRUNCATE TABLE # enter locked tables mode lock tables t1 WRITE, t2 WRITE; truncate t1; truncate t2; ERROR HY000: System-versioned tables do not support TRUNCATE TABLE unlock tables; drop table t2; # # MDEV-19814 Assertion `update->n_fields < ulint(table->n_cols + table->n_v_cols)' on DELETE HISTORY # create or replace table t1 ( f varchar(1), row_start SYS_TYPE as row start, row_end SYS_TYPE as row end, period for system_time (row_start, row_end)) with system versioning; insert into t1 (f) values ('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'), ('h'); delete from t1; delete history from t1; drop table t1; # # MDEV-20186 Wrong result or Assertion on INSERT after DELETE HISTORY # create or replace table t1 (a int check (a > 0)) with system versioning; delete history from t1; insert into t1 values (1); select * from t1; a 1 drop table t1; # # MDEV-25468 DELETE HISTORY may delete current data on system-versioned table # create or replace table t1 (x int) with system versioning; insert into t1 values (1); delete history from t1 before system_time '2039-01-01 23:00'; select * from t1; x 1 explain extended delete history from t1 before system_time '2039-01-01 23:00'; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 1 100.00 Using where create or replace procedure p() delete history from t1 before system_time '2039-01-01 23:00'; call p; select * from t1; x 1 call p; select * from t1; x 1 drop procedure p; prepare stmt from "delete history from t1 before system_time '2039-01-01 23:00'"; execute stmt; select * from t1; x 1 execute stmt; select * from t1; x 1 drop prepare stmt; drop table t1;