[ 
https://issues.apache.org/jira/browse/CALCITE-3784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ravi Kapoor updated CALCITE-3784:
---------------------------------
    Description: 
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 10GB?

  was:
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?


> 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
>         Attachments: OOM Screenshot.png
>
>
> 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 10GB?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to