From f08b8fd58d6ef7d08d7e5a1956da0a4c9ff3a031 Mon Sep 17 00:00:00 2001 From: Eugene Kosov Date: Fri, 27 Apr 2018 18:09:05 +0300 Subject: MDEV-15980 FOR SYSTEM_TIME BETWEEN and FROM .. TO work with negative intervals Fixed by using exactly the same filtering conditions as specified by standard in 7.6 General Rules --- mysql-test/suite/versioning/r/select.result | 24 ++++++++++++++++++++++++ mysql-test/suite/versioning/t/select.test | 20 ++++++++++++++++++++ 2 files changed, 44 insertions(+) (limited to 'mysql-test/suite/versioning') diff --git a/mysql-test/suite/versioning/r/select.result b/mysql-test/suite/versioning/r/select.result index 4d0c529bdb3..75f9fc25263 100644 --- a/mysql-test/suite/versioning/r/select.result +++ b/mysql-test/suite/versioning/r/select.result @@ -512,6 +512,30 @@ Warnings: Note 1003 select `test`.`t1`.`f1` AS `f1` from `test`.`t1` FOR SYSTEM_TIME ALL join `test`.`t2` left join (`test`.`t3` left join `test`.`t4` FOR SYSTEM_TIME ALL on(`test`.`t4`.`f4` = `test`.`t2`.`f2` and `test`.`t4`.`row_end` = TIMESTAMP'2038-01-19 03:14:07.999999')) on(`test`.`t3`.`f3` = `test`.`t2`.`f2`) where `test`.`t1`.`row_end` = TIMESTAMP'2038-01-19 03:14:07.999999' drop view v1; drop table t1, t2, t3, t4; +# +# MDEV-15980 FOR SYSTEM_TIME BETWEEN and FROM .. TO work with negative intervals +# +create or replace table t1 ( +a int, +row_start SYS_DATATYPE as row start invisible, +row_end SYS_DATATYPE as row end invisible, +period for system_time (row_start, row_end) +) with system versioning; +insert into t1 values (1); +delete from t1; +select row_start from t1 for system_time all into @t1; +select row_end from t1 for system_time all into @t2; +select * from t1 for system_time between @t1 and @t2; +a +1 +select * from t1 for system_time between @t2 and @t1; +a +select * from t1 for system_time from @t1 to @t2; +a +1 +select * from t1 for system_time from @t2 to @t1; +a +drop table t1; call verify_trt_dummy(34); No A B C D 1 1 1 1 1 diff --git a/mysql-test/suite/versioning/t/select.test b/mysql-test/suite/versioning/t/select.test index 590384b6fd4..8d2c5f69e2c 100644 --- a/mysql-test/suite/versioning/t/select.test +++ b/mysql-test/suite/versioning/t/select.test @@ -326,6 +326,26 @@ select f1 from t1 join t2 left join t3 left join t4 on f3 = f4 on f3 = f2; drop view v1; drop table t1, t2, t3, t4; +--echo # +--echo # MDEV-15980 FOR SYSTEM_TIME BETWEEN and FROM .. TO work with negative intervals +--echo # +--replace_result $sys_datatype_expl SYS_DATATYPE +eval create or replace table t1 ( + a int, + row_start $sys_datatype_expl as row start invisible, + row_end $sys_datatype_expl as row end invisible, + period for system_time (row_start, row_end) +) with system versioning; +insert into t1 values (1); +delete from t1; +select row_start from t1 for system_time all into @t1; +select row_end from t1 for system_time all into @t2; +select * from t1 for system_time between @t1 and @t2; +select * from t1 for system_time between @t2 and @t1; +select * from t1 for system_time from @t1 to @t2; +select * from t1 for system_time from @t2 to @t1; +drop table t1; + call verify_trt_dummy(34); -- source suite/versioning/common_finish.inc -- cgit v1.2.1