diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:00:34 +0000 |
commit | 3f619478f796eddbba6e39502fe941b285dd97b1 (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/main/func_date_add.test | |
parent | Initial commit. (diff) | |
download | mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.tar.xz mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/main/func_date_add.test')
-rw-r--r-- | mysql-test/main/func_date_add.test | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/mysql-test/main/func_date_add.test b/mysql-test/main/func_date_add.test new file mode 100644 index 00000000..f9287b95 --- /dev/null +++ b/mysql-test/main/func_date_add.test @@ -0,0 +1,171 @@ +# +# Test of DATE_ADD +# + +--disable_warnings +drop table if exists t1; +--enable_warnings + +CREATE TABLE t1 ( + visitor_id int(10) unsigned DEFAULT '0' NOT NULL, + group_id int(10) unsigned DEFAULT '0' NOT NULL, + hits int(10) unsigned DEFAULT '0' NOT NULL, + sessions int(10) unsigned DEFAULT '0' NOT NULL, + ts timestamp, + PRIMARY KEY (visitor_id,group_id) +)/*! engine=MyISAM */; +INSERT INTO t1 VALUES (465931136,7,2,2,20000318160952); +INSERT INTO t1 VALUES (173865424,2,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,8,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,39,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,7,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,3,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,6,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,60,2,2,20000318233615); +INSERT INTO t1 VALUES (173865424,1502,2,2,20000318233615); +INSERT INTO t1 VALUES (48985536,2,2,2,20000319013932); +INSERT INTO t1 VALUES (48985536,8,2,2,20000319013932); +INSERT INTO t1 VALUES (48985536,39,2,2,20000319013932); +INSERT INTO t1 VALUES (48985536,7,2,2,20000319013932); +INSERT INTO t1 VALUES (465931136,3,2,2,20000318160951); +INSERT INTO t1 VALUES (465931136,119,1,1,20000318160953); +INSERT INTO t1 VALUES (465931136,2,1,1,20000318160950); +INSERT INTO t1 VALUES (465931136,8,1,1,20000318160950); +INSERT INTO t1 VALUES (465931136,39,1,1,20000318160950); +INSERT INTO t1 VALUES (1092858576,14,1,1,20000319013445); +INSERT INTO t1 VALUES (357917728,3,2,2,20000319145026); +INSERT INTO t1 VALUES (357917728,7,2,2,20000319145027); +select visitor_id,max(ts) as mts from t1 group by visitor_id +having mts < DATE_SUB(NOW(),INTERVAL 3 MONTH); +select visitor_id,max(ts) as mts from t1 group by visitor_id +having DATE_ADD(mts,INTERVAL 3 MONTH) < NOW(); +drop table t1; + +# +# Bug #10627: Invalid date turned to NULL from date_sub/date_add in +# traditional mode +# +set sql_mode='traditional'; +create table t1 (d date); +--error S22008 +insert into t1 (d) select date_sub('2000-01-01', INTERVAL 2001 YEAR); +--error S22008 +insert into t1 (d) select date_add('2000-01-01',interval 8000 year); +# No warnings/errors from the next two +insert into t1 values (date_add(NULL, INTERVAL 1 DAY)); +insert into t1 values (date_add('2000-01-04', INTERVAL NULL DAY)); +set sql_mode=''; +# These will all work now, and we'll end up with some NULL entries in the +# table and some warnings. +insert into t1 (d) select date_sub('2000-01-01', INTERVAL 2001 YEAR); +insert into t1 (d) select date_add('2000-01-01',interval 8000 year); +insert into t1 values (date_add(NULL, INTERVAL 1 DAY)); +insert into t1 values (date_add('2000-01-04', INTERVAL NULL DAY)); +select * from t1; +drop table t1; + +--echo End of 4.1 tests + +# +# Bug#21811 +# +# Make sure we end up with an appropriate +# date format (DATE) after addition operation +# +SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 DAY; +SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 MONTH; +SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR; +SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK; + +# +# Bug#28450: The Item_date_add_interval in select list may fail the field +# type assertion. +# +create table t1 (a int, b varchar(10)); +insert into t1 values (1, '2001-01-01'),(2, '2002-02-02'); +select '2007-01-01' + interval a day from t1; +select b + interval a day from t1; +drop table t1; + +--echo End of 5.0 tests + +# +# MDEV-4284 Assertion `cmp_items[(uint)cmp_type]' fails in sql/item_cmpfunc.cc +# + +create table t1 (a varchar(10)); +insert t1 values ('2000-12-03'),('2008-05-03'); +select * from t1 where case a when adddate( '2012-12-12', 7 ) then true end; +drop table t1; + +--echo End of 5.5 tests + +--echo # +--echo # Start of 10.1 tests +--echo # + +--echo # +--echo # MDEV-14452 Precision in INTERVAL xxx DAY_MICROSECOND parsed wrong? +--echo # + +--vertical_results +SELECT + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5' DAY_MICROSECOND) c1, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50' DAY_MICROSECOND) c2, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.500' DAY_MICROSECOND) c3, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5000' DAY_MICROSECOND) c4, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50000' DAY_MICROSECOND) c5, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.500000' DAY_MICROSECOND) c6, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5000000' DAY_MICROSECOND) c7, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50000000' DAY_MICROSECOND) c8, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.500000000' DAY_MICROSECOND) c9, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5000000000' DAY_MICROSECOND) c10, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50000000000' DAY_MICROSECOND) c11, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.500000000000' DAY_MICROSECOND) c12, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5000000000000' DAY_MICROSECOND) c13, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50000000000000' DAY_MICROSECOND) c14, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.500000000000000' DAY_MICROSECOND) c15, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5000000000000000' DAY_MICROSECOND) c16, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50000000000000000' DAY_MICROSECOND) c17, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.500000000000000000' DAY_MICROSECOND) c18, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.5000000000000000000' DAY_MICROSECOND) c19, + DATE_ADD('1000-01-01 00:00:00', INTERVAL '0 00:00:01.50000000000000000000' DAY_MICROSECOND) c20 +; +--horizontal_results + + +--echo # +--echo # End of 10.1 tests +--echo # + +# +# how + interval is printed +# + +create or replace view v1 as select 3 & 20010101 + interval 2 day as x; +show create view v1; +select 3 & 20010101 + interval 2 day, x from v1; + +create or replace view v1 as select (3 & 20010101) + interval 2 day as x; +show create view v1; +select (3 & 20010101) + interval 2 day, x from v1; + +create or replace view v1 as select 3 & (20010101 + interval 2 day) as x; +show create view v1; +select 3 & (20010101 + interval 2 day), x from v1; + +create or replace view v1 as select 30 + 20010101 + interval 2 day as x; +show create view v1; +select 30 + 20010101 + interval 2 day, x from v1; + +create or replace view v1 as select (30 + 20010101) + interval 2 day as x; +show create view v1; +select (30 + 20010101) + interval 2 day, x from v1; + +create or replace view v1 as select 30 + (20010101 + interval 2 day) as x; +show create view v1; +select 30 + (20010101 + interval 2 day), x from v1; + +drop view v1; + +--echo End of 10.2 tests |