You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Mark Jarvin (Jira)" <ji...@apache.org> on 2026/10/15 20:47:00 UTC

[jira] [Created] (SPARK-60268) Fail window partitions larger than Int.MaxValue rows while buffering instead of after

Mark Jarvin created SPARK-60268:
-----------------------------------

             Summary: Fail window partitions larger than Int.MaxValue rows while buffering instead of after
                 Key: SPARK-60268
                 URL: https://issues.apache.org/jira/browse/SPARK-60268
             Project: Spark
          Issue Type: Improvement
          Components: SQL
    Affects Versions: 5.0.0
            Reporter: Mark Jarvin


h2. Summary

Since SPARK-59929, window execution rejects a partition with more than {{Int.MaxValue}} rows when any of its frames cannot handle it, using error {{WINDOW_FUNCTION_PARTITION_SIZE_EXCEEDS_LIMIT}}. The check ({{WindowEvaluatorFactoryBase.checkPartitionSizeLimit}}) runs only after the whole partition has been read and buffered/spilled, in {{WindowEvaluatorFactory.fetchNextPartition}} and {{ArrowWindowPythonEvaluatorFactory.fetchNextPartition}}.

So a query that is going to fail still reads and spills the entire oversized partition first. The reproduction in SPARK-59929 took about 30 minutes over 2.2B rows on one core, plus the disk used by the spill, before the error appeared.

h2. Proposal

When any frame does not support large partitions, check the buffered row count while rows are being added (one {{Long}} comparison per row) and throw as soon as it exceeds {{Int.MaxValue}}. Frames that do support large partitions (LEAD/LAG and NTH_VALUE over the whole partition, see SPARK-59941) must keep buffering.

Needs a test with a stubbed or small buffer that reports a large length, since a real oversized partition is impractical in a unit test.

Depends on SPARK-59941 (introduces {{WindowFunctionFrame.supportsLargePartition}}).




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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org