Linhong Liu created SPARK-60572:
-----------------------------------

             Summary: Preserve NULL string day counts in date arithmetic
                 Key: SPARK-60572
                 URL: https://issues.apache.org/jira/browse/SPARK-60572
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 5.0.0
            Reporter: Linhong Liu


With ANSI mode disabled, date_add and date_sub incorrectly return their input 
date when the day-count argument is a foldable NULL string.

{code:sql}
SET spark.sql.ansi.enabled=false;
SELECT date_add(DATE '2020-01-01', CAST(NULL AS STRING)),
       date_sub(DATE '2020-01-01', CAST(NULL AS STRING));
{code}

Expected: NULL, NULL. Actual: 2020-01-01, 2020-01-01.

StringLiteralTypeCoercion unboxes the NULL result of the string-to-integer cast 
as Int, producing zero. Keep the cast result boxed and create an explicitly 
typed integer literal to preserve NULL.

Regression coverage includes foldable NULL expressions, ANSI mode on and off, 
valid string day counts, and unchanged invalid-string errors.

Patch: https://github.com/apache/spark/pull/59806




--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to