Max Gekk created SPARK-60746:
--------------------------------
Summary: Interval division by -1 overflow raises different errors
in interpreted and generated code
Key: SPARK-60746
URL: https://issues.apache.org/jira/browse/SPARK-60746
Project: Spark
Issue Type: Bug
Components: SQL
Affects Versions: 5.0.0
Reporter: Max Gekk
Under ANSI mode, dividing the minimum ANSI interval by -1 overflows. The
interpreted and code-generated paths of DivideDTInterval and DivideYMInterval
report the overflow with different error classes and SQLSTATEs:
- interpreted (IntervalDivide.checkDivideOverflow):
INTERVAL_ARITHMETIC_OVERFLOW.WITH_SUGGESTION, SQLSTATE 22015, "Use `try_divide`
to tolerate overflow and return NULL instead."
- generated code (doGenCode): ARITHMETIC_OVERFLOW, SQLSTATE 22003, "Overflow in
integral divide."
Reproduction on 4.2.0 (also present on master), with
spark.sql.ansi.enabled=true:
CREATE TABLE t USING parquet AS SELECT INTERVAL '-106751991 04:00:54.775808'
DAY TO SECOND AS i;
SELECT i / -1 FROM t; -- whole-stage codegen on: ARITHMETIC_OVERFLOW (22003)
-- spark.sql.codegen.wholeStage=false,
factoryMode=NO_CODEGEN:
-- INTERVAL_ARITHMETIC_OVERFLOW.WITH_SUGGESTION
(22015)
The same holds for a year-month interval at Int.MinValue months. SPARK-50226
changed the interpreted helper to the interval error class; the generated code
still calls QueryExecutionErrors.overflowInIntegralDivideError. The generated
code should raise the same error as the interpreted path.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]