diff --git a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala index cc8d204cd53..d06f8f7f99e 100644 --- a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala +++ b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala @@ -611,7 +611,8 @@ object ExpressionConverter extends SQLConfHelper with Logging { replaceWithExpressionTransformer0(expr.children.head, attributeSeq, expressionsMap), expr ) - case _: GetDateField | _: GetTimeField => + case e @ (_: GetDateField | _: GetTimeField) + if DateTimeExpressionsTransformer.EXTRACT_DATE_FIELD_MAPPING.contains(e.getClass) => ExtractDateTransformer( substraitExprName, replaceWithExpressionTransformer0(expr.children.head, attributeSeq, expressionsMap), diff --git a/gluten-ut/spark40/src/test/resources/backends-velox/sql-tests/inputs/date.sql b/gluten-ut/spark40/src/test/resources/backends-velox/sql-tests/inputs/date.sql deleted file mode 100644 index c1ae432d631..00000000000 --- a/gluten-ut/spark40/src/test/resources/backends-velox/sql-tests/inputs/date.sql +++ /dev/null @@ -1,168 +0,0 @@ --- date literals, functions and operations - -create temporary view date_view as select '2011-11-11' date_str, '1' int_str; - -select date '2019-01-01\t'; -select date '2020-01-01中文'; - -select make_date(2019, 1, 1), make_date(12, 12, 12); --- invalid month -select make_date(2000, 13, 1); --- invalid day -select make_date(2000, 1, 33); - --- invalid: year field must have at least 4 digits -select date'015'; --- invalid: month field can have at most 2 digits -select date'2021-4294967297-11'; - -select current_date = current_date; --- under ANSI mode, `current_date` can't be a function name. -select current_date() = current_date(); -select curdate(1); - --- conversions between date and unix_date (number of days from epoch) -select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000), DATE_FROM_UNIX_DATE(null); -select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(null); - -select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd'); - --- `dayofweek` accepts both date and timestamp ltz/ntz inputs. -select dayofweek('2007-02-03'), dayofweek('2009-07-30'), dayofweek('2017-05-27'), dayofweek(null), - dayofweek('1582-10-15 13:10:15'), dayofweek(timestamp_ltz'1582-10-15 13:10:15'), dayofweek(timestamp_ntz'1582-10-15 13:10:15'); - --- `weekday` accepts both date and timestamp ltz/ntz inputs. -select weekday('2007-02-03'), weekday('2009-07-30'), weekday('2017-05-27'), weekday(null), - weekday('1582-10-15 13:10:15'), weekday(timestamp_ltz'1582-10-15 13:10:15'), weekday(timestamp_ntz'1582-10-15 13:10:15'); - --- `year` accepts both date and timestamp ltz/ntz inputs. -select year('1500-01-01'), year('1582-10-15 13:10:15'), year(timestamp_ltz'1582-10-15 13:10:15'), year(timestamp_ntz'1582-10-15 13:10:15'); - --- `month` accepts both date and timestamp ltz/ntz inputs. -select month('1500-01-01'), month('1582-10-15 13:10:15'), month(timestamp_ltz'1582-10-15 13:10:15'), month(timestamp_ntz'1582-10-15 13:10:15'); - --- `dayOfYear` accepts both date and timestamp ltz/ntz inputs. -select dayOfYear('1500-01-01'), dayOfYear('1582-10-15 13:10:15'), dayOfYear(timestamp_ltz'1582-10-15 13:10:15'), dayOfYear(timestamp_ntz'1582-10-15 13:10:15'); - --- next_day -select next_day("2015-07-23", "Mon"); -select next_day("2015-07-23", "xx"); -select next_day("2015-07-23 12:12:12", "Mon"); --- next_date does not accept timestamp lzt/ntz input -select next_day(timestamp_ltz"2015-07-23 12:12:12", "Mon"); -select next_day(timestamp_ntz"2015-07-23 12:12:12", "Mon"); -select next_day("xx", "Mon"); -select next_day(null, "Mon"); -select next_day(null, "xx"); - --- date add -select date_add(date'2011-11-11', 1); -select date_add('2011-11-11', 1); -select date_add('2011-11-11', 1Y); -select date_add('2011-11-11', 1S); --- invalid cases: the second parameter can only be byte/short/int -select date_add('2011-11-11', 1L); -select date_add('2011-11-11', 1.0); -select date_add('2011-11-11', 1E1); --- the second parameter can be a string literal if it can be parsed to int -select date_add('2011-11-11', '1'); -select date_add('2011-11-11', '1.2'); --- null input leads to null result. -select date_add(null, 1); -select date_add(date'2011-11-11', null); --- `date_add` accepts both date and timestamp ltz/ntz inputs (non-ANSI mode). -select date_add(timestamp_ltz'2011-11-11 12:12:12', 1); -select date_add(timestamp_ntz'2011-11-11 12:12:12', 1); - --- date sub -select date_sub(date'2011-11-11', 1); -select date_sub('2011-11-11', 1); -select date_sub('2011-11-11', 1Y); -select date_sub('2011-11-11', 1S); --- invalid cases: the second parameter can only be byte/short/int -select date_sub('2011-11-11', 1L); -select date_sub('2011-11-11', 1.0); -select date_sub('2011-11-11', 1E1); --- the second parameter can be a string literal if it can be parsed to int -select date_sub(date'2011-11-11', '1'); -select date_sub(date'2011-11-11', '1.2'); --- null input leads to null result. -select date_sub(null, 1); -select date_sub(date'2011-11-11', null); --- `date_sub` accepts both date and timestamp ltz/ntz inputs (non-ANSI mode). -select date_sub(timestamp_ltz'2011-11-11 12:12:12', 1); -select date_sub(timestamp_ntz'2011-11-11 12:12:12', 1); - --- date add/sub with non-literal string column -select date_add('2011-11-11', int_str) from date_view; -select date_sub('2011-11-11', int_str) from date_view; -select date_add(date_str, 1) from date_view; -select date_sub(date_str, 1) from date_view; - --- date +/- number -select date '2011-11-11' + 1E1; -select date '2001-09-28' + 7Y; -select 7S + date '2001-09-28'; -select date '2001-10-01' - 7; - --- date - date -select date '2001-10-01' - date '2001-09-28'; --- if one side is string/null literal, promote it to date type. -select date '2001-10-01' - '2001-09-28'; -select '2001-10-01' - date '2001-09-28'; -select date '2001-09-28' - null; -select null - date '2019-10-06'; --- invalid: non-literal string column -select date_str - date '2001-09-28' from date_view; -select date '2001-09-28' - date_str from date_view; - --- invalid: date + string literal -select date'2011-11-11' + '1'; -select '1' + date'2011-11-11'; - --- null result: date + null -select date'2011-11-11' + null; -select null + date'2011-11-11'; - --- date +/- interval and interval + date -select date '2012-01-01' - interval '2-2' year to month, - date '2011-11-11' - interval '2' day, - date '2012-01-01' + interval '-2-2' year to month, - date '2011-11-11' + interval '-2' month, - - interval '2-2' year to month + date '2012-01-01', - interval '-2' day + date '2011-11-11'; - --- Unsupported narrow text style -select to_date('26/October/2015', 'dd/MMMMM/yyyy'); -select from_json('{"d":"26/October/2015"}', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')); -select from_csv('26/October/2015', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')); - --- Add a number of units to a timestamp or a date -select dateadd(MICROSECOND, 1001, timestamp'2022-02-25 01:02:03.123'); -select date_add(MILLISECOND, -1, timestamp'2022-02-25 01:02:03.456'); -select dateadd(SECOND, 58, timestamp'2022-02-25 01:02:03'); -select date_add(MINUTE, -100, date'2022-02-25'); -select dateadd(HOUR, -1, timestamp'2022-02-25 01:02:03'); -select date_add(DAY, 367, date'2022-02-25'); -select dateadd(WEEK, -4, timestamp'2022-02-25 01:02:03'); -select date_add(MONTH, -1, timestamp'2022-02-25 01:02:03'); -select dateadd(QUARTER, 5, date'2022-02-25'); -select date_add(YEAR, 1, date'2022-02-25'); - -select dateadd('MICROSECOND', 1001, timestamp'2022-02-25 01:02:03.123'); -select date_add('QUARTER', 5, date'2022-02-25'); - --- Get the difference between timestamps or dates in the specified units -select datediff(MICROSECOND, timestamp'2022-02-25 01:02:03.123', timestamp'2022-02-25 01:02:03.124001'); -select date_diff(MILLISECOND, timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455'); -select datediff(SECOND, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 01:03:01'); -select date_diff(MINUTE, date'2022-02-25', timestamp'2022-02-24 22:20:00'); -select datediff(HOUR, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 00:02:03'); -select date_diff(DAY, date'2022-02-25', timestamp'2023-02-27 00:00:00'); -select datediff(WEEK, timestamp'2022-02-25 01:02:03', timestamp'2022-01-28 01:02:03'); -select date_diff(MONTH, timestamp'2022-02-25 01:02:03', timestamp'2022-01-25 01:02:03'); -select datediff(QUARTER, date'2022-02-25', date'2023-05-25'); -select date_diff(YEAR, date'2022-02-25', date'2023-02-25'); - -select date_diff('MILLISECOND', timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455'); -select datediff('YEAR', date'2022-02-25', date'2023-02-25'); diff --git a/gluten-ut/spark40/src/test/resources/backends-velox/sql-tests/results/date.sql.out b/gluten-ut/spark40/src/test/resources/backends-velox/sql-tests/results/date.sql.out deleted file mode 100644 index aec320fe6b1..00000000000 --- a/gluten-ut/spark40/src/test/resources/backends-velox/sql-tests/results/date.sql.out +++ /dev/null @@ -1,1219 +0,0 @@ --- Automatically generated by SQLQueryTestSuite --- !query -create temporary view date_view as select '2011-11-11' date_str, '1' int_str --- !query schema -struct<> --- !query output - - - --- !query -select date '2019-01-01\t' --- !query schema -struct --- !query output -2019-01-01 - - --- !query -select date '2020-01-01中文' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_TYPED_LITERAL", - "sqlState" : "42604", - "messageParameters" : { - "value" : "'2020-01-01中文'", - "valueType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 26, - "fragment" : "date '2020-01-01中文'" - } ] -} - - --- !query -select make_date(2019, 1, 1), make_date(12, 12, 12) --- !query schema -struct --- !query output -2019-01-01 0012-12-12 - - --- !query -select make_date(2000, 13, 1) --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "DATETIME_FIELD_OUT_OF_BOUNDS", - "sqlState" : "22023", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "rangeMessage" : "Invalid value for MonthOfYear (valid values 1 - 12): 13" - } -} - - --- !query -select make_date(2000, 1, 33) --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "DATETIME_FIELD_OUT_OF_BOUNDS", - "sqlState" : "22023", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "rangeMessage" : "Invalid value for DayOfMonth (valid values 1 - 28/31): 33" - } -} - - --- !query -select date'015' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_TYPED_LITERAL", - "sqlState" : "42604", - "messageParameters" : { - "value" : "'015'", - "valueType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 16, - "fragment" : "date'015'" - } ] -} - - --- !query -select date'2021-4294967297-11' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_TYPED_LITERAL", - "sqlState" : "42604", - "messageParameters" : { - "value" : "'2021-4294967297-11'", - "valueType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 31, - "fragment" : "date'2021-4294967297-11'" - } ] -} - - --- !query -select current_date = current_date --- !query schema -struct<(current_date() = current_date()):boolean> --- !query output -true - - --- !query -select current_date() = current_date() --- !query schema -struct<(current_date() = current_date()):boolean> --- !query output -true - - --- !query -select curdate(1) --- !query schema -struct<> --- !query output -org.apache.spark.sql.AnalysisException -{ - "errorClass" : "WRONG_NUM_ARGS.WITHOUT_SUGGESTION", - "sqlState" : "42605", - "messageParameters" : { - "actualNum" : "1", - "docroot" : "https://spark.apache.org/docs/latest", - "expectedNum" : "0", - "functionName" : "`curdate`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 17, - "fragment" : "curdate(1)" - } ] -} - - --- !query -select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000), DATE_FROM_UNIX_DATE(null) --- !query schema -struct --- !query output -1970-01-01 1972-09-27 NULL - - --- !query -select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(null) --- !query schema -struct --- !query output -0 18600 NULL - - --- !query -select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') --- !query schema -struct --- !query output -NULL 2016-12-31 2016-12-31 - - --- !query -select to_date("16", "dd") --- !query schema -struct --- !query output -1970-01-16 - - --- !query -select to_date("02-29", "MM-dd") --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "CANNOT_PARSE_TIMESTAMP", - "sqlState" : "22007", - "messageParameters" : { - "func" : "`try_to_timestamp`", - "message" : "Invalid date 'February 29' as '1970' is not a leap year" - } -} - - --- !query -select dayofweek('2007-02-03'), dayofweek('2009-07-30'), dayofweek('2017-05-27'), dayofweek(null), - dayofweek('1582-10-15 13:10:15'), dayofweek(timestamp_ltz'1582-10-15 13:10:15'), dayofweek(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -7 5 7 NULL 6 6 6 - - --- !query -select weekday('2007-02-03'), weekday('2009-07-30'), weekday('2017-05-27'), weekday(null), - weekday('1582-10-15 13:10:15'), weekday(timestamp_ltz'1582-10-15 13:10:15'), weekday(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -5 3 5 NULL 4 4 4 - - --- !query -select year('1500-01-01'), year('1582-10-15 13:10:15'), year(timestamp_ltz'1582-10-15 13:10:15'), year(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -1500 1582 1582 1582 - - --- !query -select month('1500-01-01'), month('1582-10-15 13:10:15'), month(timestamp_ltz'1582-10-15 13:10:15'), month(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -1 10 10 10 - - --- !query -select dayOfYear('1500-01-01'), dayOfYear('1582-10-15 13:10:15'), dayOfYear(timestamp_ltz'1582-10-15 13:10:15'), dayOfYear(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -1 288 288 288 - - --- !query -select next_day("2015-07-23", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day("2015-07-23", "xx") --- !query schema -struct<> --- !query output -org.apache.spark.SparkIllegalArgumentException -{ - "errorClass" : "ILLEGAL_DAY_OF_WEEK", - "sqlState" : "22009", - "messageParameters" : { - "string" : "xx" - } -} - - --- !query -select next_day("2015-07-23 12:12:12", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day(timestamp_ltz"2015-07-23 12:12:12", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day(timestamp_ntz"2015-07-23 12:12:12", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day("xx", "Mon") --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "CAST_INVALID_INPUT", - "sqlState" : "22018", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "expression" : "'xx'", - "sourceType" : "\"STRING\"", - "targetType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 28, - "fragment" : "next_day(\"xx\", \"Mon\")" - } ] -} - - --- !query -select next_day(null, "Mon") --- !query schema -struct --- !query output -NULL - - --- !query -select next_day(null, "xx") --- !query schema -struct --- !query output -NULL - - --- !query -select date_add(date'2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1Y) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1S) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1L) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1\"", - "inputType" : "\"BIGINT\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(2011-11-11, 1)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 33, - "fragment" : "date_add('2011-11-11', 1L)" - } ] -} - - --- !query -select date_add('2011-11-11', 1.0) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1.0\"", - "inputType" : "\"DECIMAL(2,1)\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(2011-11-11, 1.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_add('2011-11-11', 1.0)" - } ] -} - - --- !query -select date_add('2011-11-11', 1E1) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"10.0\"", - "inputType" : "\"DOUBLE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(2011-11-11, 10.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_add('2011-11-11', 1E1)" - } ] -} - - --- !query -select date_add('2011-11-11', '1') --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', '1.2') --- !query schema -struct<> --- !query output -org.apache.spark.SparkNumberFormatException -{ - "errorClass" : "CAST_INVALID_INPUT", - "sqlState" : "22018", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "expression" : "'1.2'", - "sourceType" : "\"STRING\"", - "targetType" : "\"INT\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 36, - "fragment" : "date_add('2011-11-11', '1.2')" - } ] -} - - --- !query -select date_add(null, 1) --- !query schema -struct --- !query output -NULL - - --- !query -select date_add(date'2011-11-11', null) --- !query schema -struct --- !query output -NULL - - --- !query -select date_add(timestamp_ltz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add(timestamp_ntz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_sub(date'2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1Y) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1S) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1L) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1\"", - "inputType" : "\"BIGINT\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_sub(2011-11-11, 1)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 33, - "fragment" : "date_sub('2011-11-11', 1L)" - } ] -} - - --- !query -select date_sub('2011-11-11', 1.0) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1.0\"", - "inputType" : "\"DECIMAL(2,1)\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_sub(2011-11-11, 1.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_sub('2011-11-11', 1.0)" - } ] -} - - --- !query -select date_sub('2011-11-11', 1E1) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"10.0\"", - "inputType" : "\"DOUBLE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_sub(2011-11-11, 10.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_sub('2011-11-11', 1E1)" - } ] -} - - --- !query -select date_sub(date'2011-11-11', '1') --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub(date'2011-11-11', '1.2') --- !query schema -struct<> --- !query output -org.apache.spark.SparkNumberFormatException -{ - "errorClass" : "CAST_INVALID_INPUT", - "sqlState" : "22018", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "expression" : "'1.2'", - "sourceType" : "\"STRING\"", - "targetType" : "\"INT\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 40, - "fragment" : "date_sub(date'2011-11-11', '1.2')" - } ] -} - - --- !query -select date_sub(null, 1) --- !query schema -struct --- !query output -NULL - - --- !query -select date_sub(date'2011-11-11', null) --- !query schema -struct --- !query output -NULL - - --- !query -select date_sub(timestamp_ltz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub(timestamp_ntz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_add('2011-11-11', int_str) from date_view --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_sub('2011-11-11', int_str) from date_view --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_add(date_str, 1) from date_view --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_sub(date_str, 1) from date_view --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date '2011-11-11' + 1E1 --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"10.0\"", - "inputType" : "\"DOUBLE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(DATE '2011-11-11', 10.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 30, - "fragment" : "date '2011-11-11' + 1E1" - } ] -} - - --- !query -select date '2001-09-28' + 7Y --- !query schema -struct --- !query output -2001-10-05 - - --- !query -select 7S + date '2001-09-28' --- !query schema -struct --- !query output -2001-10-05 - - --- !query -select date '2001-10-01' - 7 --- !query schema -struct --- !query output -2001-09-24 - - --- !query -select date '2001-10-01' - date '2001-09-28' --- !query schema -struct<(DATE '2001-10-01' - DATE '2001-09-28'):interval day> --- !query output -3 00:00:00.000000000 - - --- !query -select date '2001-10-01' - '2001-09-28' --- !query schema -struct<(DATE '2001-10-01' - 2001-09-28):interval day> --- !query output -3 00:00:00.000000000 - - --- !query -select '2001-10-01' - date '2001-09-28' --- !query schema -struct<(2001-10-01 - DATE '2001-09-28'):interval day> --- !query output -3 00:00:00.000000000 - - --- !query -select date '2001-09-28' - null --- !query schema -struct --- !query output -NULL - - --- !query -select null - date '2019-10-06' --- !query schema -struct<(NULL - DATE '2019-10-06'):interval day> --- !query output -NULL - - --- !query -select date_str - date '2001-09-28' from date_view --- !query schema -struct<(date_str - DATE '2001-09-28'):interval day> --- !query output -3696 00:00:00.000000000 - - --- !query -select date '2001-09-28' - date_str from date_view --- !query schema -struct<(DATE '2001-09-28' - date_str):interval day> --- !query output --3696 00:00:00.000000000 - - --- !query -select date'2011-11-11' + '1' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1\"", - "inputType" : "\"DATE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(DATE '2011-11-11', 1)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 29, - "fragment" : "date'2011-11-11' + '1'" - } ] -} - - --- !query -select '1' + date'2011-11-11' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"DATE '2011-11-11'\"", - "inputType" : "\"DATE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(1, DATE '2011-11-11')\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 29, - "fragment" : "'1' + date'2011-11-11'" - } ] -} - - --- !query -select date'2011-11-11' + null --- !query schema -struct --- !query output -NULL - - --- !query -select null + date'2011-11-11' --- !query schema -struct --- !query output -NULL - - --- !query -select date '2012-01-01' - interval '2-2' year to month, - date '2011-11-11' - interval '2' day, - date '2012-01-01' + interval '-2-2' year to month, - date '2011-11-11' + interval '-2' month, - - interval '2-2' year to month + date '2012-01-01', - interval '-2' day + date '2011-11-11' --- !query schema -struct --- !query output -2009-11-01 2011-11-09 2009-11-01 2011-09-11 2009-11-01 2011-11-09 - - --- !query -select to_date('26/October/2015', 'dd/MMMMM/yyyy') --- !query schema -struct<> --- !query output -org.apache.spark.SparkUpgradeException -{ - "errorClass" : "INCONSISTENT_BEHAVIOR_CROSS_VERSION.DATETIME_PATTERN_RECOGNITION", - "sqlState" : "42K0B", - "messageParameters" : { - "config" : "\"spark.sql.legacy.timeParserPolicy\"", - "docroot" : "https://spark.apache.org/docs/latest", - "pattern" : "'dd/MMMMM/yyyy'" - } -} - - --- !query -select from_json('{"d":"26/October/2015"}', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')) --- !query schema -struct<> --- !query output -org.apache.spark.SparkUpgradeException -{ - "errorClass" : "INCONSISTENT_BEHAVIOR_CROSS_VERSION.DATETIME_PATTERN_RECOGNITION", - "sqlState" : "42K0B", - "messageParameters" : { - "config" : "\"spark.sql.legacy.timeParserPolicy\"", - "docroot" : "https://spark.apache.org/docs/latest", - "pattern" : "'dd/MMMMM/yyyy'" - } -} - - --- !query -select from_csv('26/October/2015', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')) --- !query schema -struct<> --- !query output -org.apache.spark.SparkUpgradeException -{ - "errorClass" : "INCONSISTENT_BEHAVIOR_CROSS_VERSION.DATETIME_PATTERN_RECOGNITION", - "sqlState" : "42K0B", - "messageParameters" : { - "config" : "\"spark.sql.legacy.timeParserPolicy\"", - "docroot" : "https://spark.apache.org/docs/latest", - "pattern" : "'dd/MMMMM/yyyy'" - } -} - - --- !query -select dateadd(MICROSECOND, 1001, timestamp'2022-02-25 01:02:03.123') --- !query schema -struct --- !query output -2022-02-25 01:02:03.124001 - - --- !query -select date_add(MILLISECOND, -1, timestamp'2022-02-25 01:02:03.456') --- !query schema -struct --- !query output -2022-02-25 01:02:03.455 - - --- !query -select dateadd(SECOND, 58, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-02-25 01:03:01 - - --- !query -select date_add(MINUTE, -100, date'2022-02-25') --- !query schema -struct --- !query output -2022-02-24 22:20:00 - - --- !query -select dateadd(HOUR, -1, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-02-25 00:02:03 - - --- !query -select date_add(DAY, 367, date'2022-02-25') --- !query schema -struct --- !query output -2023-02-27 00:00:00 - - --- !query -select dateadd(WEEK, -4, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-01-28 01:02:03 - - --- !query -select date_add(MONTH, -1, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-01-25 01:02:03 - - --- !query -select dateadd(QUARTER, 5, date'2022-02-25') --- !query schema -struct --- !query output -2023-05-25 00:00:00 - - --- !query -select date_add(YEAR, 1, date'2022-02-25') --- !query schema -struct --- !query output -2023-02-25 00:00:00 - - --- !query -select dateadd('MICROSECOND', 1001, timestamp'2022-02-25 01:02:03.123') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`dateadd`", - "invalidValue" : "'MICROSECOND'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 71, - "fragment" : "dateadd('MICROSECOND', 1001, timestamp'2022-02-25 01:02:03.123')" - } ] -} - - --- !query -select date_add('QUARTER', 5, date'2022-02-25') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`date_add`", - "invalidValue" : "'QUARTER'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 47, - "fragment" : "date_add('QUARTER', 5, date'2022-02-25')" - } ] -} - - --- !query -select datediff(MICROSECOND, timestamp'2022-02-25 01:02:03.123', timestamp'2022-02-25 01:02:03.124001') --- !query schema -struct --- !query output -1001 - - --- !query -select date_diff(MILLISECOND, timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455') --- !query schema -struct --- !query output --1 - - --- !query -select datediff(SECOND, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 01:03:01') --- !query schema -struct --- !query output -58 - - --- !query -select date_diff(MINUTE, date'2022-02-25', timestamp'2022-02-24 22:20:00') --- !query schema -struct --- !query output --100 - - --- !query -select datediff(HOUR, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 00:02:03') --- !query schema -struct --- !query output --1 - - --- !query -select date_diff(DAY, date'2022-02-25', timestamp'2023-02-27 00:00:00') --- !query schema -struct --- !query output -367 - - --- !query -select datediff(WEEK, timestamp'2022-02-25 01:02:03', timestamp'2022-01-28 01:02:03') --- !query schema -struct --- !query output --4 - - --- !query -select date_diff(MONTH, timestamp'2022-02-25 01:02:03', timestamp'2022-01-25 01:02:03') --- !query schema -struct --- !query output --1 - - --- !query -select datediff(QUARTER, date'2022-02-25', date'2023-05-25') --- !query schema -struct --- !query output -5 - - --- !query -select date_diff(YEAR, date'2022-02-25', date'2023-02-25') --- !query schema -struct --- !query output -1 - - --- !query -select date_diff('MILLISECOND', timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`date_diff`", - "invalidValue" : "'MILLISECOND'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 103, - "fragment" : "date_diff('MILLISECOND', timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455')" - } ] -} - - --- !query -select datediff('YEAR', date'2022-02-25', date'2023-02-25') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`datediff`", - "invalidValue" : "'YEAR'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 59, - "fragment" : "datediff('YEAR', date'2022-02-25', date'2023-02-25')" - } ] -} diff --git a/gluten-ut/spark41/src/test/resources/backends-velox/sql-tests/inputs/date.sql b/gluten-ut/spark41/src/test/resources/backends-velox/sql-tests/inputs/date.sql deleted file mode 100644 index c1ae432d631..00000000000 --- a/gluten-ut/spark41/src/test/resources/backends-velox/sql-tests/inputs/date.sql +++ /dev/null @@ -1,168 +0,0 @@ --- date literals, functions and operations - -create temporary view date_view as select '2011-11-11' date_str, '1' int_str; - -select date '2019-01-01\t'; -select date '2020-01-01中文'; - -select make_date(2019, 1, 1), make_date(12, 12, 12); --- invalid month -select make_date(2000, 13, 1); --- invalid day -select make_date(2000, 1, 33); - --- invalid: year field must have at least 4 digits -select date'015'; --- invalid: month field can have at most 2 digits -select date'2021-4294967297-11'; - -select current_date = current_date; --- under ANSI mode, `current_date` can't be a function name. -select current_date() = current_date(); -select curdate(1); - --- conversions between date and unix_date (number of days from epoch) -select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000), DATE_FROM_UNIX_DATE(null); -select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(null); - -select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd'); - --- `dayofweek` accepts both date and timestamp ltz/ntz inputs. -select dayofweek('2007-02-03'), dayofweek('2009-07-30'), dayofweek('2017-05-27'), dayofweek(null), - dayofweek('1582-10-15 13:10:15'), dayofweek(timestamp_ltz'1582-10-15 13:10:15'), dayofweek(timestamp_ntz'1582-10-15 13:10:15'); - --- `weekday` accepts both date and timestamp ltz/ntz inputs. -select weekday('2007-02-03'), weekday('2009-07-30'), weekday('2017-05-27'), weekday(null), - weekday('1582-10-15 13:10:15'), weekday(timestamp_ltz'1582-10-15 13:10:15'), weekday(timestamp_ntz'1582-10-15 13:10:15'); - --- `year` accepts both date and timestamp ltz/ntz inputs. -select year('1500-01-01'), year('1582-10-15 13:10:15'), year(timestamp_ltz'1582-10-15 13:10:15'), year(timestamp_ntz'1582-10-15 13:10:15'); - --- `month` accepts both date and timestamp ltz/ntz inputs. -select month('1500-01-01'), month('1582-10-15 13:10:15'), month(timestamp_ltz'1582-10-15 13:10:15'), month(timestamp_ntz'1582-10-15 13:10:15'); - --- `dayOfYear` accepts both date and timestamp ltz/ntz inputs. -select dayOfYear('1500-01-01'), dayOfYear('1582-10-15 13:10:15'), dayOfYear(timestamp_ltz'1582-10-15 13:10:15'), dayOfYear(timestamp_ntz'1582-10-15 13:10:15'); - --- next_day -select next_day("2015-07-23", "Mon"); -select next_day("2015-07-23", "xx"); -select next_day("2015-07-23 12:12:12", "Mon"); --- next_date does not accept timestamp lzt/ntz input -select next_day(timestamp_ltz"2015-07-23 12:12:12", "Mon"); -select next_day(timestamp_ntz"2015-07-23 12:12:12", "Mon"); -select next_day("xx", "Mon"); -select next_day(null, "Mon"); -select next_day(null, "xx"); - --- date add -select date_add(date'2011-11-11', 1); -select date_add('2011-11-11', 1); -select date_add('2011-11-11', 1Y); -select date_add('2011-11-11', 1S); --- invalid cases: the second parameter can only be byte/short/int -select date_add('2011-11-11', 1L); -select date_add('2011-11-11', 1.0); -select date_add('2011-11-11', 1E1); --- the second parameter can be a string literal if it can be parsed to int -select date_add('2011-11-11', '1'); -select date_add('2011-11-11', '1.2'); --- null input leads to null result. -select date_add(null, 1); -select date_add(date'2011-11-11', null); --- `date_add` accepts both date and timestamp ltz/ntz inputs (non-ANSI mode). -select date_add(timestamp_ltz'2011-11-11 12:12:12', 1); -select date_add(timestamp_ntz'2011-11-11 12:12:12', 1); - --- date sub -select date_sub(date'2011-11-11', 1); -select date_sub('2011-11-11', 1); -select date_sub('2011-11-11', 1Y); -select date_sub('2011-11-11', 1S); --- invalid cases: the second parameter can only be byte/short/int -select date_sub('2011-11-11', 1L); -select date_sub('2011-11-11', 1.0); -select date_sub('2011-11-11', 1E1); --- the second parameter can be a string literal if it can be parsed to int -select date_sub(date'2011-11-11', '1'); -select date_sub(date'2011-11-11', '1.2'); --- null input leads to null result. -select date_sub(null, 1); -select date_sub(date'2011-11-11', null); --- `date_sub` accepts both date and timestamp ltz/ntz inputs (non-ANSI mode). -select date_sub(timestamp_ltz'2011-11-11 12:12:12', 1); -select date_sub(timestamp_ntz'2011-11-11 12:12:12', 1); - --- date add/sub with non-literal string column -select date_add('2011-11-11', int_str) from date_view; -select date_sub('2011-11-11', int_str) from date_view; -select date_add(date_str, 1) from date_view; -select date_sub(date_str, 1) from date_view; - --- date +/- number -select date '2011-11-11' + 1E1; -select date '2001-09-28' + 7Y; -select 7S + date '2001-09-28'; -select date '2001-10-01' - 7; - --- date - date -select date '2001-10-01' - date '2001-09-28'; --- if one side is string/null literal, promote it to date type. -select date '2001-10-01' - '2001-09-28'; -select '2001-10-01' - date '2001-09-28'; -select date '2001-09-28' - null; -select null - date '2019-10-06'; --- invalid: non-literal string column -select date_str - date '2001-09-28' from date_view; -select date '2001-09-28' - date_str from date_view; - --- invalid: date + string literal -select date'2011-11-11' + '1'; -select '1' + date'2011-11-11'; - --- null result: date + null -select date'2011-11-11' + null; -select null + date'2011-11-11'; - --- date +/- interval and interval + date -select date '2012-01-01' - interval '2-2' year to month, - date '2011-11-11' - interval '2' day, - date '2012-01-01' + interval '-2-2' year to month, - date '2011-11-11' + interval '-2' month, - - interval '2-2' year to month + date '2012-01-01', - interval '-2' day + date '2011-11-11'; - --- Unsupported narrow text style -select to_date('26/October/2015', 'dd/MMMMM/yyyy'); -select from_json('{"d":"26/October/2015"}', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')); -select from_csv('26/October/2015', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')); - --- Add a number of units to a timestamp or a date -select dateadd(MICROSECOND, 1001, timestamp'2022-02-25 01:02:03.123'); -select date_add(MILLISECOND, -1, timestamp'2022-02-25 01:02:03.456'); -select dateadd(SECOND, 58, timestamp'2022-02-25 01:02:03'); -select date_add(MINUTE, -100, date'2022-02-25'); -select dateadd(HOUR, -1, timestamp'2022-02-25 01:02:03'); -select date_add(DAY, 367, date'2022-02-25'); -select dateadd(WEEK, -4, timestamp'2022-02-25 01:02:03'); -select date_add(MONTH, -1, timestamp'2022-02-25 01:02:03'); -select dateadd(QUARTER, 5, date'2022-02-25'); -select date_add(YEAR, 1, date'2022-02-25'); - -select dateadd('MICROSECOND', 1001, timestamp'2022-02-25 01:02:03.123'); -select date_add('QUARTER', 5, date'2022-02-25'); - --- Get the difference between timestamps or dates in the specified units -select datediff(MICROSECOND, timestamp'2022-02-25 01:02:03.123', timestamp'2022-02-25 01:02:03.124001'); -select date_diff(MILLISECOND, timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455'); -select datediff(SECOND, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 01:03:01'); -select date_diff(MINUTE, date'2022-02-25', timestamp'2022-02-24 22:20:00'); -select datediff(HOUR, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 00:02:03'); -select date_diff(DAY, date'2022-02-25', timestamp'2023-02-27 00:00:00'); -select datediff(WEEK, timestamp'2022-02-25 01:02:03', timestamp'2022-01-28 01:02:03'); -select date_diff(MONTH, timestamp'2022-02-25 01:02:03', timestamp'2022-01-25 01:02:03'); -select datediff(QUARTER, date'2022-02-25', date'2023-05-25'); -select date_diff(YEAR, date'2022-02-25', date'2023-02-25'); - -select date_diff('MILLISECOND', timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455'); -select datediff('YEAR', date'2022-02-25', date'2023-02-25'); diff --git a/gluten-ut/spark41/src/test/resources/backends-velox/sql-tests/results/date.sql.out b/gluten-ut/spark41/src/test/resources/backends-velox/sql-tests/results/date.sql.out deleted file mode 100644 index 533795da1c4..00000000000 --- a/gluten-ut/spark41/src/test/resources/backends-velox/sql-tests/results/date.sql.out +++ /dev/null @@ -1,1219 +0,0 @@ --- Automatically generated by SQLQueryTestSuite --- !query -create temporary view date_view as select '2011-11-11' date_str, '1' int_str --- !query schema -struct<> --- !query output - - - --- !query -select date '2019-01-01\t' --- !query schema -struct --- !query output -2019-01-01 - - --- !query -select date '2020-01-01中文' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_TYPED_LITERAL", - "sqlState" : "42604", - "messageParameters" : { - "value" : "'2020-01-01中文'", - "valueType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 26, - "fragment" : "date '2020-01-01中文'" - } ] -} - - --- !query -select make_date(2019, 1, 1), make_date(12, 12, 12) --- !query schema -struct --- !query output -2019-01-01 0012-12-12 - - --- !query -select make_date(2000, 13, 1) --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "DATETIME_FIELD_OUT_OF_BOUNDS.WITH_SUGGESTION", - "sqlState" : "22023", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "rangeMessage" : "Invalid value for MonthOfYear (valid values 1 - 12): 13" - } -} - - --- !query -select make_date(2000, 1, 33) --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "DATETIME_FIELD_OUT_OF_BOUNDS.WITH_SUGGESTION", - "sqlState" : "22023", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "rangeMessage" : "Invalid value for DayOfMonth (valid values 1 - 28/31): 33" - } -} - - --- !query -select date'015' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_TYPED_LITERAL", - "sqlState" : "42604", - "messageParameters" : { - "value" : "'015'", - "valueType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 16, - "fragment" : "date'015'" - } ] -} - - --- !query -select date'2021-4294967297-11' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_TYPED_LITERAL", - "sqlState" : "42604", - "messageParameters" : { - "value" : "'2021-4294967297-11'", - "valueType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 31, - "fragment" : "date'2021-4294967297-11'" - } ] -} - - --- !query -select current_date = current_date --- !query schema -struct<(current_date() = current_date()):boolean> --- !query output -true - - --- !query -select current_date() = current_date() --- !query schema -struct<(current_date() = current_date()):boolean> --- !query output -true - - --- !query -select curdate(1) --- !query schema -struct<> --- !query output -org.apache.spark.sql.AnalysisException -{ - "errorClass" : "WRONG_NUM_ARGS.WITHOUT_SUGGESTION", - "sqlState" : "42605", - "messageParameters" : { - "actualNum" : "1", - "docroot" : "https://spark.apache.org/docs/latest", - "expectedNum" : "0", - "functionName" : "`curdate`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 17, - "fragment" : "curdate(1)" - } ] -} - - --- !query -select DATE_FROM_UNIX_DATE(0), DATE_FROM_UNIX_DATE(1000), DATE_FROM_UNIX_DATE(null) --- !query schema -struct --- !query output -1970-01-01 1972-09-27 NULL - - --- !query -select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(null) --- !query schema -struct --- !query output -0 18600 NULL - - --- !query -select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') --- !query schema -struct --- !query output -NULL 2016-12-31 2016-12-31 - - --- !query -select to_date("16", "dd") --- !query schema -struct --- !query output -1970-01-16 - - --- !query -select to_date("02-29", "MM-dd") --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "CANNOT_PARSE_TIMESTAMP", - "sqlState" : "22007", - "messageParameters" : { - "func" : "`try_to_date`", - "message" : "Invalid date 'February 29' as '1970' is not a leap year" - } -} - - --- !query -select dayofweek('2007-02-03'), dayofweek('2009-07-30'), dayofweek('2017-05-27'), dayofweek(null), - dayofweek('1582-10-15 13:10:15'), dayofweek(timestamp_ltz'1582-10-15 13:10:15'), dayofweek(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -7 5 7 NULL 6 6 6 - - --- !query -select weekday('2007-02-03'), weekday('2009-07-30'), weekday('2017-05-27'), weekday(null), - weekday('1582-10-15 13:10:15'), weekday(timestamp_ltz'1582-10-15 13:10:15'), weekday(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -5 3 5 NULL 4 4 4 - - --- !query -select year('1500-01-01'), year('1582-10-15 13:10:15'), year(timestamp_ltz'1582-10-15 13:10:15'), year(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -1500 1582 1582 1582 - - --- !query -select month('1500-01-01'), month('1582-10-15 13:10:15'), month(timestamp_ltz'1582-10-15 13:10:15'), month(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -1 10 10 10 - - --- !query -select dayOfYear('1500-01-01'), dayOfYear('1582-10-15 13:10:15'), dayOfYear(timestamp_ltz'1582-10-15 13:10:15'), dayOfYear(timestamp_ntz'1582-10-15 13:10:15') --- !query schema -struct --- !query output -1 288 288 288 - - --- !query -select next_day("2015-07-23", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day("2015-07-23", "xx") --- !query schema -struct<> --- !query output -org.apache.spark.SparkIllegalArgumentException -{ - "errorClass" : "ILLEGAL_DAY_OF_WEEK", - "sqlState" : "22009", - "messageParameters" : { - "string" : "xx" - } -} - - --- !query -select next_day("2015-07-23 12:12:12", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day(timestamp_ltz"2015-07-23 12:12:12", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day(timestamp_ntz"2015-07-23 12:12:12", "Mon") --- !query schema -struct --- !query output -2015-07-27 - - --- !query -select next_day("xx", "Mon") --- !query schema -struct<> --- !query output -org.apache.spark.SparkDateTimeException -{ - "errorClass" : "CAST_INVALID_INPUT", - "sqlState" : "22018", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "expression" : "'xx'", - "sourceType" : "\"STRING\"", - "targetType" : "\"DATE\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 28, - "fragment" : "next_day(\"xx\", \"Mon\")" - } ] -} - - --- !query -select next_day(null, "Mon") --- !query schema -struct --- !query output -NULL - - --- !query -select next_day(null, "xx") --- !query schema -struct --- !query output -NULL - - --- !query -select date_add(date'2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1Y) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1S) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', 1L) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1\"", - "inputType" : "\"BIGINT\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(2011-11-11, 1)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 33, - "fragment" : "date_add('2011-11-11', 1L)" - } ] -} - - --- !query -select date_add('2011-11-11', 1.0) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1.0\"", - "inputType" : "\"DECIMAL(2,1)\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(2011-11-11, 1.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_add('2011-11-11', 1.0)" - } ] -} - - --- !query -select date_add('2011-11-11', 1E1) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"10.0\"", - "inputType" : "\"DOUBLE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(2011-11-11, 10.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_add('2011-11-11', 1E1)" - } ] -} - - --- !query -select date_add('2011-11-11', '1') --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add('2011-11-11', '1.2') --- !query schema -struct<> --- !query output -org.apache.spark.SparkNumberFormatException -{ - "errorClass" : "CAST_INVALID_INPUT", - "sqlState" : "22018", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "expression" : "'1.2'", - "sourceType" : "\"STRING\"", - "targetType" : "\"INT\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 36, - "fragment" : "date_add('2011-11-11', '1.2')" - } ] -} - - --- !query -select date_add(null, 1) --- !query schema -struct --- !query output -NULL - - --- !query -select date_add(date'2011-11-11', null) --- !query schema -struct --- !query output -NULL - - --- !query -select date_add(timestamp_ltz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_add(timestamp_ntz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_sub(date'2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1Y) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1S) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub('2011-11-11', 1L) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1\"", - "inputType" : "\"BIGINT\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_sub(2011-11-11, 1)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 33, - "fragment" : "date_sub('2011-11-11', 1L)" - } ] -} - - --- !query -select date_sub('2011-11-11', 1.0) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1.0\"", - "inputType" : "\"DECIMAL(2,1)\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_sub(2011-11-11, 1.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_sub('2011-11-11', 1.0)" - } ] -} - - --- !query -select date_sub('2011-11-11', 1E1) --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"10.0\"", - "inputType" : "\"DOUBLE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_sub(2011-11-11, 10.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 34, - "fragment" : "date_sub('2011-11-11', 1E1)" - } ] -} - - --- !query -select date_sub(date'2011-11-11', '1') --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub(date'2011-11-11', '1.2') --- !query schema -struct<> --- !query output -org.apache.spark.SparkNumberFormatException -{ - "errorClass" : "CAST_INVALID_INPUT", - "sqlState" : "22018", - "messageParameters" : { - "ansiConfig" : "\"spark.sql.ansi.enabled\"", - "expression" : "'1.2'", - "sourceType" : "\"STRING\"", - "targetType" : "\"INT\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 40, - "fragment" : "date_sub(date'2011-11-11', '1.2')" - } ] -} - - --- !query -select date_sub(null, 1) --- !query schema -struct --- !query output -NULL - - --- !query -select date_sub(date'2011-11-11', null) --- !query schema -struct --- !query output -NULL - - --- !query -select date_sub(timestamp_ltz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_sub(timestamp_ntz'2011-11-11 12:12:12', 1) --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_add('2011-11-11', int_str) from date_view --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_sub('2011-11-11', int_str) from date_view --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date_add(date_str, 1) from date_view --- !query schema -struct --- !query output -2011-11-12 - - --- !query -select date_sub(date_str, 1) from date_view --- !query schema -struct --- !query output -2011-11-10 - - --- !query -select date '2011-11-11' + 1E1 --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"10.0\"", - "inputType" : "\"DOUBLE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(DATE '2011-11-11', 10.0)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 30, - "fragment" : "date '2011-11-11' + 1E1" - } ] -} - - --- !query -select date '2001-09-28' + 7Y --- !query schema -struct --- !query output -2001-10-05 - - --- !query -select 7S + date '2001-09-28' --- !query schema -struct --- !query output -2001-10-05 - - --- !query -select date '2001-10-01' - 7 --- !query schema -struct --- !query output -2001-09-24 - - --- !query -select date '2001-10-01' - date '2001-09-28' --- !query schema -struct<(DATE '2001-10-01' - DATE '2001-09-28'):interval day> --- !query output -3 00:00:00.000000000 - - --- !query -select date '2001-10-01' - '2001-09-28' --- !query schema -struct<(DATE '2001-10-01' - 2001-09-28):interval day> --- !query output -3 00:00:00.000000000 - - --- !query -select '2001-10-01' - date '2001-09-28' --- !query schema -struct<(2001-10-01 - DATE '2001-09-28'):interval day> --- !query output -3 00:00:00.000000000 - - --- !query -select date '2001-09-28' - null --- !query schema -struct<(DATE '2001-09-28' - NULL):interval day> --- !query output -NULL - - --- !query -select null - date '2019-10-06' --- !query schema -struct<(NULL - DATE '2019-10-06'):interval day> --- !query output -NULL - - --- !query -select date_str - date '2001-09-28' from date_view --- !query schema -struct<(date_str - DATE '2001-09-28'):interval day> --- !query output -3696 00:00:00.000000000 - - --- !query -select date '2001-09-28' - date_str from date_view --- !query schema -struct<(DATE '2001-09-28' - date_str):interval day> --- !query output --3696 00:00:00.000000000 - - --- !query -select date'2011-11-11' + '1' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"1\"", - "inputType" : "\"DATE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(DATE '2011-11-11', 1)\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 29, - "fragment" : "date'2011-11-11' + '1'" - } ] -} - - --- !query -select '1' + date'2011-11-11' --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.ExtendedAnalysisException -{ - "errorClass" : "DATATYPE_MISMATCH.UNEXPECTED_INPUT_TYPE", - "sqlState" : "42K09", - "messageParameters" : { - "inputSql" : "\"DATE '2011-11-11'\"", - "inputType" : "\"DATE\"", - "paramIndex" : "second", - "requiredType" : "(\"INT\" or \"SMALLINT\" or \"TINYINT\")", - "sqlExpr" : "\"date_add(1, DATE '2011-11-11')\"" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 29, - "fragment" : "'1' + date'2011-11-11'" - } ] -} - - --- !query -select date'2011-11-11' + null --- !query schema -struct --- !query output -NULL - - --- !query -select null + date'2011-11-11' --- !query schema -struct --- !query output -NULL - - --- !query -select date '2012-01-01' - interval '2-2' year to month, - date '2011-11-11' - interval '2' day, - date '2012-01-01' + interval '-2-2' year to month, - date '2011-11-11' + interval '-2' month, - - interval '2-2' year to month + date '2012-01-01', - interval '-2' day + date '2011-11-11' --- !query schema -struct --- !query output -2009-11-01 2011-11-09 2009-11-01 2011-09-11 2009-11-01 2011-11-09 - - --- !query -select to_date('26/October/2015', 'dd/MMMMM/yyyy') --- !query schema -struct<> --- !query output -org.apache.spark.SparkUpgradeException -{ - "errorClass" : "INCONSISTENT_BEHAVIOR_CROSS_VERSION.DATETIME_PATTERN_RECOGNITION", - "sqlState" : "42K0B", - "messageParameters" : { - "config" : "\"spark.sql.legacy.timeParserPolicy\"", - "docroot" : "https://spark.apache.org/docs/latest", - "pattern" : "'dd/MMMMM/yyyy'" - } -} - - --- !query -select from_json('{"d":"26/October/2015"}', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')) --- !query schema -struct<> --- !query output -org.apache.spark.SparkUpgradeException -{ - "errorClass" : "INCONSISTENT_BEHAVIOR_CROSS_VERSION.DATETIME_PATTERN_RECOGNITION", - "sqlState" : "42K0B", - "messageParameters" : { - "config" : "\"spark.sql.legacy.timeParserPolicy\"", - "docroot" : "https://spark.apache.org/docs/latest", - "pattern" : "'dd/MMMMM/yyyy'" - } -} - - --- !query -select from_csv('26/October/2015', 'd Date', map('dateFormat', 'dd/MMMMM/yyyy')) --- !query schema -struct<> --- !query output -org.apache.spark.SparkUpgradeException -{ - "errorClass" : "INCONSISTENT_BEHAVIOR_CROSS_VERSION.DATETIME_PATTERN_RECOGNITION", - "sqlState" : "42K0B", - "messageParameters" : { - "config" : "\"spark.sql.legacy.timeParserPolicy\"", - "docroot" : "https://spark.apache.org/docs/latest", - "pattern" : "'dd/MMMMM/yyyy'" - } -} - - --- !query -select dateadd(MICROSECOND, 1001, timestamp'2022-02-25 01:02:03.123') --- !query schema -struct --- !query output -2022-02-25 01:02:03.124001 - - --- !query -select date_add(MILLISECOND, -1, timestamp'2022-02-25 01:02:03.456') --- !query schema -struct --- !query output -2022-02-25 01:02:03.455 - - --- !query -select dateadd(SECOND, 58, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-02-25 01:03:01 - - --- !query -select date_add(MINUTE, -100, date'2022-02-25') --- !query schema -struct --- !query output -2022-02-24 22:20:00 - - --- !query -select dateadd(HOUR, -1, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-02-25 00:02:03 - - --- !query -select date_add(DAY, 367, date'2022-02-25') --- !query schema -struct --- !query output -2023-02-27 00:00:00 - - --- !query -select dateadd(WEEK, -4, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-01-28 01:02:03 - - --- !query -select date_add(MONTH, -1, timestamp'2022-02-25 01:02:03') --- !query schema -struct --- !query output -2022-01-25 01:02:03 - - --- !query -select dateadd(QUARTER, 5, date'2022-02-25') --- !query schema -struct --- !query output -2023-05-25 00:00:00 - - --- !query -select date_add(YEAR, 1, date'2022-02-25') --- !query schema -struct --- !query output -2023-02-25 00:00:00 - - --- !query -select dateadd('MICROSECOND', 1001, timestamp'2022-02-25 01:02:03.123') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`dateadd`", - "invalidValue" : "'MICROSECOND'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 71, - "fragment" : "dateadd('MICROSECOND', 1001, timestamp'2022-02-25 01:02:03.123')" - } ] -} - - --- !query -select date_add('QUARTER', 5, date'2022-02-25') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`date_add`", - "invalidValue" : "'QUARTER'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 47, - "fragment" : "date_add('QUARTER', 5, date'2022-02-25')" - } ] -} - - --- !query -select datediff(MICROSECOND, timestamp'2022-02-25 01:02:03.123', timestamp'2022-02-25 01:02:03.124001') --- !query schema -struct --- !query output -1001 - - --- !query -select date_diff(MILLISECOND, timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455') --- !query schema -struct --- !query output --1 - - --- !query -select datediff(SECOND, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 01:03:01') --- !query schema -struct --- !query output -58 - - --- !query -select date_diff(MINUTE, date'2022-02-25', timestamp'2022-02-24 22:20:00') --- !query schema -struct --- !query output --100 - - --- !query -select datediff(HOUR, timestamp'2022-02-25 01:02:03', timestamp'2022-02-25 00:02:03') --- !query schema -struct --- !query output --1 - - --- !query -select date_diff(DAY, date'2022-02-25', timestamp'2023-02-27 00:00:00') --- !query schema -struct --- !query output -367 - - --- !query -select datediff(WEEK, timestamp'2022-02-25 01:02:03', timestamp'2022-01-28 01:02:03') --- !query schema -struct --- !query output --4 - - --- !query -select date_diff(MONTH, timestamp'2022-02-25 01:02:03', timestamp'2022-01-25 01:02:03') --- !query schema -struct --- !query output --1 - - --- !query -select datediff(QUARTER, date'2022-02-25', date'2023-05-25') --- !query schema -struct --- !query output -5 - - --- !query -select date_diff(YEAR, date'2022-02-25', date'2023-02-25') --- !query schema -struct --- !query output -1 - - --- !query -select date_diff('MILLISECOND', timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`date_diff`", - "invalidValue" : "'MILLISECOND'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 103, - "fragment" : "date_diff('MILLISECOND', timestamp'2022-02-25 01:02:03.456', timestamp'2022-02-25 01:02:03.455')" - } ] -} - - --- !query -select datediff('YEAR', date'2022-02-25', date'2023-02-25') --- !query schema -struct<> --- !query output -org.apache.spark.sql.catalyst.parser.ParseException -{ - "errorClass" : "INVALID_PARAMETER_VALUE.DATETIME_UNIT", - "sqlState" : "22023", - "messageParameters" : { - "functionName" : "`datediff`", - "invalidValue" : "'YEAR'", - "parameter" : "`unit`" - }, - "queryContext" : [ { - "objectType" : "", - "objectName" : "", - "startIndex" : 8, - "stopIndex" : 59, - "fragment" : "datediff('YEAR', date'2022-02-25', date'2023-02-25')" - } ] -} diff --git a/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala b/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala index 741c1f7a19e..fdd41f28187 100644 --- a/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala +++ b/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala @@ -238,6 +238,7 @@ object ExpressionNames { final val TIMESTAMP_MILLIS = "timestamp_millis" final val TIMESTAMP_MICROS = "timestamp_micros" final val PRECYSE_TIMESTAMP_CONVERSION = "precise_timestamp_conversion" + final val DAY_NAME = "dayname" // JSON functions final val GET_JSON_OBJECT = "get_json_object" diff --git a/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala b/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala index 5d2d3258a7e..705c6c4af54 100644 --- a/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala +++ b/shims/spark40/src/main/scala/org/apache/gluten/sql/shims/spark40/Spark40Shims.scala @@ -97,7 +97,8 @@ class Spark40Shims extends SparkShims { Sig[ArrayAppend](ExpressionNames.ARRAY_APPEND), Sig[UrlEncode](ExpressionNames.URL_ENCODE), Sig[KnownNotContainsNull](ExpressionNames.KNOWN_NOT_CONTAINS_NULL), - Sig[UrlDecode](ExpressionNames.URL_DECODE) + Sig[UrlDecode](ExpressionNames.URL_DECODE), + Sig[DayName](ExpressionNames.DAY_NAME) ) } diff --git a/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala b/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala index bb3a7d72488..9ea5ebce2fa 100644 --- a/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala +++ b/shims/spark41/src/main/scala/org/apache/gluten/sql/shims/spark41/Spark41Shims.scala @@ -96,7 +96,8 @@ class Spark41Shims extends SparkShims { Sig[ArrayAppend](ExpressionNames.ARRAY_APPEND), Sig[UrlEncode](ExpressionNames.URL_ENCODE), Sig[KnownNotContainsNull](ExpressionNames.KNOWN_NOT_CONTAINS_NULL), - Sig[UrlDecode](ExpressionNames.URL_DECODE) + Sig[UrlDecode](ExpressionNames.URL_DECODE), + Sig[DayName](ExpressionNames.DAY_NAME) ) }