[
https://issues.apache.org/jira/browse/CALCITE-1747?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15963768#comment-15963768
]
Julian Hyde commented on CALCITE-1747:
--
It looks as if that line was added in CALCITE-751. IIRC, there were problems
with cycles if {{HepRelVertex}} or {{RelSubset}} were involved, and in the
{{RelSubset}} case we solved the problem using the {{simplyProjects}} method.
There were two follow-up cases, CALCITE-794 (fixed) and CALCITE-1048 (not
fixed).
Does the test suite pass?
> RelMdColumnUniqueness for HepRelVertex
> --
>
> Key: CALCITE-1747
> URL: https://issues.apache.org/jira/browse/CALCITE-1747
> Project: Calcite
> Issue Type: Bug
> Components: core
>Reporter: MinJi Kim
>Assignee: Julian Hyde
>
> In generated code/JaninoRelMetadataProvider, areColumnsUnique() is supported
> for HepRelVertex, by using HepRelVertex.getCurrentRel(). In the underlying
> RelMetadata (RelMdColumnUniqueness.java), the same code is disabled.
> This is causing some problems for me since I am trying to use
> RelMdColumnUniquess without going through the JaninoRelMetadataProvider For
> me, enabling the same code in RelMdColumnUniquess solved the problem for me.
> Although I am uploading a small patch for this soon, I wanted to see if there
> were any concerns for enabling RelMdColumnUniqueness for HepRelVertex.
> {code}
> private java.lang.Boolean areColumnsUnique_(
> org.apache.calcite.rel.RelNode r,
> org.apache.calcite.rel.metadata.RelMetadataQuery mq,
> org.apache.calcite.util.ImmutableBitSet a0,
> boolean a1) {
> switch (relClasses.indexOf(r.getClass())) {
> default:
> return provider0.areColumnsUnique((org.apache.calcite.rel.RelNode) r,
> mq, a0, a1);
> case 2:
> return
> provider0.areColumnsUnique((org.apache.calcite.plan.volcano.RelSubset) r, mq,
> a0, a1);
> case 3:
> return areColumnsUnique(((org.apache.calcite.plan.hep.HepRelVertex)
> r).getCurrentRel(), mq, a0, a1);
> case 4:
> case 5:
> return
> provider0.areColumnsUnique((org.apache.calcite.rel.convert.Converter) r, mq,
> a0, a1);
> case 6:
> case 24:
> case 30:
> return
> provider0.areColumnsUnique((org.apache.calcite.rel.core.Aggregate) r, mq, a0,
> a1);
> case 8:
> case 32:
> return
> provider0.areColumnsUnique((org.apache.calcite.rel.core.Correlate) r, mq, a0,
> a1);
> case 9:
> case 33:
> return
> provider0.areColumnsUnique((org.apache.calcite.rel.core.Exchange) r, mq, a0,
> a1);
> case 10:
> case 25:
> case 34:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.Filter)
> r, mq, a0, a1);
> case 11:
> case 35:
> return
> provider0.areColumnsUnique((org.apache.calcite.rel.core.Intersect) r, mq, a0,
> a1);
> case 12:
> case 27:
> case 36:
> case 48:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.Join) r,
> mq, a0, a1);
> case 13:
> case 37:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.Minus)
> r, mq, a0, a1);
> case 14:
> case 26:
> case 38:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.Project)
> r, mq, a0, a1);
> case 15:
> case 39:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.Sort) r,
> mq, a0, a1);
> case 18:
> case 28:
> case 42:
> return
> provider0.areColumnsUnique((org.apache.calcite.rel.core.TableScan) r, mq, a0,
> a1);
> case 19:
> case 43:
> case 50:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.SetOp)
> r, mq, a0, a1);
> case 20:
> case 44:
> return provider0.areColumnsUnique((org.apache.calcite.rel.core.Values)
> r, mq, a0, a1);
> case -1:
> throw new
> org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)