mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-29721 Inconsistency upon inserting history with visible system versioning columns
This commit is contained in:
25
mysql-test/suite/versioning/r/misc.result
Normal file
25
mysql-test/suite/versioning/r/misc.result
Normal file
@@ -0,0 +1,25 @@
|
||||
set time_zone='+00:00';
|
||||
#
|
||||
# MDEV-29721 Inconsistency upon inserting history with visible system versioning columns
|
||||
#
|
||||
create table t1 (a int, s timestamp(6) as row start, e timestamp(6) as row end, period for system_time(s,e)) with system versioning;
|
||||
set system_versioning_insert_history=on;
|
||||
set timestamp=unix_timestamp('2010-10-10 10:10:10');
|
||||
insert t1 (a,s,e) values (1,'2020-01-01',default), (2,'2020-02-02',ignore),(3,default,'2020-03-03'), (4,ignore,'2020-04-04');
|
||||
set timestamp=unix_timestamp('2010-11-11 11:11:11');
|
||||
insert t1 values (5,'2020-01-01',default), (6,'2020-02-02',ignore),(7,default,'2020-03-03'), (8,ignore,'2020-04-04');
|
||||
set timestamp=default;
|
||||
select * from t1 for system_time all;
|
||||
a s e
|
||||
1 2020-01-01 00:00:00.000000 2038-01-19 03:14:07.999999
|
||||
2 2020-02-02 00:00:00.000000 2038-01-19 03:14:07.999999
|
||||
3 2010-10-10 10:10:10.000000 2020-03-03 00:00:00.000000
|
||||
4 2010-10-10 10:10:10.000000 2020-04-04 00:00:00.000000
|
||||
5 2020-01-01 00:00:00.000000 2038-01-19 03:14:07.999999
|
||||
6 2020-02-02 00:00:00.000000 2038-01-19 03:14:07.999999
|
||||
7 2010-11-11 11:11:11.000000 2020-03-03 00:00:00.000000
|
||||
8 2010-11-11 11:11:11.000000 2020-04-04 00:00:00.000000
|
||||
drop table t1;
|
||||
#
|
||||
# End of 10.11 tests
|
||||
#
|
21
mysql-test/suite/versioning/t/misc.test
Normal file
21
mysql-test/suite/versioning/t/misc.test
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# simple tests that don't need to be run in multiple various combinations
|
||||
#
|
||||
set time_zone='+00:00';
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29721 Inconsistency upon inserting history with visible system versioning columns
|
||||
--echo #
|
||||
create table t1 (a int, s timestamp(6) as row start, e timestamp(6) as row end, period for system_time(s,e)) with system versioning;
|
||||
set system_versioning_insert_history=on;
|
||||
set timestamp=unix_timestamp('2010-10-10 10:10:10');
|
||||
insert t1 (a,s,e) values (1,'2020-01-01',default), (2,'2020-02-02',ignore),(3,default,'2020-03-03'), (4,ignore,'2020-04-04');
|
||||
set timestamp=unix_timestamp('2010-11-11 11:11:11');
|
||||
insert t1 values (5,'2020-01-01',default), (6,'2020-02-02',ignore),(7,default,'2020-03-03'), (8,ignore,'2020-04-04');
|
||||
set timestamp=default;
|
||||
select * from t1 for system_time all;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.11 tests
|
||||
--echo #
|
@@ -11307,7 +11307,13 @@ bool Field::save_in_field_default_value(bool view_error_processing)
|
||||
This condition will go away as well as other conditions with vers_sys_field().
|
||||
*/
|
||||
if (vers_sys_field())
|
||||
{
|
||||
if (flags & VERS_ROW_START)
|
||||
set_time();
|
||||
else
|
||||
set_max();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (unlikely(flags & NO_DEFAULT_VALUE_FLAG &&
|
||||
real_type() != MYSQL_TYPE_ENUM))
|
||||
|
@@ -9159,11 +9159,8 @@ bool TABLE::vers_update_fields()
|
||||
bool res= false;
|
||||
if (versioned(VERS_TIMESTAMP) && !vers_start_field()->has_explicit_value())
|
||||
{
|
||||
if (vers_start_field()->store_timestamp(in_use->query_start(),
|
||||
in_use->query_start_sec_part()))
|
||||
{
|
||||
if (vers_start_field()->set_time())
|
||||
DBUG_ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (!versioned(VERS_TIMESTAMP) || !vers_end_field()->has_explicit_value())
|
||||
|
Reference in New Issue
Block a user