Yibo Dong created SPARK-59044:
---------------------------------

             Summary: Excluding EliminateOffsets causes OFFSET 0 to fail during 
physical planning
                 Key: SPARK-59044
                 URL: https://issues.apache.org/jira/browse/SPARK-59044
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 5.0.0
         Environment: Spark 5.0.0-SNAPSHOT, commit 
9da9f8d673914d1648514f59d85e3adafb300d1a; macOS arm64; Java 17.0.17
            Reporter: Yibo Dong


A legal OFFSET 0 query fails during physical planning when
EliminateOffsets is excluded.

h3. Reproduction

{code:sql}
SELECT 1 AS x OFFSET 0;
{code}

With the default optimizer configuration, the query executes successfully and
returns:

{code}
1
{code}

If only EliminateOffsets is excluded:

{code}
--conf 
spark.sql.optimizer.excludedRules=org.apache.spark.sql.catalyst.optimizer.EliminateOffsets
{code}

the same query fails during physical planning with:

{code}
org.apache.spark.SparkException: [INTERNAL_ERROR] The Spark SQL phase planning
failed with an internal error.

Caused by: java.lang.AssertionError: assertion failed
  at org.apache.spark.sql.execution.CollectLimitExec.<init>(limit.scala:49)
{code}

h3. Expected behavior

OFFSET 0 is a no-op, so both configurations should execute successfully and
return the same result:

{code}
1
{code}

h3. Actual behavior

With EliminateOffsets enabled, the query returns 1.

When EliminateOffsets is excluded, the logical OFFSET 0 reaches physical
planning and causes an assertion failure while constructing CollectLimitExec.

h3. Additional information

The only configuration change needed to reproduce the failure is excluding
EliminateOffsets.

This suggests that physical planning assumes OFFSET 0 has already been removed
by EliminateOffsets, although the optimizer rule can currently be excluded.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to