From 09be46a27453807fd2049ba88cdee8bcb3371306 Mon Sep 17 00:00:00 2001 From: jacktengg <18241664+jacktengg@users.noreply.github.com> Date: Tue, 14 Nov 2023 16:39:36 +0800 Subject: [PATCH 1/2] [nereids](datetime) fix wrong result type of datetime add with interval as first arg --- .../expressions/TimestampArithmetic.java | 6 +- .../test_timestamp_arithmetic.out | 1400 ++++++++++++++++- .../test_timestamp_arithmetic.sql | 90 ++ 3 files changed, 1446 insertions(+), 50 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java index 0b2a75038fb252..ee4a2578584431 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java @@ -86,11 +86,7 @@ public Expression withFuncName(String funcName) { @Override public DataType getDataType() throws UnboundException { - int dateChildIndex = 0; - if (intervalFirst) { - dateChildIndex = 1; - } - DataType childType = child(dateChildIndex).getDataType(); + DataType childType = child(0).getDataType(); if (childType instanceof DateTimeV2Type) { return childType; } diff --git a/regression-test/data/nereids_function_p0/test_timestamp_arithmetic.out b/regression-test/data/nereids_function_p0/test_timestamp_arithmetic.out index fd5f1478778c70..979c29e2d6217b 100644 --- a/regression-test/data/nereids_function_p0/test_timestamp_arithmetic.out +++ b/regression-test/data/nereids_function_p0/test_timestamp_arithmetic.out @@ -37,6 +37,36 @@ -- !test_timestamp_arithmetic_5 -- \N +2012-03-02 +2012-03-03 +2012-03-04 +2012-03-05 +2012-03-06 +2012-03-07 +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 + +-- !test_timestamp_arithmetic_6 -- +\N +2012-03-01T00:00:01 +2012-03-02T00:00:01 +2012-03-03T00:00:01 +2012-03-04T00:00:01 +2012-03-05T00:00:01 +2012-03-06T00:00:01 +2012-03-07T00:00:01 +2012-03-08T00:00:01 +2012-03-09T00:00:01 +2012-03-10T00:00:01 +2012-03-11T00:00:01 +2012-03-12T00:00:01 + +-- !test_timestamp_arithmetic_7 -- +\N 2012-02-29 2012-03-01 2012-03-02 @@ -50,7 +80,7 @@ 2012-03-10 2012-03-11 --- !test_timestamp_arithmetic_6 -- +-- !test_timestamp_arithmetic_8 -- \N 2012-02-29T23:59:59 2012-03-01T23:59:59 @@ -65,7 +95,7 @@ 2012-03-10T23:59:59 2012-03-11T23:59:59 --- !test_timestamp_arithmetic_7 -- +-- !test_timestamp_arithmetic_9 -- 2012-03-02 2012-03-03 2012-03-04 @@ -79,7 +109,7 @@ 2012-03-12 2012-03-13 --- !test_timestamp_arithmetic_8 -- +-- !test_timestamp_arithmetic_10 -- 2012-03-01T00:00:01 2012-03-02T00:00:01 2012-03-03T00:00:01 @@ -93,7 +123,35 @@ 2012-03-11T00:00:01 2012-03-12T00:00:01 --- !test_timestamp_arithmetic_9 -- +-- !test_timestamp_arithmetic_11 -- +2012-03-02 +2012-03-03 +2012-03-04 +2012-03-05 +2012-03-06 +2012-03-07 +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 + +-- !test_timestamp_arithmetic_12 -- +2012-03-01T00:00:01 +2012-03-02T00:00:01 +2012-03-03T00:00:01 +2012-03-04T00:00:01 +2012-03-05T00:00:01 +2012-03-06T00:00:01 +2012-03-07T00:00:01 +2012-03-08T00:00:01 +2012-03-09T00:00:01 +2012-03-10T00:00:01 +2012-03-11T00:00:01 +2012-03-12T00:00:01 + +-- !test_timestamp_arithmetic_13 -- 2012-02-29 2012-03-01 2012-03-02 @@ -107,7 +165,7 @@ 2012-03-10 2012-03-11 --- !test_timestamp_arithmetic_10 -- +-- !test_timestamp_arithmetic_14 -- 2012-02-29T23:59:59 2012-03-01T23:59:59 2012-03-02T23:59:59 @@ -121,7 +179,52 @@ 2012-03-10T23:59:59 2012-03-11T23:59:59 --- !test_timestamp_arithmetic_11 -- +-- !test_timestamp_arithmetic_15 -- +\N +2013-03-01 +2013-03-02 +2013-03-03 +2013-03-04 +2013-03-05 +2013-03-06 +2013-03-07 +2013-03-08 +2013-03-09 +2013-03-10 +2013-03-11 +2013-03-12 + +-- !test_timestamp_arithmetic_16 -- +\N +2012-04-01 +2012-04-02 +2012-04-03 +2012-04-04 +2012-04-05 +2012-04-06 +2012-04-07 +2012-04-08 +2012-04-09 +2012-04-10 +2012-04-11 +2012-04-12 + +-- !test_timestamp_arithmetic_17 -- +\N +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 +2012-03-14 +2012-03-15 +2012-03-16 +2012-03-17 +2012-03-18 +2012-03-19 + +-- !test_timestamp_arithmetic_18 -- \N 2012-03-02 2012-03-03 @@ -136,7 +239,37 @@ 2012-03-12 2012-03-13 --- !test_timestamp_arithmetic_12 -- +-- !test_timestamp_arithmetic_19 -- +\N +2012-03-01T01:00 +2012-03-02T01:00 +2012-03-03T01:00 +2012-03-04T01:00 +2012-03-05T01:00 +2012-03-06T01:00 +2012-03-07T01:00 +2012-03-08T01:00 +2012-03-09T01:00 +2012-03-10T01:00 +2012-03-11T01:00 +2012-03-12T01:00 + +-- !test_timestamp_arithmetic_20 -- +\N +2012-03-01T00:01 +2012-03-02T00:01 +2012-03-03T00:01 +2012-03-04T00:01 +2012-03-05T00:01 +2012-03-06T00:01 +2012-03-07T00:01 +2012-03-08T00:01 +2012-03-09T00:01 +2012-03-10T00:01 +2012-03-11T00:01 +2012-03-12T00:01 + +-- !test_timestamp_arithmetic_21 -- \N 2012-03-01T00:00:01 2012-03-02T00:00:01 @@ -151,7 +284,112 @@ 2012-03-11T00:00:01 2012-03-12T00:00:01 --- !test_timestamp_arithmetic_13 -- +-- !test_timestamp_arithmetic_22 -- +\N +2013-03-01 +2013-03-02 +2013-03-03 +2013-03-04 +2013-03-05 +2013-03-06 +2013-03-07 +2013-03-08 +2013-03-09 +2013-03-10 +2013-03-11 +2013-03-12 + +-- !test_timestamp_arithmetic_23 -- +\N +2012-04-01 +2012-04-02 +2012-04-03 +2012-04-04 +2012-04-05 +2012-04-06 +2012-04-07 +2012-04-08 +2012-04-09 +2012-04-10 +2012-04-11 +2012-04-12 + +-- !test_timestamp_arithmetic_24 -- +\N +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 +2012-03-14 +2012-03-15 +2012-03-16 +2012-03-17 +2012-03-18 +2012-03-19 + +-- !test_timestamp_arithmetic_25 -- +\N +2012-03-02 +2012-03-03 +2012-03-04 +2012-03-05 +2012-03-06 +2012-03-07 +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 + +-- !test_timestamp_arithmetic_26 -- +\N +2012-03-01T01:00 +2012-03-02T01:00 +2012-03-03T01:00 +2012-03-04T01:00 +2012-03-05T01:00 +2012-03-06T01:00 +2012-03-07T01:00 +2012-03-08T01:00 +2012-03-09T01:00 +2012-03-10T01:00 +2012-03-11T01:00 +2012-03-12T01:00 + +-- !test_timestamp_arithmetic_27 -- +\N +2012-03-01T00:01 +2012-03-02T00:01 +2012-03-03T00:01 +2012-03-04T00:01 +2012-03-05T00:01 +2012-03-06T00:01 +2012-03-07T00:01 +2012-03-08T00:01 +2012-03-09T00:01 +2012-03-10T00:01 +2012-03-11T00:01 +2012-03-12T00:01 + +-- !test_timestamp_arithmetic_28 -- +\N +2012-03-01T00:00:01 +2012-03-02T00:00:01 +2012-03-03T00:00:01 +2012-03-04T00:00:01 +2012-03-05T00:00:01 +2012-03-06T00:00:01 +2012-03-07T00:00:01 +2012-03-08T00:00:01 +2012-03-09T00:00:01 +2012-03-10T00:00:01 +2012-03-11T00:00:01 +2012-03-12T00:00:01 + +-- !test_timestamp_arithmetic_29 -- \N 2012-02-29 2012-03-01 @@ -166,7 +404,7 @@ 2012-03-10 2012-03-11 --- !test_timestamp_arithmetic_14 -- +-- !test_timestamp_arithmetic_30 -- \N 2012-02-29T23:59:59 2012-03-01T23:59:59 @@ -181,7 +419,7 @@ 2012-03-10T23:59:59 2012-03-11T23:59:59 --- !test_timestamp_arithmetic_15 -- +-- !test_timestamp_arithmetic_31 -- 2012-03-02 2012-03-03 2012-03-04 @@ -195,7 +433,7 @@ 2012-03-12 2012-03-13 --- !test_timestamp_arithmetic_16 -- +-- !test_timestamp_arithmetic_32 -- 2012-03-01T00:00:01 2012-03-02T00:00:01 2012-03-03T00:00:01 @@ -209,7 +447,105 @@ 2012-03-11T00:00:01 2012-03-12T00:00:01 --- !test_timestamp_arithmetic_17 -- +-- !test_timestamp_arithmetic_33 -- +2013-03-01 +2013-03-02 +2013-03-03 +2013-03-04 +2013-03-05 +2013-03-06 +2013-03-07 +2013-03-08 +2013-03-09 +2013-03-10 +2013-03-11 +2013-03-12 + +-- !test_timestamp_arithmetic_34 -- +2012-04-01 +2012-04-02 +2012-04-03 +2012-04-04 +2012-04-05 +2012-04-06 +2012-04-07 +2012-04-08 +2012-04-09 +2012-04-10 +2012-04-11 +2012-04-12 + +-- !test_timestamp_arithmetic_35 -- +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 +2012-03-14 +2012-03-15 +2012-03-16 +2012-03-17 +2012-03-18 +2012-03-19 + +-- !test_timestamp_arithmetic_36 -- +2012-03-02 +2012-03-03 +2012-03-04 +2012-03-05 +2012-03-06 +2012-03-07 +2012-03-08 +2012-03-09 +2012-03-10 +2012-03-11 +2012-03-12 +2012-03-13 + +-- !test_timestamp_arithmetic_37 -- +2012-03-01T01:00 +2012-03-02T01:00 +2012-03-03T01:00 +2012-03-04T01:00 +2012-03-05T01:00 +2012-03-06T01:00 +2012-03-07T01:00 +2012-03-08T01:00 +2012-03-09T01:00 +2012-03-10T01:00 +2012-03-11T01:00 +2012-03-12T01:00 + +-- !test_timestamp_arithmetic_38 -- +2012-03-01T00:01 +2012-03-02T00:01 +2012-03-03T00:01 +2012-03-04T00:01 +2012-03-05T00:01 +2012-03-06T00:01 +2012-03-07T00:01 +2012-03-08T00:01 +2012-03-09T00:01 +2012-03-10T00:01 +2012-03-11T00:01 +2012-03-12T00:01 + +-- !test_timestamp_arithmetic_39 -- +2012-03-01T00:00:01 +2012-03-02T00:00:01 +2012-03-03T00:00:01 +2012-03-04T00:00:01 +2012-03-05T00:00:01 +2012-03-06T00:00:01 +2012-03-07T00:00:01 +2012-03-08T00:00:01 +2012-03-09T00:00:01 +2012-03-10T00:00:01 +2012-03-11T00:00:01 +2012-03-12T00:00:01 + +-- !test_timestamp_arithmetic_40 -- 2012-02-29 2012-03-01 2012-03-02 @@ -223,7 +559,7 @@ 2012-03-10 2012-03-11 --- !test_timestamp_arithmetic_18 -- +-- !test_timestamp_arithmetic_41 -- 2012-02-29T23:59:59 2012-03-01T23:59:59 2012-03-02T23:59:59 @@ -237,7 +573,7 @@ 2012-03-10T23:59:59 2012-03-11T23:59:59 --- !test_timestamp_arithmetic_19 -- +-- !test_timestamp_arithmetic_42 -- \N 2012-03-02T01:00:01 2012-03-03T02:01:02 @@ -252,7 +588,7 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_20 -- +-- !test_timestamp_arithmetic_43 -- \N 2012-03-01T01:00:02 2012-03-02T02:01:03 @@ -267,7 +603,7 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_21 -- +-- !test_timestamp_arithmetic_44 -- \N 2012-02-29T01:00:01 2012-03-01T02:01:02 @@ -282,7 +618,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_22 -- +-- !test_timestamp_arithmetic_45 -- \N 2012-03-01T01:00 2012-03-02T02:01:01 @@ -297,7 +633,7 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_23 -- +-- !test_timestamp_arithmetic_46 -- 2012-03-02T01:00:01 2012-03-03T02:01:02 2012-03-04T03:02:03 @@ -311,7 +647,7 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_24 -- +-- !test_timestamp_arithmetic_47 -- 2012-03-01T01:00:02 2012-03-02T02:01:03 2012-03-03T03:02:04 @@ -325,7 +661,7 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_25 -- +-- !test_timestamp_arithmetic_48 -- 2012-02-29T01:00:01 2012-03-01T02:01:02 2012-03-02T03:02:03 @@ -339,7 +675,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_26 -- +-- !test_timestamp_arithmetic_49 -- 2012-03-01T01:00 2012-03-02T02:01:01 2012-03-03T03:02:02 @@ -353,7 +689,52 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_27 -- +-- !test_timestamp_arithmetic_50 -- +\N +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_51 -- +\N +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_52 -- +\N +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_53 -- \N 2012-03-02T01:00:01 2012-03-03T02:01:02 @@ -368,7 +749,37 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_28 -- +-- !test_timestamp_arithmetic_54 -- +\N +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_55 -- +\N +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_56 -- \N 2012-03-01T01:00:02 2012-03-02T02:01:03 @@ -383,7 +794,112 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_29 -- +-- !test_timestamp_arithmetic_57 -- +\N +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_58 -- +\N +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_59 -- +\N +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_60 -- +\N +2012-03-02T01:00:01 +2012-03-03T02:01:02 +2012-03-04T03:02:03 +2012-03-05T04:03:04 +2012-03-06T05:04:05 +2012-03-07T06:05:06 +2012-03-08T07:06:07 +2012-03-09T08:07:08 +2012-03-10T09:08:09 +2012-03-11T10:09:10 +2012-03-12T11:10:11 +2012-03-13T12:11:12 + +-- !test_timestamp_arithmetic_61 -- +\N +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_62 -- +\N +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_63 -- +\N +2012-03-01T01:00:02 +2012-03-02T02:01:03 +2012-03-03T03:02:04 +2012-03-04T04:03:05 +2012-03-05T05:04:06 +2012-03-06T06:05:07 +2012-03-07T07:06:08 +2012-03-08T08:07:09 +2012-03-09T09:08:10 +2012-03-10T10:09:11 +2012-03-11T11:10:12 +2012-03-12T12:11:13 + +-- !test_timestamp_arithmetic_64 -- \N 2012-02-29T01:00:01 2012-03-01T02:01:02 @@ -398,7 +914,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_30 -- +-- !test_timestamp_arithmetic_65 -- \N 2012-03-01T01:00 2012-03-02T02:01:01 @@ -413,7 +929,7 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_31 -- +-- !test_timestamp_arithmetic_66 -- 2012-03-02T01:00:01 2012-03-03T02:01:02 2012-03-04T03:02:03 @@ -427,7 +943,7 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_32 -- +-- !test_timestamp_arithmetic_67 -- 2012-03-01T01:00:02 2012-03-02T02:01:03 2012-03-03T03:02:04 @@ -441,7 +957,105 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_33 -- +-- !test_timestamp_arithmetic_68 -- +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_69 -- +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_70 -- +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_71 -- +2012-03-02T01:00:01 +2012-03-03T02:01:02 +2012-03-04T03:02:03 +2012-03-05T04:03:04 +2012-03-06T05:04:05 +2012-03-07T06:05:06 +2012-03-08T07:06:07 +2012-03-09T08:07:08 +2012-03-10T09:08:09 +2012-03-11T10:09:10 +2012-03-12T11:10:11 +2012-03-13T12:11:12 + +-- !test_timestamp_arithmetic_72 -- +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_73 -- +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_74 -- +2012-03-01T01:00:02 +2012-03-02T02:01:03 +2012-03-03T03:02:04 +2012-03-04T04:03:05 +2012-03-05T05:04:06 +2012-03-06T06:05:07 +2012-03-07T07:06:08 +2012-03-08T08:07:09 +2012-03-09T09:08:10 +2012-03-10T10:09:11 +2012-03-11T11:10:12 +2012-03-12T12:11:13 + +-- !test_timestamp_arithmetic_75 -- 2012-02-29T01:00:01 2012-03-01T02:01:02 2012-03-02T03:02:03 @@ -455,7 +1069,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_34 -- +-- !test_timestamp_arithmetic_76 -- 2012-03-01T01:00 2012-03-02T02:01:01 2012-03-03T03:02:02 @@ -469,7 +1083,52 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_35 -- +-- !test_timestamp_arithmetic_77 -- +\N +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_78 -- +\N +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_79 -- +\N +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_80 -- \N 2012-03-02T01:00:01 2012-03-03T02:01:02 @@ -484,7 +1143,37 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_36 -- +-- !test_timestamp_arithmetic_81 -- +\N +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_82 -- +\N +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_83 -- \N 2012-03-01T01:00:02 2012-03-02T02:01:03 @@ -499,7 +1188,112 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_37 -- +-- !test_timestamp_arithmetic_84 -- +\N +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_85 -- +\N +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_86 -- +\N +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_87 -- +\N +2012-03-02T01:00:01 +2012-03-03T02:01:02 +2012-03-04T03:02:03 +2012-03-05T04:03:04 +2012-03-06T05:04:05 +2012-03-07T06:05:06 +2012-03-08T07:06:07 +2012-03-09T08:07:08 +2012-03-10T09:08:09 +2012-03-11T10:09:10 +2012-03-12T11:10:11 +2012-03-13T12:11:12 + +-- !test_timestamp_arithmetic_88 -- +\N +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_89 -- +\N +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_90 -- +\N +2012-03-01T01:00:02 +2012-03-02T02:01:03 +2012-03-03T03:02:04 +2012-03-04T04:03:05 +2012-03-05T05:04:06 +2012-03-06T06:05:07 +2012-03-07T07:06:08 +2012-03-08T08:07:09 +2012-03-09T09:08:10 +2012-03-10T10:09:11 +2012-03-11T11:10:12 +2012-03-12T12:11:13 + +-- !test_timestamp_arithmetic_91 -- \N 2012-02-29T01:00:01 2012-03-01T02:01:02 @@ -514,7 +1308,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_38 -- +-- !test_timestamp_arithmetic_92 -- \N 2012-03-01T01:00 2012-03-02T02:01:01 @@ -529,7 +1323,49 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_39 -- +-- !test_timestamp_arithmetic_93 -- +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_94 -- +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_95 -- +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_96 -- 2012-03-02T01:00:01 2012-03-03T02:01:02 2012-03-04T03:02:03 @@ -543,7 +1379,35 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_40 -- +-- !test_timestamp_arithmetic_97 -- +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_98 -- +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_99 -- 2012-03-01T01:00:02 2012-03-02T02:01:03 2012-03-03T03:02:04 @@ -557,7 +1421,105 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_41 -- +-- !test_timestamp_arithmetic_100 -- +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_101 -- +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_102 -- +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_103 -- +2012-03-02T01:00:01 +2012-03-03T02:01:02 +2012-03-04T03:02:03 +2012-03-05T04:03:04 +2012-03-06T05:04:05 +2012-03-07T06:05:06 +2012-03-08T07:06:07 +2012-03-09T08:07:08 +2012-03-10T09:08:09 +2012-03-11T10:09:10 +2012-03-12T11:10:11 +2012-03-13T12:11:12 + +-- !test_timestamp_arithmetic_104 -- +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_105 -- +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_106 -- +2012-03-01T01:00:02 +2012-03-02T02:01:03 +2012-03-03T03:02:04 +2012-03-04T04:03:05 +2012-03-05T05:04:06 +2012-03-06T06:05:07 +2012-03-07T07:06:08 +2012-03-08T08:07:09 +2012-03-09T09:08:10 +2012-03-10T10:09:11 +2012-03-11T11:10:12 +2012-03-12T12:11:13 + +-- !test_timestamp_arithmetic_107 -- 2012-02-29T01:00:01 2012-03-01T02:01:02 2012-03-02T03:02:03 @@ -571,7 +1533,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_42 -- +-- !test_timestamp_arithmetic_108 -- 2012-03-01T01:00 2012-03-02T02:01:01 2012-03-03T03:02:02 @@ -585,7 +1547,52 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_43 -- +-- !test_timestamp_arithmetic_109 -- +\N +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_110 -- +\N +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_111 -- +\N +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_112 -- \N 2012-03-02T01:00:01 2012-03-03T02:01:02 @@ -600,7 +1607,37 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_44 -- +-- !test_timestamp_arithmetic_113 -- +\N +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_114 -- +\N +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_115 -- \N 2012-03-01T01:00:02 2012-03-02T02:01:03 @@ -615,7 +1652,112 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_45 -- +-- !test_timestamp_arithmetic_116 -- +\N +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_117 -- +\N +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_118 -- +\N +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_119 -- +\N +2012-03-02T01:00:01 +2012-03-03T02:01:02 +2012-03-04T03:02:03 +2012-03-05T04:03:04 +2012-03-06T05:04:05 +2012-03-07T06:05:06 +2012-03-08T07:06:07 +2012-03-09T08:07:08 +2012-03-10T09:08:09 +2012-03-11T10:09:10 +2012-03-12T11:10:11 +2012-03-13T12:11:12 + +-- !test_timestamp_arithmetic_120 -- +\N +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_121 -- +\N +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_122 -- +\N +2012-03-01T01:00:02 +2012-03-02T02:01:03 +2012-03-03T03:02:04 +2012-03-04T04:03:05 +2012-03-05T05:04:06 +2012-03-06T06:05:07 +2012-03-07T07:06:08 +2012-03-08T08:07:09 +2012-03-09T09:08:10 +2012-03-10T10:09:11 +2012-03-11T11:10:12 +2012-03-12T12:11:13 + +-- !test_timestamp_arithmetic_123 -- \N 2012-02-29T01:00:01 2012-03-01T02:01:02 @@ -630,7 +1772,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_46 -- +-- !test_timestamp_arithmetic_124 -- \N 2012-03-01T01:00 2012-03-02T02:01:01 @@ -645,7 +1787,49 @@ 2012-03-11T11:10:10 2012-03-12T12:11:11 --- !test_timestamp_arithmetic_47 -- +-- !test_timestamp_arithmetic_125 -- +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_126 -- +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_127 -- +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_128 -- 2012-03-02T01:00:01 2012-03-03T02:01:02 2012-03-04T03:02:03 @@ -659,7 +1843,35 @@ 2012-03-12T11:10:11 2012-03-13T12:11:12 --- !test_timestamp_arithmetic_48 -- +-- !test_timestamp_arithmetic_129 -- +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_130 -- +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_131 -- 2012-03-01T01:00:02 2012-03-02T02:01:03 2012-03-03T03:02:04 @@ -673,7 +1885,105 @@ 2012-03-11T11:10:12 2012-03-12T12:11:13 --- !test_timestamp_arithmetic_49 -- +-- !test_timestamp_arithmetic_132 -- +2013-03-01T01:00:01 +2013-03-02T02:01:02 +2013-03-03T03:02:03 +2013-03-04T04:03:04 +2013-03-05T05:04:05 +2013-03-06T06:05:06 +2013-03-07T07:06:07 +2013-03-08T08:07:08 +2013-03-09T09:08:09 +2013-03-10T10:09:10 +2013-03-11T11:10:11 +2013-03-12T12:11:12 + +-- !test_timestamp_arithmetic_133 -- +2012-04-01T01:00:01 +2012-04-02T02:01:02 +2012-04-03T03:02:03 +2012-04-04T04:03:04 +2012-04-05T05:04:05 +2012-04-06T06:05:06 +2012-04-07T07:06:07 +2012-04-08T08:07:08 +2012-04-09T09:08:09 +2012-04-10T10:09:10 +2012-04-11T11:10:11 +2012-04-12T12:11:12 + +-- !test_timestamp_arithmetic_134 -- +2012-03-08T01:00:01 +2012-03-09T02:01:02 +2012-03-10T03:02:03 +2012-03-11T04:03:04 +2012-03-12T05:04:05 +2012-03-13T06:05:06 +2012-03-14T07:06:07 +2012-03-15T08:07:08 +2012-03-16T09:08:09 +2012-03-17T10:09:10 +2012-03-18T11:10:11 +2012-03-19T12:11:12 + +-- !test_timestamp_arithmetic_135 -- +2012-03-02T01:00:01 +2012-03-03T02:01:02 +2012-03-04T03:02:03 +2012-03-05T04:03:04 +2012-03-06T05:04:05 +2012-03-07T06:05:06 +2012-03-08T07:06:07 +2012-03-09T08:07:08 +2012-03-10T09:08:09 +2012-03-11T10:09:10 +2012-03-12T11:10:11 +2012-03-13T12:11:12 + +-- !test_timestamp_arithmetic_136 -- +2012-03-01T02:00:01 +2012-03-02T03:01:02 +2012-03-03T04:02:03 +2012-03-04T05:03:04 +2012-03-05T06:04:05 +2012-03-06T07:05:06 +2012-03-07T08:06:07 +2012-03-08T09:07:08 +2012-03-09T10:08:09 +2012-03-10T11:09:10 +2012-03-11T12:10:11 +2012-03-12T13:11:12 + +-- !test_timestamp_arithmetic_137 -- +2012-03-01T01:01:01 +2012-03-02T02:02:02 +2012-03-03T03:03:03 +2012-03-04T04:04:04 +2012-03-05T05:05:05 +2012-03-06T06:06:06 +2012-03-07T07:07:07 +2012-03-08T08:08:08 +2012-03-09T09:09:09 +2012-03-10T10:10:10 +2012-03-11T11:11:11 +2012-03-12T12:12:12 + +-- !test_timestamp_arithmetic_138 -- +2012-03-01T01:00:02 +2012-03-02T02:01:03 +2012-03-03T03:02:04 +2012-03-04T04:03:05 +2012-03-05T05:04:06 +2012-03-06T06:05:07 +2012-03-07T07:06:08 +2012-03-08T08:07:09 +2012-03-09T09:08:10 +2012-03-10T10:09:11 +2012-03-11T11:10:12 +2012-03-12T12:11:13 + +-- !test_timestamp_arithmetic_139 -- 2012-02-29T01:00:01 2012-03-01T02:01:02 2012-03-02T03:02:03 @@ -687,7 +1997,7 @@ 2012-03-10T11:10:11 2012-03-11T12:11:12 --- !test_timestamp_arithmetic_50 -- +-- !test_timestamp_arithmetic_140 -- 2012-03-01T01:00 2012-03-02T02:01:01 2012-03-03T03:02:02 diff --git a/regression-test/suites/nereids_function_p0/test_timestamp_arithmetic.sql b/regression-test/suites/nereids_function_p0/test_timestamp_arithmetic.sql index c702bf259afe40..98685479957264 100644 --- a/regression-test/suites/nereids_function_p0/test_timestamp_arithmetic.sql +++ b/regression-test/suites/nereids_function_p0/test_timestamp_arithmetic.sql @@ -2,18 +2,41 @@ set enable_nereids_planner=true; set enable_fallback_to_original_planner=false; select kdt + interval 1 day from fn_test order by kdt; select kdt + interval 1 second from fn_test order by kdt; +select interval 1 day + kdt from fn_test order by kdt; +select interval 1 second + kdt from fn_test order by kdt; select kdt - interval 1 day from fn_test order by kdt; select kdt - interval 1 second from fn_test order by kdt; select kdt + interval 1 day from fn_test_not_nullable order by kdt; select kdt + interval 1 second from fn_test_not_nullable order by kdt; +select interval 1 day + kdt from fn_test_not_nullable order by kdt; +select interval 1 second + kdt from fn_test_not_nullable order by kdt; select kdt - interval 1 day from fn_test_not_nullable order by kdt; select kdt - interval 1 second from fn_test_not_nullable order by kdt; +select kdtv2 + interval 1 year from fn_test order by kdt; +select kdtv2 + interval 1 month from fn_test order by kdt; +select kdtv2 + interval 1 week from fn_test order by kdt; select kdtv2 + interval 1 day from fn_test order by kdt; +select kdtv2 + interval 1 hour from fn_test order by kdt; +select kdtv2 + interval 1 minute from fn_test order by kdt; select kdtv2 + interval 1 second from fn_test order by kdt; +select interval 1 year + kdtv2 from fn_test order by kdt; +select interval 1 month + kdtv2 from fn_test order by kdt; +select interval 1 week + kdtv2 from fn_test order by kdt; +select interval 1 day + kdtv2 from fn_test order by kdt; +select interval 1 hour + kdtv2 from fn_test order by kdt; +select interval 1 minute + kdtv2 from fn_test order by kdt; +select interval 1 second + kdtv2 from fn_test order by kdt; select kdtv2 - interval 1 day from fn_test order by kdt; select kdtv2 - interval 1 second from fn_test order by kdt; select kdtv2 + interval 1 day from fn_test_not_nullable order by kdt; select kdtv2 + interval 1 second from fn_test_not_nullable order by kdt; +select interval 1 year + kdtv2 from fn_test_not_nullable order by kdt; +select interval 1 month + kdtv2 from fn_test_not_nullable order by kdt; +select interval 1 week + kdtv2 from fn_test_not_nullable order by kdt; +select interval 1 day + kdtv2 from fn_test_not_nullable order by kdt; +select interval 1 hour + kdtv2 from fn_test_not_nullable order by kdt; +select interval 1 minute + kdtv2 from fn_test_not_nullable order by kdt; +select interval 1 second + kdtv2 from fn_test_not_nullable order by kdt; select kdtv2 - interval 1 day from fn_test_not_nullable order by kdt; select kdtv2 - interval 1 second from fn_test_not_nullable order by kdt; select kdtm + interval 1 day from fn_test order by kdt; @@ -24,27 +47,94 @@ select kdtm + interval 1 day from fn_test_not_nullable order by kdt; select kdtm + interval 1 second from fn_test_not_nullable order by kdt; select kdtm - interval 1 day from fn_test_not_nullable order by kdt; select kdtm - interval 1 second from fn_test_not_nullable order by kdt; +select kdtmv2s1 + interval 1 year from fn_test order by kdt; +select kdtmv2s1 + interval 1 month from fn_test order by kdt; +select kdtmv2s1 + interval 1 week from fn_test order by kdt; select kdtmv2s1 + interval 1 day from fn_test order by kdt; +select kdtmv2s1 + interval 1 hour from fn_test order by kdt; +select kdtmv2s1 + interval 1 minute from fn_test order by kdt; select kdtmv2s1 + interval 1 second from fn_test order by kdt; +select interval 1 year + kdtmv2s1 from fn_test order by kdt; +select interval 1 month + kdtmv2s1 from fn_test order by kdt; +select interval 1 week + kdtmv2s1 from fn_test order by kdt; +select interval 1 day + kdtmv2s1 from fn_test order by kdt; +select interval 1 hour + kdtmv2s1 from fn_test order by kdt; +select interval 1 minute + kdtmv2s1 from fn_test order by kdt; +select interval 1 second + kdtmv2s1 from fn_test order by kdt; select kdtmv2s1 - interval 1 day from fn_test order by kdt; select kdtmv2s1 - interval 1 second from fn_test order by kdt; select kdtmv2s1 + interval 1 day from fn_test_not_nullable order by kdt; select kdtmv2s1 + interval 1 second from fn_test_not_nullable order by kdt; +select interval 1 year + kdtmv2s1 from fn_test_not_nullable order by kdt; +select interval 1 month + kdtmv2s1 from fn_test_not_nullable order by kdt; +select interval 1 week + kdtmv2s1 from fn_test_not_nullable order by kdt; +select interval 1 day + kdtmv2s1 from fn_test_not_nullable order by kdt; +select interval 1 hour + kdtmv2s1 from fn_test_not_nullable order by kdt; +select interval 1 minute + kdtmv2s1 from fn_test_not_nullable order by kdt; +select interval 1 second + kdtmv2s1 from fn_test_not_nullable order by kdt; select kdtmv2s1 - interval 1 day from fn_test_not_nullable order by kdt; select kdtmv2s1 - interval 1 second from fn_test_not_nullable order by kdt; +select kdtmv2s2 + interval 1 year from fn_test order by kdt; +select kdtmv2s2 + interval 1 month from fn_test order by kdt; +select kdtmv2s2 + interval 1 week from fn_test order by kdt; select kdtmv2s2 + interval 1 day from fn_test order by kdt; +select kdtmv2s2 + interval 1 hour from fn_test order by kdt; +select kdtmv2s2 + interval 1 minute from fn_test order by kdt; select kdtmv2s2 + interval 1 second from fn_test order by kdt; +select interval 1 year + kdtmv2s2 from fn_test order by kdt; +select interval 1 month + kdtmv2s2 from fn_test order by kdt; +select interval 1 week + kdtmv2s2 from fn_test order by kdt; +select interval 1 day + kdtmv2s2 from fn_test order by kdt; +select interval 1 hour + kdtmv2s2 from fn_test order by kdt; +select interval 1 minute + kdtmv2s2 from fn_test order by kdt; +select interval 1 second + kdtmv2s2 from fn_test order by kdt; select kdtmv2s2 - interval 1 day from fn_test order by kdt; select kdtmv2s2 - interval 1 second from fn_test order by kdt; +select kdtmv2s2 + interval 1 year from fn_test_not_nullable order by kdt; +select kdtmv2s2 + interval 1 month from fn_test_not_nullable order by kdt; +select kdtmv2s2 + interval 1 week from fn_test_not_nullable order by kdt; select kdtmv2s2 + interval 1 day from fn_test_not_nullable order by kdt; +select kdtmv2s2 + interval 1 hour from fn_test_not_nullable order by kdt; +select kdtmv2s2 + interval 1 minute from fn_test_not_nullable order by kdt; select kdtmv2s2 + interval 1 second from fn_test_not_nullable order by kdt; +select interval 1 year + kdtmv2s2 from fn_test_not_nullable order by kdt; +select interval 1 month + kdtmv2s2 from fn_test_not_nullable order by kdt; +select interval 1 week + kdtmv2s2 from fn_test_not_nullable order by kdt; +select interval 1 day + kdtmv2s2 from fn_test_not_nullable order by kdt; +select interval 1 hour + kdtmv2s2 from fn_test_not_nullable order by kdt; +select interval 1 minute + kdtmv2s2 from fn_test_not_nullable order by kdt; +select interval 1 second + kdtmv2s2 from fn_test_not_nullable order by kdt; select kdtmv2s2 - interval 1 day from fn_test_not_nullable order by kdt; select kdtmv2s2 - interval 1 second from fn_test_not_nullable order by kdt; +select kdtmv2s3 + interval 1 year from fn_test order by kdt; +select kdtmv2s3 + interval 1 month from fn_test order by kdt; +select kdtmv2s3 + interval 1 week from fn_test order by kdt; select kdtmv2s3 + interval 1 day from fn_test order by kdt; +select kdtmv2s3 + interval 1 hour from fn_test order by kdt; +select kdtmv2s3 + interval 1 minute from fn_test order by kdt; select kdtmv2s3 + interval 1 second from fn_test order by kdt; +select interval 1 year + kdtmv2s3 from fn_test order by kdt; +select interval 1 month + kdtmv2s3 from fn_test order by kdt; +select interval 1 week + kdtmv2s3 from fn_test order by kdt; +select interval 1 day + kdtmv2s3 from fn_test order by kdt; +select interval 1 hour + kdtmv2s3 from fn_test order by kdt; +select interval 1 minute + kdtmv2s3 from fn_test order by kdt; +select interval 1 second + kdtmv2s3 from fn_test order by kdt; select kdtmv2s3 - interval 1 day from fn_test order by kdt; select kdtmv2s3 - interval 1 second from fn_test order by kdt; +select kdtmv2s3 + interval 1 year from fn_test_not_nullable order by kdt; +select kdtmv2s3 + interval 1 month from fn_test_not_nullable order by kdt; +select kdtmv2s3 + interval 1 week from fn_test_not_nullable order by kdt; select kdtmv2s3 + interval 1 day from fn_test_not_nullable order by kdt; +select kdtmv2s3 + interval 1 hour from fn_test_not_nullable order by kdt; +select kdtmv2s3 + interval 1 minute from fn_test_not_nullable order by kdt; select kdtmv2s3 + interval 1 second from fn_test_not_nullable order by kdt; +select interval 1 year + kdtmv2s3 from fn_test_not_nullable order by kdt; +select interval 1 month + kdtmv2s3 from fn_test_not_nullable order by kdt; +select interval 1 week + kdtmv2s3 from fn_test_not_nullable order by kdt; +select interval 1 day + kdtmv2s3 from fn_test_not_nullable order by kdt; +select interval 1 hour + kdtmv2s3 from fn_test_not_nullable order by kdt; +select interval 1 minute + kdtmv2s3 from fn_test_not_nullable order by kdt; +select interval 1 second + kdtmv2s3 from fn_test_not_nullable order by kdt; select kdtmv2s3 - interval 1 day from fn_test_not_nullable order by kdt; select kdtmv2s3 - interval 1 second from fn_test_not_nullable order by kdt; From bcc004f7d310230377e6c71f19d11b8f444e877f Mon Sep 17 00:00:00 2001 From: jacktengg <18241664+jacktengg@users.noreply.github.com> Date: Tue, 14 Nov 2023 17:22:05 +0800 Subject: [PATCH 2/2] improve --- .../nereids/parser/LogicalPlanBuilder.java | 4 +-- .../expressions/TimestampArithmetic.java | 35 ++++++------------- .../rules/expression/FoldConstantTest.java | 2 +- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 232334ca37a11c..9d6136f9fa625b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -1334,7 +1334,7 @@ public Expression visitArithmeticBinary(ArithmeticBinaryContext ctx) { throw new ParseException("Only supported: " + Operator.ADD, ctx); } Interval interval = (Interval) left; - return new TimestampArithmetic(Operator.ADD, right, interval.value(), interval.timeUnit(), true); + return new TimestampArithmetic(Operator.ADD, right, interval.value(), interval.timeUnit()); } if (right instanceof Interval) { @@ -1347,7 +1347,7 @@ public Expression visitArithmeticBinary(ArithmeticBinaryContext ctx) { throw new ParseException("Only supported: " + Operator.ADD + " and " + Operator.SUBTRACT, ctx); } Interval interval = (Interval) right; - return new TimestampArithmetic(op, left, interval.value(), interval.timeUnit(), false); + return new TimestampArithmetic(op, left, interval.value(), interval.timeUnit()); } return ParserUtils.withOrigin(ctx, () -> { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java index ee4a2578584431..888a1a0869ccbb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/TimestampArithmetic.java @@ -46,24 +46,21 @@ public class TimestampArithmetic extends Expression implements BinaryExpression, PropagateNullableOnDateLikeV2Args { private final String funcName; - private final boolean intervalFirst; private final Operator op; private final TimeUnit timeUnit; - public TimestampArithmetic(Operator op, Expression e1, Expression e2, TimeUnit timeUnit, boolean intervalFirst) { - this(null, op, e1, e2, timeUnit, intervalFirst); + public TimestampArithmetic(Operator op, Expression e1, Expression e2, TimeUnit timeUnit) { + this(null, op, e1, e2, timeUnit); } /** * Full parameter constructor. */ - public TimestampArithmetic(String funcName, Operator op, Expression e1, Expression e2, TimeUnit timeUnit, - boolean intervalFirst) { + public TimestampArithmetic(String funcName, Operator op, Expression e1, Expression e2, TimeUnit timeUnit) { super(ImmutableList.of(e1, e2)); Preconditions.checkState(op == Operator.ADD || op == Operator.SUBTRACT); this.funcName = funcName; this.op = op; - this.intervalFirst = intervalFirst; this.timeUnit = timeUnit; } @@ -76,12 +73,11 @@ public R accept(ExpressionVisitor visitor, C context) { public TimestampArithmetic withChildren(List children) { Preconditions.checkArgument(children.size() == 2); return new TimestampArithmetic(this.funcName, this.op, children.get(0), children.get(1), - this.timeUnit, this.intervalFirst); + this.timeUnit); } public Expression withFuncName(String funcName) { - return new TimestampArithmetic(funcName, this.op, children.get(0), children.get(1), this.timeUnit, - this.intervalFirst); + return new TimestampArithmetic(funcName, this.op, children.get(0), children.get(1), this.timeUnit); } @Override @@ -145,21 +141,12 @@ public String toSql() { strBuilder.append(")"); return strBuilder.toString(); } - if (intervalFirst) { - // Non-function-call like version with interval as first operand. - strBuilder.append("INTERVAL "); - strBuilder.append(child(1).toSql()).append(" "); - strBuilder.append(timeUnit); - strBuilder.append(" ").append(op.toString()).append(" "); - strBuilder.append(child(0).toSql()); - } else { - // Non-function-call like version with interval as second operand. - strBuilder.append(child(0).toSql()); - strBuilder.append(" ").append(op.toString()).append(" "); - strBuilder.append("INTERVAL "); - strBuilder.append(child(1).toSql()).append(" "); - strBuilder.append(timeUnit); - } + // Non-function-call like version with interval as second operand. + strBuilder.append(child(0).toSql()); + strBuilder.append(" ").append(op.toString()).append(" "); + strBuilder.append("INTERVAL "); + strBuilder.append(child(1).toSql()).append(" "); + strBuilder.append(timeUnit); return strBuilder.toString(); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/FoldConstantTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/FoldConstantTest.java index 0358b3ea62d193..cae12700cc7ab7 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/FoldConstantTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/expression/FoldConstantTest.java @@ -286,7 +286,7 @@ void testTimestampFold() { // a + interval 1 day Slot a = SlotReference.of("a", DateTimeV2Type.SYSTEM_DEFAULT); - TimestampArithmetic arithmetic = new TimestampArithmetic(Operator.ADD, a, Literal.of(1), TimeUnit.DAY, false); + TimestampArithmetic arithmetic = new TimestampArithmetic(Operator.ADD, a, Literal.of(1), TimeUnit.DAY); Expression process = process(arithmetic); assertRewrite(process, process); }