[
https://issues.apache.org/jira/browse/CALCITE-3458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16963356#comment-16963356
]
Julian Hyde commented on CALCITE-3458:
--------------------------------------
I agree; computing {{desc}} unconditionally is a waste of time and effort.
I don't know whether a benchmark is required. But make a pass over the code and
look for calls to RelNode.toString() or RelNode.getDescription(). We should
never constructor the description in normal operation. (I.e. unless there is an
error or tracing is enabled.)
E.g. the following line in \{{VolcanoPlanner.java}}:
{code}
LOGGER.trace("Register {} in {}", rel.getDescription(),
subset.getDescription());
{code}
Also try a run where {{getDescription()}} and {{toString()}} unconditionally
throw.
> Remove desc in AbstractRelNode
> ------------------------------
>
> Key: CALCITE-3458
> URL: https://issues.apache.org/jira/browse/CALCITE-3458
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Haisheng Yuan
> Priority: Major
> Labels: pull-request-available
> Time Spent: 40m
> Remaining Estimate: 0h
>
> If the query is super large, e.g. contains tens of thousands of nodes or
> expressions, the RelNode digest and desc become very large. The content of
> desc and digest are almost the same, except that desc consists of id plus
> digest, which causes OOM in our production system. So remove desc, just use
> {{id + digest}} to produce description.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)