[
https://issues.apache.org/jira/browse/CALCITE-3784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17034947#comment-17034947
]
Julian Hyde commented on CALCITE-3784:
--------------------------------------
One thing we can do is not create left-deep expressions. Use the flat
representation for AND and OR. I doubt we'd see depths much beyond 10. Also use
tables (or in-memory tables) rather than large IN.
> RexCall toString digest gives OOM while huge expression is evaluated
> --------------------------------------------------------------------
>
> Key: CALCITE-3784
> URL: https://issues.apache.org/jira/browse/CALCITE-3784
> Project: Calcite
> Issue Type: Bug
> Components: core
> Reporter: Ravi Kapoor
> Priority: Critical
>
> I have some complex query which has tens of thousands of rex expressions and
> this expression is used in filter expression in the query.
> On creating a filter below code gets called:
> {code}
> public RelBuilder filter(Iterable<CorrelationId> variablesSet,
> Iterable<? extends RexNode> predicates) {
> final RexNode simplifiedPredicates =
> simplifier.simplifyFilterPredicates(predicates);
> if (simplifiedPredicates == null) {
> return empty();
> }
> {code}
> RexSimplify further adds the rexnode in the Set<RexNode> calling hashcode()
> internally which calls toString()
> Is there any way to avoid this computeDigest Call which creates complex
> string object and blows up the RAM about 14GB?
--
This message was sent by Atlassian Jira
(v8.3.4#803005)