[ 
https://issues.apache.org/jira/browse/CALCITE-834?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14704722#comment-14704722
 ] 

Jesus Camacho Rodriguez commented on CALCITE-834:
-------------------------------------------------

[~julianhyde], I already closed the request, no problem. Thanks for pushing it 
to master.

About "inferred" vs "pulled up", my understanding is that for joins:
- leftInferred contains only the predicates that were inferred from the right 
input subplan
- rightInferred contains only the predicates that were inferred from the left 
input subplan
- pulledUp contains all predicates that can be pulled up from the join and its 
inputs

Thus, leftInferred and rightInferred is only created for join operators, and it 
is used by JoinPushTransitivePredicatesRule to create new filters on the join 
inputs.

> StackOverflowError getting predicates from the metadata provider
> ----------------------------------------------------------------
>
>                 Key: CALCITE-834
>                 URL: https://issues.apache.org/jira/browse/CALCITE-834
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Jesus Camacho Rodriguez
>            Assignee: Jesus Camacho Rodriguez
>             Fix For: 1.4.0-incubating
>
>
> The problem was discovered using the latest SNAPSHOT of 1.4 for a QA run in 
> Hive. In Hive, it can be reproduced using {{semijoin.q}}. In particular, the 
> query is the following:
> {code}
> explain select a.key from t3 a left semi join t2 b on a.value = b.value where 
> a.key > 100
> {code}
> The (partial) stack trace of the Exception is:
> {code}
> ...
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at 
> org.apache.calcite.rel.metadata.RelMetadataQuery.getPulledUpPredicates(RelMetadataQuery.java:484)
>         at 
> org.apache.calcite.rel.metadata.RelMdPredicates.getPredicates(RelMdPredicates.java:186)
>         at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider$1$1.invoke(ReflectiveRelMetadataProvider.java:182)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at 
> org.apache.calcite.rel.metadata.RelMetadataQuery.getPulledUpPredicates(RelMetadataQuery.java:484)
>         at 
> org.apache.calcite.rel.metadata.RelMdPredicates.getPredicates(RelMdPredicates.java:186)
>         at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider$1$1.invoke(ReflectiveRelMetadataProvider.java:182)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at 
> org.apache.calcite.rel.metadata.RelMetadataQuery.getPulledUpPredicates(RelMetadataQuery.java:484)
>         at 
> org.apache.calcite.rel.metadata.RelMdPredicates.getPredicates(RelMdPredicates.java:186)
>         at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ReflectiveRelMetadataProvider$1$1.invoke(ReflectiveRelMetadataProvider.java:182)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.ChainedRelMetadataProvider$ChainedInvocationHandler.invoke(ChainedRelMetadataProvider.java:109)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.apache.calcite.rel.metadata.CachingRelMetadataProvider$CachingInvocationHandler.invoke(CachingRelMetadataProvider.java:132)
>         at com.sun.proxy.$Proxy22.getPredicates(Unknown Source)
>         at 
> org.apache.calcite.rel.metadata.RelMetadataQuery.getPulledUpPredicates(RelMetadataQuery.java:484)
>         at 
> org.apache.calcite.rel.metadata.RelMdPredicates.getPredicates(RelMdPredicates.java:186)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to