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().
|
This condition will go away as well as other conditions with vers_sys_field().
|
||||||
*/
|
*/
|
||||||
if (vers_sys_field())
|
if (vers_sys_field())
|
||||||
|
{
|
||||||
|
if (flags & VERS_ROW_START)
|
||||||
|
set_time();
|
||||||
|
else
|
||||||
|
set_max();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (unlikely(flags & NO_DEFAULT_VALUE_FLAG &&
|
if (unlikely(flags & NO_DEFAULT_VALUE_FLAG &&
|
||||||
real_type() != MYSQL_TYPE_ENUM))
|
real_type() != MYSQL_TYPE_ENUM))
|
||||||
|
@@ -9159,11 +9159,8 @@ bool TABLE::vers_update_fields()
|
|||||||
bool res= false;
|
bool res= false;
|
||||||
if (versioned(VERS_TIMESTAMP) && !vers_start_field()->has_explicit_value())
|
if (versioned(VERS_TIMESTAMP) && !vers_start_field()->has_explicit_value())
|
||||||
{
|
{
|
||||||
if (vers_start_field()->store_timestamp(in_use->query_start(),
|
if (vers_start_field()->set_time())
|
||||||
in_use->query_start_sec_part()))
|
|
||||||
{
|
|
||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!versioned(VERS_TIMESTAMP) || !vers_end_field()->has_explicit_value())
|
if (!versioned(VERS_TIMESTAMP) || !vers_end_field()->has_explicit_value())
|
||||||
|
Reference in New Issue
Block a user