mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '10.4' into 10.5
This commit is contained in:
@@ -439,3 +439,15 @@ show create table t1;
|
||||
show create table t2;
|
||||
drop temporary table t2;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16857 system-invisible row_end is displayed in SHOW INDEX
|
||||
--echo #
|
||||
create or replace table t1 (id int primary key, x int) with system versioning;
|
||||
select table_schema, table_name, non_unique, index_schema, index_name, seq_in_index, column_name
|
||||
from information_schema.statistics where table_name = 't1';
|
||||
--replace_column 6 # 7 # 8 # 9 # 10 # 11 #
|
||||
show index from t1;
|
||||
--replace_result $default_engine DEFAULT_ENGINE
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
@@ -993,6 +993,27 @@ alter table t1 partition by system_time (partition pn current);
|
||||
# Cleanup
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-22247 History partition overflow leads to wrong SELECT result
|
||||
--echo #
|
||||
set timestamp= unix_timestamp('2000-01-01 00:00:00');
|
||||
create or replace table t1 (x int) with system versioning
|
||||
partition by system_time interval 1 hour
|
||||
(partition p0 history, partition p1 history, partition pn current);
|
||||
|
||||
insert into t1 values (0);
|
||||
update t1 set x= x + 1;
|
||||
|
||||
set timestamp= unix_timestamp('2000-01-01 02:00:01');
|
||||
update t1 set x= x + 1;
|
||||
|
||||
select *, row_start, row_end from t1 for system_time as of '2000-01-01 02:00:00';
|
||||
--replace_column 10 #
|
||||
explain partitions select * from t1 for system_time as of '2000-01-01 02:00:00';
|
||||
--replace_column 5 # 10 # 11 #
|
||||
explain partitions select * from t1;
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 10.3 tests
|
||||
|
||||
--echo #
|
||||
|
31
mysql-test/suite/versioning/t/sysvars-notembedded.test
Normal file
31
mysql-test/suite/versioning/t/sysvars-notembedded.test
Normal file
@@ -0,0 +1,31 @@
|
||||
source include/not_embedded.inc;
|
||||
|
||||
create table t (a int) with system versioning;
|
||||
set @before= UNIX_TIMESTAMP(now(6));
|
||||
insert into t values (1);
|
||||
set @after= UNIX_TIMESTAMP(now(6));
|
||||
update t set a= 2;
|
||||
|
||||
set global system_versioning_asof= FROM_UNIXTIME(@after);
|
||||
set system_versioning_asof= FROM_UNIXTIME(@after);
|
||||
select * from t as nonempty;
|
||||
|
||||
--connect (subcon,127.0.0.1,root,,,$SERVER_MYPORT_1)
|
||||
--connection subcon
|
||||
select * from t as nonempty;
|
||||
--disconnect subcon
|
||||
--connection default
|
||||
|
||||
set global system_versioning_asof= FROM_UNIXTIME(@before);
|
||||
select * from t as nonempty;
|
||||
|
||||
--connect (subcon,127.0.0.1,root,,,$SERVER_MYPORT_1)
|
||||
--connection subcon
|
||||
select * from t as empty;
|
||||
--disconnect subcon
|
||||
--connection default
|
||||
|
||||
drop table t;
|
||||
|
||||
set global system_versioning_asof= DEFAULT;
|
||||
set system_versioning_asof= DEFAULT;
|
@@ -1,5 +1,7 @@
|
||||
create table t (a int) with system versioning;
|
||||
set @before= UNIX_TIMESTAMP(now(6));
|
||||
insert into t values (1);
|
||||
set @after= UNIX_TIMESTAMP(now(6));
|
||||
update t set a= 2;
|
||||
|
||||
show global variables like 'system_versioning_asof';
|
||||
@@ -51,16 +53,16 @@ set system_versioning_asof= '2011-00-28 00:00';
|
||||
set system_versioning_asof= '0000-00-00 00:00';
|
||||
|
||||
--echo # GLOBAL @@system_versioning_asof
|
||||
set global system_versioning_asof= '1911-11-11 11:11:11.1111119';
|
||||
set global system_versioning_asof= '1991-11-11 11:11:11.1111119';
|
||||
show global variables like 'system_versioning_asof';
|
||||
|
||||
set global system_versioning_asof= '1900-01-01 00:00:00';
|
||||
set global system_versioning_asof= '1990-01-01 00:00:00';
|
||||
show global variables like 'system_versioning_asof';
|
||||
|
||||
set global system_versioning_asof= timestamp'1911-11-11 11:11:11.1111119';
|
||||
set global system_versioning_asof= timestamp'1991-11-11 11:11:11.1111119';
|
||||
show global variables like 'system_versioning_asof';
|
||||
|
||||
set @ts= timestamp'1900-01-01 00:00:00';
|
||||
set @ts= timestamp'1990-01-01 00:00:00';
|
||||
set global system_versioning_asof= @ts;
|
||||
show global variables like 'system_versioning_asof';
|
||||
|
||||
@@ -68,26 +70,32 @@ set global system_versioning_asof= default;
|
||||
select @@global.system_versioning_asof;
|
||||
|
||||
--echo # SESSION @@system_versioning_asof
|
||||
set system_versioning_asof= '1911-11-11 11:11:11.1111119';
|
||||
set system_versioning_asof= '1991-11-11 11:11:11.1111119';
|
||||
show variables like 'system_versioning_asof';
|
||||
|
||||
set system_versioning_asof= '1900-01-01 00:00:00';
|
||||
set system_versioning_asof= '1990-01-01 00:00:00';
|
||||
show variables like 'system_versioning_asof';
|
||||
|
||||
set system_versioning_asof= timestamp'1911-11-11 11:11:11.1111119';
|
||||
set system_versioning_asof= timestamp'1991-11-11 11:11:11.1111119';
|
||||
show variables like 'system_versioning_asof';
|
||||
|
||||
set @ts= timestamp'1900-01-01 00:00:00';
|
||||
set @ts= timestamp'1990-01-01 00:00:00';
|
||||
set system_versioning_asof= @ts;
|
||||
show variables like 'system_versioning_asof';
|
||||
|
||||
--echo # DEFAULT: value is copied from GLOBAL to SESSION
|
||||
set global system_versioning_asof= timestamp'1911-11-11 11:11:11.111111';
|
||||
set system_versioning_asof= '1900-01-01 00:00:00';
|
||||
set global time_zone= "+03:00";
|
||||
set time_zone= "+10:00";
|
||||
set global system_versioning_asof= timestamp'1991-11-11 11:11:11.111111';
|
||||
set system_versioning_asof= '1990-01-01 00:00:00';
|
||||
select @@global.system_versioning_asof != @@system_versioning_asof as different;
|
||||
set system_versioning_asof= default;
|
||||
select @@global.system_versioning_asof != @@system_versioning_asof as different;
|
||||
set global system_versioning_asof= default;
|
||||
select @@global.system_versioning_asof = @@system_versioning_asof as equal;
|
||||
|
||||
set global time_zone= DEFAULT;
|
||||
set time_zone= DEFAULT;
|
||||
set global system_versioning_asof= DEFAULT;
|
||||
set system_versioning_asof= DEFAULT;
|
||||
select @@global.system_versioning_asof, @@system_versioning_asof;
|
||||
@@ -100,6 +108,47 @@ select * from t for system_time all;
|
||||
select * from t for system_time from '1970-01-01 00:00' to current_timestamp(6);
|
||||
select * from t for system_time between '1970-01-01 00:00' and current_timestamp(6);
|
||||
|
||||
-- echo # MDEV-16026: Global system_versioning_asof must not be used if client sessions can have non-default time zone
|
||||
-- echo # changing time zone should not abuse `system_versioning_asof`
|
||||
|
||||
set session time_zone = '+10:00';
|
||||
set global system_versioning_asof = '1999-09-08 00:00:00.000000';
|
||||
show global variables like 'system_versioning_asof';
|
||||
set session time_zone = '+03:00';
|
||||
show global variables like 'system_versioning_asof';
|
||||
|
||||
set session time_zone = '+03:00';
|
||||
set session system_versioning_asof = '2000-09-08 00:00:00.000000';
|
||||
show session variables like 'system_versioning_asof';
|
||||
set session time_zone = '+10:00';
|
||||
show session variables like 'system_versioning_asof';
|
||||
-- echo # global and local time zones should not interfere
|
||||
show global variables like 'system_versioning_asof';
|
||||
|
||||
set time_zone= "+10:00";
|
||||
set system_versioning_asof= FROM_UNIXTIME(@before);
|
||||
select * from t as empty;
|
||||
set system_versioning_asof= FROM_UNIXTIME(@after);
|
||||
select * from t as nonempty;
|
||||
|
||||
set time_zone= "+03:00";
|
||||
set system_versioning_asof= FROM_UNIXTIME(@before);
|
||||
select * from t as empty;
|
||||
set system_versioning_asof= FROM_UNIXTIME(@after);
|
||||
select * from t as nonempty;
|
||||
|
||||
--echo # MDEV-16481: set global system_versioning_asof=sf() crashes in specific case
|
||||
--echo # Using global variable inside a stored function should not crash
|
||||
create or replace function now_global() returns timestamp
|
||||
return CONVERT_TZ(now(), @@session.time_zone, @@global.time_zone);
|
||||
set global system_versioning_asof= now_global();
|
||||
drop function now_global;
|
||||
|
||||
set global time_zone= "SYSTEM";
|
||||
set time_zone= "SYSTEM";
|
||||
set global system_versioning_asof= default;
|
||||
set system_versioning_asof= default;
|
||||
|
||||
show status like "Feature_system_versioning";
|
||||
|
||||
drop table t;
|
||||
@@ -111,7 +160,7 @@ create or replace table t1 (x int) with system versioning;
|
||||
create or replace table t2 (y int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (1);
|
||||
set system_versioning_asof= '1970-01-01 00:00:00';
|
||||
set system_versioning_asof= '1970-01-02 00:00:00';
|
||||
delete t1, t2 from t1 join t2 where t1.x = t2.y;
|
||||
select * from t1 for system_time as of timestamp now(6);
|
||||
|
||||
|
Reference in New Issue
Block a user