From a04ea450cd2cb1a185d65782aacbab240bba2713 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Thu, 3 Jun 2021 12:56:19 +0400 Subject: [PATCH] MCOL-4749 mcs247_from_unixtime_funtion fails if local time zone is not GMT --- .../r/mcs247_from_unixtime_funtion2.result | 49 +++++++++++++ .../basic/t/mcs247_from_unixtime_funtion.test | 6 ++ .../t/mcs247_from_unixtime_funtion2.test | 72 +++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 mysql-test/columnstore/basic/r/mcs247_from_unixtime_funtion2.result create mode 100644 mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion2.test diff --git a/mysql-test/columnstore/basic/r/mcs247_from_unixtime_funtion2.result b/mysql-test/columnstore/basic/r/mcs247_from_unixtime_funtion2.result new file mode 100644 index 000000000..aceb66609 --- /dev/null +++ b/mysql-test/columnstore/basic/r/mcs247_from_unixtime_funtion2.result @@ -0,0 +1,49 @@ +DROP DATABASE IF EXISTS mcs247_db2; +CREATE DATABASE mcs247_db2; +USE mcs247_db2; +CREATE TABLE t1 +( +t1_INT INT, +t1_DECIMAL DECIMAL(12,5), +t1_TEXT TEXT, +t1_DATE DATE, +t1_TIME TIME +)ENGINE=Columnstore; +INSERT INTO t1 VALUES(103, 1234.5699, repeat('o', 5), '1997-12-12', '22:12:02'); +INSERT INTO t1 VALUES(-7299, 111.99, repeat('p', 5), '2001-1-1', '23:59:59'); +INSERT INTO t1 VALUES(9913, 98765.4321, repeat('q', 5), '09-12-11', '01:08:59'); +SELECT FROM_UNIXTIME(0) FROM t1 LIMIT 1; +FROM_UNIXTIME(0) +EXPECTED_DATETIME_0 +SELECT FROM_UNIXTIME(-1) FROM t1 LIMIT 1; +FROM_UNIXTIME(-1) +NULL +SELECT FROM_UNIXTIME(1) FROM t1 LIMIT 1; +FROM_UNIXTIME(1) +EXPECTED_DATETIME_1 +SELECT FROM_UNIXTIME(1547432997) FROM t1 LIMIT 1; +FROM_UNIXTIME(1547432997) +EXPECTED_DATETIME_1547432997 +SELECT FROM_UNIXTIME('1547432997') FROM t1 LIMIT 1; +FROM_UNIXTIME('1547432997') +EXPECTED_DATETIME_1547432997.000000 +SELECT FROM_UNIXTIME(1547432997)+0 FROM t1 LIMIT 1; +FROM_UNIXTIME(1547432997)+0 +EXPECTED_DATETIME_1547432997_NUM +SELECT FROM_UNIXTIME(1547432997, '%Y %D %M %h:%i:%s %x') FROM t1 LIMIT 1; +FROM_UNIXTIME(1547432997, '%Y %D %M %h:%i:%s %x') +EXPECTED_DATETIME_1547432997_NUM_FMT0 +SELECT FROM_UNIXTIME(2047430881)-8101 FROM t1 LIMIT 1; +FROM_UNIXTIME(2047430881)-8101 +EXPECTED_DATETIME_1547432997_MINUS_8101 +SELECT t1_INT, FROM_UNIXTIME(t1_INT) FROM t1 ORDER BY 1; +t1_INT FROM_UNIXTIME(t1_INT) +-7299 NULL +103 EXPECTED_DATETIME_103 +9913 EXPECTED_DATETIME_9913 +SELECT t1_DECIMAL, FROM_UNIXTIME(t1_DECIMAL) FROM t1 ORDER BY 1; +t1_DECIMAL FROM_UNIXTIME(t1_DECIMAL) +111.99000 EXPECTED_DATETIME_111.99000 +1234.56990 EXPECTED_DATETIME_1234.56990 +98765.43210 EXPECTED_DATETIME_98765.43210 +DROP DATABASE mcs247_db2; diff --git a/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion.test b/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion.test index 2d16cad16..65475aa27 100644 --- a/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion.test +++ b/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion.test @@ -4,6 +4,12 @@ # -- source ../include/have_columnstore.inc +if (!`SELECT from_unixtime(3600*24)='1970-01-02 00:00:00'`) +{ + skip Require GMT time zone; +} + + --disable_warnings DROP DATABASE IF EXISTS mcs247_db; --enable_warnings diff --git a/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion2.test b/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion2.test new file mode 100644 index 000000000..73e7c51af --- /dev/null +++ b/mysql-test/columnstore/basic/t/mcs247_from_unixtime_funtion2.test @@ -0,0 +1,72 @@ +# +# Test FROM_UNIXTIME function in the machine time zone independent way. +# +-- source ../include/have_columnstore.inc + +# +# Get reference values from MariaDB +# + +let $dt_ts0=`SELECT FROM_UNIXTIME(0)`; +let $dt_ts1=`SELECT FROM_UNIXTIME(1)`; +let $dt_ts103=`SELECT FROM_UNIXTIME(103)`; +let $dt_ts111=`SELECT FROM_UNIXTIME(111)`; +let $dt_ts1234=`SELECT FROM_UNIXTIME(1234)`; +let $dt_ts9913=`SELECT FROM_UNIXTIME(9913)`; +let $dt_ts98765=`SELECT FROM_UNIXTIME(98765)`; + +let $dt_ts1547432997=`SELECT FROM_UNIXTIME(1547432997)`; +let $dt_ts1547432997_num=`SELECT FROM_UNIXTIME(1547432997)+0`; +let $dt_ts1547432997_fmt0=`SELECT FROM_UNIXTIME(1547432997, '%Y %D %M %h:%i:%s %x')`; +let $dt_ts1547432997_minus_8101=`SELECT FROM_UNIXTIME(2047430881)-8101`; + +--disable_warnings +DROP DATABASE IF EXISTS mcs247_db2; +--enable_warnings + +CREATE DATABASE mcs247_db2; +USE mcs247_db2; + +CREATE TABLE t1 +( + t1_INT INT, + t1_DECIMAL DECIMAL(12,5), + t1_TEXT TEXT, + t1_DATE DATE, + t1_TIME TIME + )ENGINE=Columnstore; +INSERT INTO t1 VALUES(103, 1234.5699, repeat('o', 5), '1997-12-12', '22:12:02'); +INSERT INTO t1 VALUES(-7299, 111.99, repeat('p', 5), '2001-1-1', '23:59:59'); +INSERT INTO t1 VALUES(9913, 98765.4321, repeat('q', 5), '09-12-11', '01:08:59'); + +--replace_result $dt_ts0 EXPECTED_DATETIME_0 +SELECT FROM_UNIXTIME(0) FROM t1 LIMIT 1; + +SELECT FROM_UNIXTIME(-1) FROM t1 LIMIT 1; + +--replace_result $dt_ts1 EXPECTED_DATETIME_1 +SELECT FROM_UNIXTIME(1) FROM t1 LIMIT 1; + +--replace_result $dt_ts1547432997 EXPECTED_DATETIME_1547432997 +SELECT FROM_UNIXTIME(1547432997) FROM t1 LIMIT 1; + +--replace_result $dt_ts1547432997 EXPECTED_DATETIME_1547432997 +SELECT FROM_UNIXTIME('1547432997') FROM t1 LIMIT 1; + +--replace_result $dt_ts1547432997_num EXPECTED_DATETIME_1547432997_NUM +SELECT FROM_UNIXTIME(1547432997)+0 FROM t1 LIMIT 1; + +--replace_result $dt_ts1547432997_fmt0 EXPECTED_DATETIME_1547432997_NUM_FMT0 +SELECT FROM_UNIXTIME(1547432997, '%Y %D %M %h:%i:%s %x') FROM t1 LIMIT 1; + +--replace_result $dt_ts1547432997_minus_8101 EXPECTED_DATETIME_1547432997_MINUS_8101 +SELECT FROM_UNIXTIME(2047430881)-8101 FROM t1 LIMIT 1; + +--replace_result $dt_ts103 EXPECTED_DATETIME_103 $dt_ts9913 EXPECTED_DATETIME_9913 +SELECT t1_INT, FROM_UNIXTIME(t1_INT) FROM t1 ORDER BY 1; + +--replace_result $dt_ts111 EXPECTED_DATETIME_111 $dt_ts1234 EXPECTED_DATETIME_1234 $dt_ts98765 EXPECTED_DATETIME_98765 +SELECT t1_DECIMAL, FROM_UNIXTIME(t1_DECIMAL) FROM t1 ORDER BY 1; + +# Clean UP +DROP DATABASE mcs247_db2;