[
https://issues.apache.org/jira/browse/CALCITE-7809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated CALCITE-7809:
------------------------------------
Labels: pull-request-available (was: )
> 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
> Priority: Major
> Labels: pull-request-available
>
> 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)