You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Frank Chen (Jira)" <ji...@apache.org> on 2026/09/22 12:57:00 UTC

[jira] [Created] (CALCITE-7809) Avoid copying unchanged SQL and Rex operands

Frank Chen created CALCITE-7809:
-----------------------------------

             Summary: Avoid copying unchanged SQL and Rex operands
                 Key: CALCITE-7809
                 URL: https://issues.apache.org/jira/browse/CALCITE-7809
             Project: Calcite
          Issue Type: Sub-task
            Reporter: Frank Chen


RexShuttle and SqlShuttle visit every child and return either the original child or a replacement. They currently copy operand collections before knowing whether any child changes, then discard those copies when the traversal is read-only.

Make these operand collections copy-on-write. Allocate only when the first changed child is encountered, while preserving RexShuttle's immutable-result contract and SqlShuttle's explicit alwaysCopy behavior.

The isolated Druid benchmark reduced allocation by 2.72% at 100,000 string literals and 1.55% at 1,000,000 string literals.

Pull request: [PR #5283|https://github.com/apache/calcite/pull/5283]



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