From dc60e4922458165e447a72fdab424bdfe14a0dab Mon Sep 17 00:00:00 2001 From: Rui Wang Date: Wed, 24 May 2023 11:49:55 -0700 Subject: [PATCH 1/4] [SPARK-43779][SQL] ParseToDate should load the EvalMode in main thread. --- .../spark/sql/catalyst/expressions/datetimeExpressions.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala index 57c70f4d9bd38..9bc499417c1a6 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala @@ -2044,12 +2044,13 @@ case class MonthsBetween( case class ParseToDate( left: Expression, format: Option[Expression], - timeZoneId: Option[String] = None) + timeZoneId: Option[String] = None, + evalMode: EvalMode.Value = EvalMode.fromSQLConf(SQLConf.get)) extends RuntimeReplaceable with ImplicitCastInputTypes with TimeZoneAwareExpression { override lazy val replacement: Expression = format.map { f => Cast(GetTimestamp(left, f, TimestampType, timeZoneId), DateType, timeZoneId) - }.getOrElse(Cast(left, DateType, timeZoneId)) // backwards compatibility + }.getOrElse(Cast(left, DateType, timeZoneId, evalMode)) // backwards compatibility def this(left: Expression, format: Expression) = { this(left, Option(format)) From 494b54760b7de28342842ee38403d30ca662a53b Mon Sep 17 00:00:00 2001 From: Rui Wang Date: Wed, 24 May 2023 17:56:05 -0700 Subject: [PATCH 2/4] update --- .../analyzer-results/ansi/date.sql.out | 8 +++--- .../ansi/datetime-parsing-invalid.sql.out | 4 +-- .../sql-tests/analyzer-results/date.sql.out | 8 +++--- .../analyzer-results/datetime-legacy.sql.out | 8 +++--- .../datetime-parsing-invalid.sql.out | 4 +-- .../analyzer-results/group-by-filter.sql.out | 8 +++--- .../analyzer-results/postgreSQL/text.sql.out | 4 +-- .../predicate-functions.sql.out | 26 +++++++++---------- .../analyzer-results/timestamp-ltz.sql.out | 2 +- .../analyzer-results/timestamp-ntz.sql.out | 2 +- .../exists-within-and-or.sql.out | 12 +++------ 11 files changed, 40 insertions(+), 46 deletions(-) diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out index 3929e02dd1b46..d73f028d391a5 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out @@ -148,21 +148,21 @@ select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(n -- !query select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') -- !query analysis -Project [to_date(cast(null as string), None, Some(America/Los_Angeles)) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles)) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles)) AS to_date(2016-12-31, yyyy-MM-dd)#x] +Project [to_date(cast(null as string), None, Some(America/Los_Angeles), ANSI) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), ANSI) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), ANSI) AS to_date(2016-12-31, yyyy-MM-dd)#x] +- OneRowRelation -- !query select to_date("16", "dd") -- !query analysis -Project [to_date(16, Some(dd), Some(America/Los_Angeles)) AS to_date(16, dd)#x] +Project [to_date(16, Some(dd), Some(America/Los_Angeles), ANSI) AS to_date(16, dd)#x] +- OneRowRelation -- !query select to_date("02-29", "MM-dd") -- !query analysis -Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles)) AS to_date(02-29, MM-dd)#x] +Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), ANSI) AS to_date(02-29, MM-dd)#x] +- OneRowRelation @@ -729,7 +729,7 @@ select date '2012-01-01' - interval '2-2' year to month, -- !query select to_date('26/October/2015', 'dd/MMMMM/yyyy') -- !query analysis -Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles)) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), ANSI) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out index 0c7f2cb193da9..f269f7f1e28b9 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out @@ -128,14 +128,14 @@ Project [from_csv(StructField(date,DateType,true), (dateFormat,yyyy-DDD), 2018-3 -- !query select to_date("2020-01-27T20:06:11.847", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles)) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), ANSI) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation -- !query select to_date("Unparseable", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles)) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), ANSI) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out index baa7cc3554087..c54a3a8a93fd1 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out @@ -148,21 +148,21 @@ select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(n -- !query select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') -- !query analysis -Project [to_date(cast(null as string), None, Some(America/Los_Angeles)) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles)) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles)) AS to_date(2016-12-31, yyyy-MM-dd)#x] +Project [to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31, yyyy-MM-dd)#x] +- OneRowRelation -- !query select to_date("16", "dd") -- !query analysis -Project [to_date(16, Some(dd), Some(America/Los_Angeles)) AS to_date(16, dd)#x] +Project [to_date(16, Some(dd), Some(America/Los_Angeles), LEGACY) AS to_date(16, dd)#x] +- OneRowRelation -- !query select to_date("02-29", "MM-dd") -- !query analysis -Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles)) AS to_date(02-29, MM-dd)#x] +Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(02-29, MM-dd)#x] +- OneRowRelation @@ -804,7 +804,7 @@ select date '2012-01-01' - interval '2-2' year to month, -- !query select to_date('26/October/2015', 'dd/MMMMM/yyyy') -- !query analysis -Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles)) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), LEGACY) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out index 9eb83778af839..4a3cf735f82ed 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out @@ -148,21 +148,21 @@ select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(n -- !query select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') -- !query analysis -Project [to_date(cast(null as string), None, Some(America/Los_Angeles)) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles)) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles)) AS to_date(2016-12-31, yyyy-MM-dd)#x] +Project [to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31, yyyy-MM-dd)#x] +- OneRowRelation -- !query select to_date("16", "dd") -- !query analysis -Project [to_date(16, Some(dd), Some(America/Los_Angeles)) AS to_date(16, dd)#x] +Project [to_date(16, Some(dd), Some(America/Los_Angeles), LEGACY) AS to_date(16, dd)#x] +- OneRowRelation -- !query select to_date("02-29", "MM-dd") -- !query analysis -Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles)) AS to_date(02-29, MM-dd)#x] +Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(02-29, MM-dd)#x] +- OneRowRelation @@ -804,7 +804,7 @@ select date '2012-01-01' - interval '2-2' year to month, -- !query select to_date('26/October/2015', 'dd/MMMMM/yyyy') -- !query analysis -Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles)) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), LEGACY) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out index 783a4b2156f4e..733cb9493a69e 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out @@ -128,14 +128,14 @@ Project [from_csv(StructField(date,DateType,true), (dateFormat,yyyy-DDD), 2018-3 -- !query select to_date("2020-01-27T20:06:11.847", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles)) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), LEGACY) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation -- !query select to_date("Unparseable", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles)) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), LEGACY) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out index bfb11e1e88e96..2811b425a5b9e 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out @@ -102,7 +102,7 @@ SELECT COUNT(id) FILTER (WHERE hiredate = date "2001-01-01") FROM emp -- !query SELECT COUNT(id) FILTER (WHERE hiredate = to_date('2001-01-01 00:00:00')) FROM emp -- !query analysis -Aggregate [count(id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles)))) AS count(id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +Aggregate [count(id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles), LEGACY))) AS count(id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] @@ -162,7 +162,7 @@ Aggregate [count(distinct id#x) AS count(DISTINCT id)#xL, count(distinct id#x) F -- !query SELECT COUNT(DISTINCT id) FILTER (WHERE hiredate = to_timestamp("2001-01-01 00:00:00")), COUNT(DISTINCT id) FILTER (WHERE hiredate = to_date('2001-01-01 00:00:00')) FROM emp -- !query analysis -Aggregate [count(distinct id#x) FILTER (WHERE (cast(hiredate#x as timestamp) = to_timestamp(2001-01-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_timestamp(2001-01-01 00:00:00)))#xL, count(distinct id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles)))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +Aggregate [count(distinct id#x) FILTER (WHERE (cast(hiredate#x as timestamp) = to_timestamp(2001-01-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_timestamp(2001-01-01 00:00:00)))#xL, count(distinct id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles), LEGACY))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] @@ -356,7 +356,7 @@ SELECT dept_id, SUM(salary) FILTER (WHERE hiredate > date "2003-01-01") FROM emp -- !query SELECT dept_id, SUM(salary) FILTER (WHERE hiredate > to_date("2003-01-01")) FROM emp GROUP BY dept_id -- !query analysis -Aggregate [dept_id#x], [dept_id#x, sum(salary#x) FILTER (WHERE (hiredate#x > to_date(2003-01-01, None, Some(America/Los_Angeles)))) AS sum(salary) FILTER (WHERE (hiredate > to_date(2003-01-01)))#x] +Aggregate [dept_id#x], [dept_id#x, sum(salary#x) FILTER (WHERE (hiredate#x > to_date(2003-01-01, None, Some(America/Los_Angeles), LEGACY))) AS sum(salary) FILTER (WHERE (hiredate > to_date(2003-01-01)))#x] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] @@ -464,7 +464,7 @@ SELECT 'foo', SUM(salary) FILTER (WHERE hiredate >= date "2003-01-01") FROM emp -- !query SELECT 'foo', SUM(salary) FILTER (WHERE hiredate >= to_date("2003-01-01")) FROM emp GROUP BY 1 -- !query analysis -Aggregate [foo], [foo AS foo#x, sum(salary#x) FILTER (WHERE (hiredate#x >= to_date(2003-01-01, None, Some(America/Los_Angeles)))) AS sum(salary) FILTER (WHERE (hiredate >= to_date(2003-01-01)))#x] +Aggregate [foo], [foo AS foo#x, sum(salary#x) FILTER (WHERE (hiredate#x >= to_date(2003-01-01, None, Some(America/Los_Angeles), LEGACY))) AS sum(salary) FILTER (WHERE (hiredate >= to_date(2003-01-01)))#x] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out index 16031e1d0ed8a..b4f1703b5cab3 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out @@ -84,7 +84,7 @@ Project [concat(one) AS concat(one)#x] -- !query select concat(1,2,3,'hello',true, false, to_date('20100309','yyyyMMdd')) -- !query analysis -Project [concat(cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles)) as string)) AS concat(1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +Project [concat(cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles), ANSI) as string)) AS concat(1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +- OneRowRelation @@ -98,7 +98,7 @@ Project [concat_ws(#, one) AS concat_ws(#, one)#x] -- !query select concat_ws('#',1,2,3,'hello',true, false, to_date('20100309','yyyyMMdd')) -- !query analysis -Project [concat_ws(#, cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles)) as string)) AS concat_ws(#, 1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +Project [concat_ws(#, cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles), ANSI) as string)) AS concat_ws(#, 1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out index 604d680a40544..6b72f2f6791ab 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out @@ -65,14 +65,14 @@ Project [(cast(1.5 as double) > cast(0.5 as double)) AS (1.5 > 0.5)#x] -- !query select to_date('2009-07-30 04:17:52') > to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) > to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles))) AS (to_date(2009-07-30 04:17:52) > to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) > to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) > to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') > '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) > cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) > 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) > cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) > 2009-07-30 04:17:52)#x] +- OneRowRelation @@ -114,14 +114,14 @@ Project [(cast(1.5 as double) >= cast(0.5 as double)) AS (1.5 >= 0.5)#x] -- !query select to_date('2009-07-30 04:17:52') >= to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) >= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles))) AS (to_date(2009-07-30 04:17:52) >= to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) >= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) >= to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') >= '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) >= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) >= 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) >= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) >= 2009-07-30 04:17:52)#x] +- OneRowRelation @@ -163,14 +163,14 @@ Project [(cast(0.5 as double) < cast(1.5 as double)) AS (0.5 < 1.5)#x] -- !query select to_date('2009-07-30 04:17:52') < to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) < to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles))) AS (to_date(2009-07-30 04:17:52) < to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) < to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) < to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') < '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) < cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) < 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) < cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) < 2009-07-30 04:17:52)#x] +- OneRowRelation @@ -212,49 +212,49 @@ Project [(cast(0.5 as double) <= cast(1.5 as double)) AS (0.5 <= 1.5)#x] -- !query select to_date('2009-07-30 04:17:52') <= to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) <= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles))) AS (to_date(2009-07-30 04:17:52) <= to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) <= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) <= to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') <= '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles)) <= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) <= 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) <= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) <= 2009-07-30 04:17:52)#x] +- OneRowRelation -- !query select to_date('2017-03-01') = to_timestamp('2017-03-01 00:00:00') -- !query analysis -Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles)) as timestamp) = to_timestamp(2017-03-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) = to_timestamp(2017-03-01 00:00:00))#x] +Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp) = to_timestamp(2017-03-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) = to_timestamp(2017-03-01 00:00:00))#x] +- OneRowRelation -- !query select to_timestamp('2017-03-01 00:00:01') > to_date('2017-03-01') -- !query analysis -Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) > cast(to_date(2017-03-01, None, Some(America/Los_Angeles)) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) > to_date(2017-03-01))#x] +Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) > cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) > to_date(2017-03-01))#x] +- OneRowRelation -- !query select to_timestamp('2017-03-01 00:00:01') >= to_date('2017-03-01') -- !query analysis -Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) >= cast(to_date(2017-03-01, None, Some(America/Los_Angeles)) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) >= to_date(2017-03-01))#x] +Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) >= cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) >= to_date(2017-03-01))#x] +- OneRowRelation -- !query select to_date('2017-03-01') < to_timestamp('2017-03-01 00:00:01') -- !query analysis -Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles)) as timestamp) < to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) < to_timestamp(2017-03-01 00:00:01))#x] +Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp) < to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) < to_timestamp(2017-03-01 00:00:01))#x] +- OneRowRelation -- !query select to_date('2017-03-01') <= to_timestamp('2017-03-01 00:00:01') -- !query analysis -Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles)) as timestamp) <= to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) <= to_timestamp(2017-03-01 00:00:01))#x] +Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp) <= to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) <= to_timestamp(2017-03-01 00:00:01))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out index a965fac864849..9fb1038ad2f04 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out @@ -15,7 +15,7 @@ Project [to_timestamp_ltz(cast(null as string), None, TimestampType, Some(Americ -- !query select to_timestamp_ltz(to_date(null)), to_timestamp_ltz(to_date('2016-12-31')) -- !query analysis -Project [to_timestamp_ltz(to_date(cast(null as string), None, Some(America/Los_Angeles)), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(NULL))#x, to_timestamp_ltz(to_date(2016-12-31, None, Some(America/Los_Angeles)), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(2016-12-31))#x] +Project [to_timestamp_ltz(to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(NULL))#x, to_timestamp_ltz(to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(2016-12-31))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out index bb5e4de56e085..12a3a4f619228 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out @@ -16,7 +16,7 @@ Project [to_timestamp_ntz(cast(null as string), None, TimestampNTZType, Some(Ame -- !query select to_timestamp_ntz(to_date(null)), to_timestamp_ntz(to_date('2016-12-31')) -- !query analysis -Project [to_timestamp_ntz(to_date(cast(null as string), None, Some(America/Los_Angeles)), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(NULL))#x, to_timestamp_ntz(to_date(2016-12-31, None, Some(America/Los_Angeles)), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(2016-12-31))#x] +Project [to_timestamp_ntz(to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(NULL))#x, to_timestamp_ntz(to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(2016-12-31))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out index b6f4c5c5c319d..f0006a884abba 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out @@ -119,16 +119,10 @@ WHERE ( NOT EXISTS (SELECT * WHERE emp.emp_name = emp_name OR bonus_amt < emp.salary) ) -- !query schema -struct +struct<> -- !query output -emp 1 10.0 -emp 1 20.0 -emp 2 100.0 -emp 2 300.0 -emp 3 300.0 -emp 4 100.0 -emp 5 1000.0 -emp 6 - no dept 500.0 +java.lang.IllegalArgumentException +null -- !query From 6441539aeb146d0f6dff2c64c8616b75459b858b Mon Sep 17 00:00:00 2001 From: Rui Wang Date: Wed, 24 May 2023 20:02:19 -0700 Subject: [PATCH 3/4] updagee --- .../expressions/datetimeExpressions.scala | 7 ++--- .../analyzer-results/ansi/date.sql.out | 8 +++--- .../ansi/datetime-parsing-invalid.sql.out | 4 +-- .../sql-tests/analyzer-results/date.sql.out | 8 +++--- .../analyzer-results/datetime-legacy.sql.out | 8 +++--- .../datetime-parsing-invalid.sql.out | 4 +-- .../analyzer-results/group-by-filter.sql.out | 8 +++--- .../analyzer-results/postgreSQL/text.sql.out | 4 +-- .../predicate-functions.sql.out | 26 +++++++++---------- .../analyzer-results/timestamp-ltz.sql.out | 2 +- .../analyzer-results/timestamp-ntz.sql.out | 2 +- .../exists-within-and-or.sql.out | 12 ++++++--- 12 files changed, 50 insertions(+), 43 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala index 9bc499417c1a6..2db3cf2b3e4d3 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala @@ -2045,12 +2045,13 @@ case class ParseToDate( left: Expression, format: Option[Expression], timeZoneId: Option[String] = None, - evalMode: EvalMode.Value = EvalMode.fromSQLConf(SQLConf.get)) + ansiEnabled: Boolean = SQLConf.get.ansiEnabled) extends RuntimeReplaceable with ImplicitCastInputTypes with TimeZoneAwareExpression { override lazy val replacement: Expression = format.map { f => - Cast(GetTimestamp(left, f, TimestampType, timeZoneId), DateType, timeZoneId) - }.getOrElse(Cast(left, DateType, timeZoneId, evalMode)) // backwards compatibility + Cast(GetTimestamp(left, f, TimestampType, timeZoneId, ansiEnabled), DateType, timeZoneId) + }.getOrElse(Cast(left, DateType, timeZoneId, + EvalMode.fromBoolean(ansiEnabled))) // backwards compatibility def this(left: Expression, format: Expression) = { this(left, Option(format)) diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out index d73f028d391a5..b31fd43997208 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/date.sql.out @@ -148,21 +148,21 @@ select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(n -- !query select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') -- !query analysis -Project [to_date(cast(null as string), None, Some(America/Los_Angeles), ANSI) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), ANSI) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), ANSI) AS to_date(2016-12-31, yyyy-MM-dd)#x] +Project [to_date(cast(null as string), None, Some(America/Los_Angeles), true) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), true) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), true) AS to_date(2016-12-31, yyyy-MM-dd)#x] +- OneRowRelation -- !query select to_date("16", "dd") -- !query analysis -Project [to_date(16, Some(dd), Some(America/Los_Angeles), ANSI) AS to_date(16, dd)#x] +Project [to_date(16, Some(dd), Some(America/Los_Angeles), true) AS to_date(16, dd)#x] +- OneRowRelation -- !query select to_date("02-29", "MM-dd") -- !query analysis -Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), ANSI) AS to_date(02-29, MM-dd)#x] +Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), true) AS to_date(02-29, MM-dd)#x] +- OneRowRelation @@ -729,7 +729,7 @@ select date '2012-01-01' - interval '2-2' year to month, -- !query select to_date('26/October/2015', 'dd/MMMMM/yyyy') -- !query analysis -Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), ANSI) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), true) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out index f269f7f1e28b9..f7016ac36563d 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/ansi/datetime-parsing-invalid.sql.out @@ -128,14 +128,14 @@ Project [from_csv(StructField(date,DateType,true), (dateFormat,yyyy-DDD), 2018-3 -- !query select to_date("2020-01-27T20:06:11.847", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), ANSI) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), true) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation -- !query select to_date("Unparseable", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), ANSI) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), true) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out index c54a3a8a93fd1..a0334e17426e8 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/date.sql.out @@ -148,21 +148,21 @@ select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(n -- !query select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') -- !query analysis -Project [to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31, yyyy-MM-dd)#x] +Project [to_date(cast(null as string), None, Some(America/Los_Angeles), false) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), false) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), false) AS to_date(2016-12-31, yyyy-MM-dd)#x] +- OneRowRelation -- !query select to_date("16", "dd") -- !query analysis -Project [to_date(16, Some(dd), Some(America/Los_Angeles), LEGACY) AS to_date(16, dd)#x] +Project [to_date(16, Some(dd), Some(America/Los_Angeles), false) AS to_date(16, dd)#x] +- OneRowRelation -- !query select to_date("02-29", "MM-dd") -- !query analysis -Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(02-29, MM-dd)#x] +Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), false) AS to_date(02-29, MM-dd)#x] +- OneRowRelation @@ -804,7 +804,7 @@ select date '2012-01-01' - interval '2-2' year to month, -- !query select to_date('26/October/2015', 'dd/MMMMM/yyyy') -- !query analysis -Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), LEGACY) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), false) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out index 4a3cf735f82ed..8d5f157689221 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-legacy.sql.out @@ -148,21 +148,21 @@ select UNIX_DATE(DATE('1970-01-01')), UNIX_DATE(DATE('2020-12-04')), UNIX_DATE(n -- !query select to_date(null), to_date('2016-12-31'), to_date('2016-12-31', 'yyyy-MM-dd') -- !query analysis -Project [to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(2016-12-31, yyyy-MM-dd)#x] +Project [to_date(cast(null as string), None, Some(America/Los_Angeles), false) AS to_date(NULL)#x, to_date(2016-12-31, None, Some(America/Los_Angeles), false) AS to_date(2016-12-31)#x, to_date(2016-12-31, Some(yyyy-MM-dd), Some(America/Los_Angeles), false) AS to_date(2016-12-31, yyyy-MM-dd)#x] +- OneRowRelation -- !query select to_date("16", "dd") -- !query analysis -Project [to_date(16, Some(dd), Some(America/Los_Angeles), LEGACY) AS to_date(16, dd)#x] +Project [to_date(16, Some(dd), Some(America/Los_Angeles), false) AS to_date(16, dd)#x] +- OneRowRelation -- !query select to_date("02-29", "MM-dd") -- !query analysis -Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), LEGACY) AS to_date(02-29, MM-dd)#x] +Project [to_date(02-29, Some(MM-dd), Some(America/Los_Angeles), false) AS to_date(02-29, MM-dd)#x] +- OneRowRelation @@ -804,7 +804,7 @@ select date '2012-01-01' - interval '2-2' year to month, -- !query select to_date('26/October/2015', 'dd/MMMMM/yyyy') -- !query analysis -Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), LEGACY) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +Project [to_date(26/October/2015, Some(dd/MMMMM/yyyy), Some(America/Los_Angeles), false) AS to_date(26/October/2015, dd/MMMMM/yyyy)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out index 733cb9493a69e..d1cba2b48b71a 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/datetime-parsing-invalid.sql.out @@ -128,14 +128,14 @@ Project [from_csv(StructField(date,DateType,true), (dateFormat,yyyy-DDD), 2018-3 -- !query select to_date("2020-01-27T20:06:11.847", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), LEGACY) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(2020-01-27T20:06:11.847, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), false) AS to_date(2020-01-27T20:06:11.847, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation -- !query select to_date("Unparseable", "yyyy-MM-dd HH:mm:ss.SSS") -- !query analysis -Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), LEGACY) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +Project [to_date(Unparseable, Some(yyyy-MM-dd HH:mm:ss.SSS), Some(America/Los_Angeles), false) AS to_date(Unparseable, yyyy-MM-dd HH:mm:ss.SSS)#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out index 2811b425a5b9e..7b221d8036d60 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/group-by-filter.sql.out @@ -102,7 +102,7 @@ SELECT COUNT(id) FILTER (WHERE hiredate = date "2001-01-01") FROM emp -- !query SELECT COUNT(id) FILTER (WHERE hiredate = to_date('2001-01-01 00:00:00')) FROM emp -- !query analysis -Aggregate [count(id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles), LEGACY))) AS count(id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +Aggregate [count(id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles), false))) AS count(id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] @@ -162,7 +162,7 @@ Aggregate [count(distinct id#x) AS count(DISTINCT id)#xL, count(distinct id#x) F -- !query SELECT COUNT(DISTINCT id) FILTER (WHERE hiredate = to_timestamp("2001-01-01 00:00:00")), COUNT(DISTINCT id) FILTER (WHERE hiredate = to_date('2001-01-01 00:00:00')) FROM emp -- !query analysis -Aggregate [count(distinct id#x) FILTER (WHERE (cast(hiredate#x as timestamp) = to_timestamp(2001-01-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_timestamp(2001-01-01 00:00:00)))#xL, count(distinct id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles), LEGACY))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +Aggregate [count(distinct id#x) FILTER (WHERE (cast(hiredate#x as timestamp) = to_timestamp(2001-01-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_timestamp(2001-01-01 00:00:00)))#xL, count(distinct id#x) FILTER (WHERE (hiredate#x = to_date(2001-01-01 00:00:00, None, Some(America/Los_Angeles), false))) AS count(DISTINCT id) FILTER (WHERE (hiredate = to_date(2001-01-01 00:00:00)))#xL] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] @@ -356,7 +356,7 @@ SELECT dept_id, SUM(salary) FILTER (WHERE hiredate > date "2003-01-01") FROM emp -- !query SELECT dept_id, SUM(salary) FILTER (WHERE hiredate > to_date("2003-01-01")) FROM emp GROUP BY dept_id -- !query analysis -Aggregate [dept_id#x], [dept_id#x, sum(salary#x) FILTER (WHERE (hiredate#x > to_date(2003-01-01, None, Some(America/Los_Angeles), LEGACY))) AS sum(salary) FILTER (WHERE (hiredate > to_date(2003-01-01)))#x] +Aggregate [dept_id#x], [dept_id#x, sum(salary#x) FILTER (WHERE (hiredate#x > to_date(2003-01-01, None, Some(America/Los_Angeles), false))) AS sum(salary) FILTER (WHERE (hiredate > to_date(2003-01-01)))#x] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] @@ -464,7 +464,7 @@ SELECT 'foo', SUM(salary) FILTER (WHERE hiredate >= date "2003-01-01") FROM emp -- !query SELECT 'foo', SUM(salary) FILTER (WHERE hiredate >= to_date("2003-01-01")) FROM emp GROUP BY 1 -- !query analysis -Aggregate [foo], [foo AS foo#x, sum(salary#x) FILTER (WHERE (hiredate#x >= to_date(2003-01-01, None, Some(America/Los_Angeles), LEGACY))) AS sum(salary) FILTER (WHERE (hiredate >= to_date(2003-01-01)))#x] +Aggregate [foo], [foo AS foo#x, sum(salary#x) FILTER (WHERE (hiredate#x >= to_date(2003-01-01, None, Some(America/Los_Angeles), false))) AS sum(salary) FILTER (WHERE (hiredate >= to_date(2003-01-01)))#x] +- SubqueryAlias emp +- View (`EMP`, [id#x,emp_name#x,hiredate#x,salary#x,dept_id#x]) +- Project [cast(id#x as int) AS id#x, cast(emp_name#x as string) AS emp_name#x, cast(hiredate#x as date) AS hiredate#x, cast(salary#x as double) AS salary#x, cast(dept_id#x as int) AS dept_id#x] diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out index b4f1703b5cab3..6e0345c2955da 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/postgreSQL/text.sql.out @@ -84,7 +84,7 @@ Project [concat(one) AS concat(one)#x] -- !query select concat(1,2,3,'hello',true, false, to_date('20100309','yyyyMMdd')) -- !query analysis -Project [concat(cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles), ANSI) as string)) AS concat(1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +Project [concat(cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles), true) as string)) AS concat(1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +- OneRowRelation @@ -98,7 +98,7 @@ Project [concat_ws(#, one) AS concat_ws(#, one)#x] -- !query select concat_ws('#',1,2,3,'hello',true, false, to_date('20100309','yyyyMMdd')) -- !query analysis -Project [concat_ws(#, cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles), ANSI) as string)) AS concat_ws(#, 1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +Project [concat_ws(#, cast(1 as string), cast(2 as string), cast(3 as string), hello, cast(true as string), cast(false as string), cast(to_date(20100309, Some(yyyyMMdd), Some(America/Los_Angeles), true) as string)) AS concat_ws(#, 1, 2, 3, hello, true, false, to_date(20100309, yyyyMMdd))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out index 6b72f2f6791ab..a04ee20fa7996 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/predicate-functions.sql.out @@ -65,14 +65,14 @@ Project [(cast(1.5 as double) > cast(0.5 as double)) AS (1.5 > 0.5)#x] -- !query select to_date('2009-07-30 04:17:52') > to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) > to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) > to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) > to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false)) AS (to_date(2009-07-30 04:17:52) > to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') > '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) > cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) > 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) > cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) > 2009-07-30 04:17:52)#x] +- OneRowRelation @@ -114,14 +114,14 @@ Project [(cast(1.5 as double) >= cast(0.5 as double)) AS (1.5 >= 0.5)#x] -- !query select to_date('2009-07-30 04:17:52') >= to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) >= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) >= to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) >= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false)) AS (to_date(2009-07-30 04:17:52) >= to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') >= '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) >= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) >= 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) >= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) >= 2009-07-30 04:17:52)#x] +- OneRowRelation @@ -163,14 +163,14 @@ Project [(cast(0.5 as double) < cast(1.5 as double)) AS (0.5 < 1.5)#x] -- !query select to_date('2009-07-30 04:17:52') < to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) < to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) < to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) < to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false)) AS (to_date(2009-07-30 04:17:52) < to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') < '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) < cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) < 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) < cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) < 2009-07-30 04:17:52)#x] +- OneRowRelation @@ -212,49 +212,49 @@ Project [(cast(0.5 as double) <= cast(1.5 as double)) AS (0.5 <= 1.5)#x] -- !query select to_date('2009-07-30 04:17:52') <= to_date('2009-07-30 04:17:52') -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) <= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY)) AS (to_date(2009-07-30 04:17:52) <= to_date(2009-07-30 04:17:52))#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) <= to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false)) AS (to_date(2009-07-30 04:17:52) <= to_date(2009-07-30 04:17:52))#x] +- OneRowRelation -- !query select to_date('2009-07-30 04:17:52') <= '2009-07-30 04:17:52' -- !query analysis -Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), LEGACY) <= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) <= 2009-07-30 04:17:52)#x] +Project [(to_date(2009-07-30 04:17:52, None, Some(America/Los_Angeles), false) <= cast(2009-07-30 04:17:52 as date)) AS (to_date(2009-07-30 04:17:52) <= 2009-07-30 04:17:52)#x] +- OneRowRelation -- !query select to_date('2017-03-01') = to_timestamp('2017-03-01 00:00:00') -- !query analysis -Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp) = to_timestamp(2017-03-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) = to_timestamp(2017-03-01 00:00:00))#x] +Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), false) as timestamp) = to_timestamp(2017-03-01 00:00:00, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) = to_timestamp(2017-03-01 00:00:00))#x] +- OneRowRelation -- !query select to_timestamp('2017-03-01 00:00:01') > to_date('2017-03-01') -- !query analysis -Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) > cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) > to_date(2017-03-01))#x] +Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) > cast(to_date(2017-03-01, None, Some(America/Los_Angeles), false) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) > to_date(2017-03-01))#x] +- OneRowRelation -- !query select to_timestamp('2017-03-01 00:00:01') >= to_date('2017-03-01') -- !query analysis -Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) >= cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) >= to_date(2017-03-01))#x] +Project [(to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false) >= cast(to_date(2017-03-01, None, Some(America/Los_Angeles), false) as timestamp)) AS (to_timestamp(2017-03-01 00:00:01) >= to_date(2017-03-01))#x] +- OneRowRelation -- !query select to_date('2017-03-01') < to_timestamp('2017-03-01 00:00:01') -- !query analysis -Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp) < to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) < to_timestamp(2017-03-01 00:00:01))#x] +Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), false) as timestamp) < to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) < to_timestamp(2017-03-01 00:00:01))#x] +- OneRowRelation -- !query select to_date('2017-03-01') <= to_timestamp('2017-03-01 00:00:01') -- !query analysis -Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), LEGACY) as timestamp) <= to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) <= to_timestamp(2017-03-01 00:00:01))#x] +Project [(cast(to_date(2017-03-01, None, Some(America/Los_Angeles), false) as timestamp) <= to_timestamp(2017-03-01 00:00:01, None, TimestampType, Some(America/Los_Angeles), false)) AS (to_date(2017-03-01) <= to_timestamp(2017-03-01 00:00:01))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out index 9fb1038ad2f04..c371876fde6a6 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ltz.sql.out @@ -15,7 +15,7 @@ Project [to_timestamp_ltz(cast(null as string), None, TimestampType, Some(Americ -- !query select to_timestamp_ltz(to_date(null)), to_timestamp_ltz(to_date('2016-12-31')) -- !query analysis -Project [to_timestamp_ltz(to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(NULL))#x, to_timestamp_ltz(to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(2016-12-31))#x] +Project [to_timestamp_ltz(to_date(cast(null as string), None, Some(America/Los_Angeles), false), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(NULL))#x, to_timestamp_ltz(to_date(2016-12-31, None, Some(America/Los_Angeles), false), None, TimestampType, Some(America/Los_Angeles), false) AS to_timestamp_ltz(to_date(2016-12-31))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out index 12a3a4f619228..c285169c572e5 100644 --- a/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out +++ b/sql/core/src/test/resources/sql-tests/analyzer-results/timestamp-ntz.sql.out @@ -16,7 +16,7 @@ Project [to_timestamp_ntz(cast(null as string), None, TimestampNTZType, Some(Ame -- !query select to_timestamp_ntz(to_date(null)), to_timestamp_ntz(to_date('2016-12-31')) -- !query analysis -Project [to_timestamp_ntz(to_date(cast(null as string), None, Some(America/Los_Angeles), LEGACY), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(NULL))#x, to_timestamp_ntz(to_date(2016-12-31, None, Some(America/Los_Angeles), LEGACY), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(2016-12-31))#x] +Project [to_timestamp_ntz(to_date(cast(null as string), None, Some(America/Los_Angeles), false), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(NULL))#x, to_timestamp_ntz(to_date(2016-12-31, None, Some(America/Los_Angeles), false), None, TimestampNTZType, Some(America/Los_Angeles), false) AS to_timestamp_ntz(to_date(2016-12-31))#x] +- OneRowRelation diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out index f0006a884abba..b6f4c5c5c319d 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/exists-subquery/exists-within-and-or.sql.out @@ -119,10 +119,16 @@ WHERE ( NOT EXISTS (SELECT * WHERE emp.emp_name = emp_name OR bonus_amt < emp.salary) ) -- !query schema -struct<> +struct -- !query output -java.lang.IllegalArgumentException -null +emp 1 10.0 +emp 1 20.0 +emp 2 100.0 +emp 2 300.0 +emp 3 300.0 +emp 4 100.0 +emp 5 1000.0 +emp 6 - no dept 500.0 -- !query From 3b258bfcf6306637c65c149f5485e91abbde7488 Mon Sep 17 00:00:00 2001 From: Rui Wang Date: Fri, 26 May 2023 10:46:00 -0700 Subject: [PATCH 4/4] update --- .../spark/sql/catalyst/expressions/datetimeExpressions.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala index 2db3cf2b3e4d3..51ddf2b85f8c2 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/datetimeExpressions.scala @@ -2049,7 +2049,8 @@ case class ParseToDate( extends RuntimeReplaceable with ImplicitCastInputTypes with TimeZoneAwareExpression { override lazy val replacement: Expression = format.map { f => - Cast(GetTimestamp(left, f, TimestampType, timeZoneId, ansiEnabled), DateType, timeZoneId) + Cast(GetTimestamp(left, f, TimestampType, timeZoneId, ansiEnabled), DateType, timeZoneId, + EvalMode.fromBoolean(ansiEnabled)) }.getOrElse(Cast(left, DateType, timeZoneId, EvalMode.fromBoolean(ansiEnabled))) // backwards compatibility