MinJi Kim created CALCITE-1747:
----------------------------------

             Summary: 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)

Reply via email to