mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Parser: default SYSTEM_TIME ALL for DELETE HISTORY
This commit is contained in:
@ -7,7 +7,7 @@ update t set a=2;
|
|||||||
set @test = 'correct';
|
set @test = 'correct';
|
||||||
create trigger trg_before before delete on t for each row set @test = 'incorrect';
|
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';
|
create trigger trg_after after delete on t for each row set @test = 'incorrect';
|
||||||
delete history from t before system_time now(6);
|
delete history from t;
|
||||||
select @test from t;
|
select @test from t;
|
||||||
@test
|
@test
|
||||||
correct
|
correct
|
||||||
@ -29,7 +29,7 @@ a
|
|||||||
11
|
11
|
||||||
22
|
22
|
||||||
2
|
2
|
||||||
prepare stmt from 'delete history from t before system_time timestamp now(6)';
|
prepare stmt from 'delete history from t';
|
||||||
execute stmt;
|
execute stmt;
|
||||||
drop prepare stmt;
|
drop prepare stmt;
|
||||||
select * from t for system_time all;
|
select * from t for system_time all;
|
||||||
@ -52,20 +52,20 @@ engine myisam
|
|||||||
partition by system_time (
|
partition by system_time (
|
||||||
partition p0 history,
|
partition p0 history,
|
||||||
partition pn current);
|
partition pn current);
|
||||||
delete history from t before system_time current_timestamp;
|
delete history from t;
|
||||||
ERROR 42000: The used command is not allowed with this MariaDB version
|
ERROR 42000: The used command is not allowed with this MariaDB version
|
||||||
create or replace table t (i int) with system versioning;
|
create or replace table t (i int) with system versioning;
|
||||||
delete history from t before system_time now();
|
delete history from t;
|
||||||
create or replace view v as select * from t;
|
create or replace view v as select * from t;
|
||||||
delete history from v before system_time now();
|
delete history from v;
|
||||||
ERROR HY000: DELETE HISTORY from VIEW is prohibited
|
ERROR HY000: DELETE HISTORY from VIEW is prohibited
|
||||||
create or replace table t (i int);
|
create or replace table t (i int);
|
||||||
delete history from t before system_time now();
|
delete history from t;
|
||||||
ERROR HY000: Table `t` is not system-versioned
|
ERROR HY000: Table `t` is not system-versioned
|
||||||
create or replace view v as select * from t;
|
create or replace view v as select * from t;
|
||||||
delete history from v before system_time now();
|
delete history from v;
|
||||||
ERROR HY000: DELETE HISTORY from VIEW is prohibited
|
ERROR HY000: DELETE HISTORY from VIEW is prohibited
|
||||||
prepare stmt from 'delete history from t before system_time now()';
|
prepare stmt from 'delete history from t';
|
||||||
ERROR HY000: Table `t` is not system-versioned
|
ERROR HY000: Table `t` is not system-versioned
|
||||||
drop table t;
|
drop table t;
|
||||||
drop view v;
|
drop view v;
|
||||||
|
@ -11,7 +11,7 @@ update t set a=2;
|
|||||||
set @test = 'correct';
|
set @test = 'correct';
|
||||||
create trigger trg_before before delete on t for each row set @test = 'incorrect';
|
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';
|
create trigger trg_after after delete on t for each row set @test = 'incorrect';
|
||||||
delete history from t before system_time now(6);
|
delete history from t;
|
||||||
select @test from t;
|
select @test from t;
|
||||||
drop table t;
|
drop table t;
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ update t set a=22 where a=2;
|
|||||||
select * from t for system_time all;
|
select * from t for system_time all;
|
||||||
delete history from t before system_time timestamp @ts1;
|
delete history from t before system_time timestamp @ts1;
|
||||||
select * from t for system_time all;
|
select * from t for system_time all;
|
||||||
prepare stmt from 'delete history from t before system_time timestamp now(6)';
|
prepare stmt from 'delete history from t';
|
||||||
execute stmt; drop prepare stmt;
|
execute stmt; drop prepare stmt;
|
||||||
select * from t for system_time all;
|
select * from t for system_time all;
|
||||||
delete from t;
|
delete from t;
|
||||||
@ -51,22 +51,22 @@ partition by system_time (
|
|||||||
partition pn current);
|
partition pn current);
|
||||||
|
|
||||||
--error ER_NOT_ALLOWED_COMMAND
|
--error ER_NOT_ALLOWED_COMMAND
|
||||||
delete history from t before system_time current_timestamp;
|
delete history from t;
|
||||||
|
|
||||||
create or replace table t (i int) with system versioning;
|
create or replace table t (i int) with system versioning;
|
||||||
delete history from t before system_time now();
|
delete history from t;
|
||||||
create or replace view v as select * from t;
|
create or replace view v as select * from t;
|
||||||
--error ER_VERS_TRUNCATE_VIEW
|
--error ER_VERS_TRUNCATE_VIEW
|
||||||
delete history from v before system_time now();
|
delete history from v;
|
||||||
|
|
||||||
create or replace table t (i int);
|
create or replace table t (i int);
|
||||||
--error ER_VERS_NOT_VERSIONED
|
--error ER_VERS_NOT_VERSIONED
|
||||||
delete history from t before system_time now();
|
delete history from t;
|
||||||
create or replace view v as select * from t;
|
create or replace view v as select * from t;
|
||||||
--error ER_VERS_TRUNCATE_VIEW
|
--error ER_VERS_TRUNCATE_VIEW
|
||||||
delete history from v before system_time now();
|
delete history from v;
|
||||||
--error ER_VERS_NOT_VERSIONED
|
--error ER_VERS_NOT_VERSIONED
|
||||||
prepare stmt from 'delete history from t before system_time now()';
|
prepare stmt from 'delete history from t';
|
||||||
|
|
||||||
drop table t;
|
drop table t;
|
||||||
drop view v;
|
drop view v;
|
||||||
|
@ -13406,12 +13406,21 @@ delete:
|
|||||||
delete_part2
|
delete_part2
|
||||||
;
|
;
|
||||||
|
|
||||||
|
opt_delete_system_time:
|
||||||
|
/* empty */
|
||||||
|
{
|
||||||
|
Lex->vers_conditions.init(SYSTEM_TIME_ALL);
|
||||||
|
}
|
||||||
|
| BEFORE_SYM SYSTEM_TIME_SYM opt_trans_or_timestamp simple_expr
|
||||||
|
{
|
||||||
|
Lex->vers_conditions.init(SYSTEM_TIME_BEFORE, $3, $4);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
delete_part2:
|
delete_part2:
|
||||||
opt_delete_options single_multi {}
|
opt_delete_options single_multi {}
|
||||||
| HISTORY_SYM delete_single_table
|
| HISTORY_SYM delete_single_table opt_delete_system_time
|
||||||
BEFORE_SYM SYSTEM_TIME_SYM opt_trans_or_timestamp simple_expr
|
|
||||||
{
|
{
|
||||||
Lex->vers_conditions.init(SYSTEM_TIME_BEFORE, $5, $6);
|
|
||||||
Lex->last_table()->vers_conditions= Lex->vers_conditions;
|
Lex->last_table()->vers_conditions= Lex->vers_conditions;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
Reference in New Issue
Block a user