mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-29750 triggers can modify history
should be the same behavior as for virtual columns: * a warning on every inserted row * silently ignored in a trigger
This commit is contained in:
27
mysql-test/suite/versioning/r/misc.result
Normal file
27
mysql-test/suite/versioning/r/misc.result
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
set time_zone='+00:00';
|
||||||
|
#
|
||||||
|
# MDEV-29750 triggers can modify history
|
||||||
|
#
|
||||||
|
set sql_mode='', timestamp=unix_timestamp('2010-10-10 10:10:10');
|
||||||
|
create table t (a int, b int as (a+1), s timestamp(6) as row start, e timestamp(6) as row end, period for system_time(s,e)) with system versioning;
|
||||||
|
insert into t values (1,1, '2022-01-01','2023-01-01'),(2,2, '2022-02-02','2023-02-02');
|
||||||
|
Warnings:
|
||||||
|
Warning 1906 The value specified for generated column 'b' in table 't' has been ignored
|
||||||
|
Warning 1906 The value specified for generated column 's' in table 't' has been ignored
|
||||||
|
Warning 1906 The value specified for generated column 'e' in table 't' has been ignored
|
||||||
|
Warning 1906 The value specified for generated column 'b' in table 't' has been ignored
|
||||||
|
Warning 1906 The value specified for generated column 's' in table 't' has been ignored
|
||||||
|
Warning 1906 The value specified for generated column 'e' in table 't' has been ignored
|
||||||
|
create trigger tr before insert on t for each row set new.b=1, new.s = '2022-03-03', new.e = '2023-03-03';
|
||||||
|
insert into t (a) values (3),(4);
|
||||||
|
select * from t for system_time all;
|
||||||
|
a b s e
|
||||||
|
1 2 2010-10-10 10:10:10.000000 2038-01-19 03:14:07.999999
|
||||||
|
2 3 2010-10-10 10:10:10.000000 2038-01-19 03:14:07.999999
|
||||||
|
3 4 2010-10-10 10:10:10.000000 2038-01-19 03:14:07.999999
|
||||||
|
4 5 2010-10-10 10:10:10.000000 2038-01-19 03:14:07.999999
|
||||||
|
drop table t;
|
||||||
|
set sql_mode=default, timestamp=default;
|
||||||
|
#
|
||||||
|
# End of 10.3 tests
|
||||||
|
#
|
20
mysql-test/suite/versioning/t/misc.test
Normal file
20
mysql-test/suite/versioning/t/misc.test
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# simple tests that don't need to be run in multiple various combinations
|
||||||
|
#
|
||||||
|
set time_zone='+00:00';
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29750 triggers can modify history
|
||||||
|
--echo #
|
||||||
|
set sql_mode='', timestamp=unix_timestamp('2010-10-10 10:10:10');
|
||||||
|
create table t (a int, b int as (a+1), s timestamp(6) as row start, e timestamp(6) as row end, period for system_time(s,e)) with system versioning;
|
||||||
|
insert into t values (1,1, '2022-01-01','2023-01-01'),(2,2, '2022-02-02','2023-02-02');
|
||||||
|
create trigger tr before insert on t for each row set new.b=1, new.s = '2022-03-03', new.e = '2023-03-03';
|
||||||
|
insert into t (a) values (3),(4);
|
||||||
|
select * from t for system_time all;
|
||||||
|
drop table t;
|
||||||
|
set sql_mode=default, timestamp=default;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.3 tests
|
||||||
|
--echo #
|
@ -9804,6 +9804,8 @@ bool Item_trigger_field::set_value(THD *thd, sp_rcontext * /*ctx*/, Item **it)
|
|||||||
|
|
||||||
if (!item || fix_fields_if_needed(thd, NULL))
|
if (!item || fix_fields_if_needed(thd, NULL))
|
||||||
return true;
|
return true;
|
||||||
|
if (field->vers_sys_field())
|
||||||
|
return false;
|
||||||
|
|
||||||
// NOTE: field->table->copy_blobs should be false here, but let's
|
// NOTE: field->table->copy_blobs should be false here, but let's
|
||||||
// remember the value at runtime to avoid subtle bugs.
|
// remember the value at runtime to avoid subtle bugs.
|
||||||
|
Reference in New Issue
Block a user