--source suite/versioning/common.inc --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. --replace_result $sys_datatype_expl SYS_TYPE eval create or replace table t ( a int, row_start $sys_datatype_expl as row start invisible, row_end $sys_datatype_expl 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; drop table t; --replace_result $sys_datatype_expl SYS_TYPE eval create or replace table t ( a int, row_start $sys_datatype_expl as row start invisible, row_end $sys_datatype_expl 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; --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 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 --replace_result $sys_datatype_expl SYS_TYPE eval create or replace table t ( i int, row_start $sys_datatype_expl as row start invisible, row_end $sys_datatype_expl 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; --error ER_IT_IS_A_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_IT_IS_A_VIEW delete history from v; --error ER_VERS_NOT_VERSIONED prepare stmt from 'delete history from t'; drop table t; drop view v; # # MDEV-15402 Assertion `table' failed in mysql_delete on attempt to delete history from view # create or replace table t (i int); create or replace view v as select * from t; --error ER_IT_IS_A_VIEW drop table v; lock table v write; --error ER_IT_IS_A_VIEW delete history from v before system_time now(6); unlock tables; drop view v; drop table t; # # MDEV-16783 Assertion `!conds' failed in mysql_delete upon 2nd execution of SP with DELETE HISTORY # 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; --echo # --echo # MDEV-19814 Assertion `update->n_fields < ulint(table->n_cols + table->n_v_cols)' on DELETE HISTORY --echo # --replace_result $sys_datatype_expl SYS_TYPE eval create or replace table t1 ( f varchar(1), row_start $sys_datatype_expl as row start, row_end $sys_datatype_expl 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 database test; create database test;