Thanks Michael, I have tried adding it into VM options but it didn't give the result I want, instead it printed a lot Java code. Is there anything I do wrong?
public final class GeneratedMetadataHandler_Collation implements org.apache.calcite.rel.metadata.BuiltInMetadata.Collation.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdCollation provider0; public GeneratedMetadataHandler_Collation(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdCollation provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF; } public com.google.common.collect.ImmutableList collations( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (com.google.common.collect.ImmutableList) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final com.google.common.collect.ImmutableList x = collations_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private com.google.common.collect.ImmutableList collations_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.collations((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.collations((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return collations(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 7: case 31: return provider0.collations((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.collations((org.apache.calcite.rel.core.Filter) r, mq); case 14: case 26: case 38: return provider0.collations((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.collations((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: return provider0.collations((org.apache.calcite.rel.core.TableScan) r, mq); case 20: case 44: return provider0.collations((org.apache.calcite.rel.core.Values) r, mq); case 21: case 45: return provider0.collations((org.apache.calcite.rel.core.Window) r, mq); case 27: return provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableHashJoin) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_ExplainVisibility implements org.apache.calcite.rel.metadata.BuiltInMetadata.ExplainVisibility.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0; public GeneratedMetadataHandler_ExplainVisibility(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF; } public java.lang.Boolean isVisibleInExplain( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF, r, org.apache.calcite.rel.metadata.NullSentinel.mask(a0)); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Boolean) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Boolean x = isVisibleInExplain_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Boolean isVisibleInExplain_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.isVisibleInExplain((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return isVisibleInExplain(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_ExplainVisibility implements org.apache.calcite.rel.metadata.BuiltInMetadata.ExplainVisibility.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0; public GeneratedMetadataHandler_ExplainVisibility(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF; } public java.lang.Boolean isVisibleInExplain( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF, r, org.apache.calcite.rel.metadata.NullSentinel.mask(a0)); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Boolean) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Boolean x = isVisibleInExplain_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Boolean isVisibleInExplain_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.isVisibleInExplain((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return isVisibleInExplain(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Collation implements org.apache.calcite.rel.metadata.BuiltInMetadata.Collation.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdCollation provider0; public GeneratedMetadataHandler_Collation(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdCollation provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF; } public com.google.common.collect.ImmutableList collations( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (com.google.common.collect.ImmutableList) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final com.google.common.collect.ImmutableList x = collations_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private com.google.common.collect.ImmutableList collations_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.collations((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.collations((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return collations(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 7: case 31: return provider0.collations((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.collations((org.apache.calcite.rel.core.Filter) r, mq); case 14: case 26: case 38: return provider0.collations((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.collations((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.collations((org.apache.calcite.rel.core.TableScan) r, mq); case 20: case 44: return provider0.collations((org.apache.calcite.rel.core.Values) r, mq); case 21: case 45: return provider0.collations((org.apache.calcite.rel.core.Window) r, mq); case 27: return provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableHashJoin) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NonCumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_NonCumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getNonCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getNonCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NodeTypes implements org.apache.calcite.rel.metadata.BuiltInMetadata.NodeTypes.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdNodeTypes provider0; public GeneratedMetadataHandler_NodeTypes(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdNodeTypes provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NodeTypes.DEF; } public com.google.common.collect.Multimap getNodeTypes( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NodeTypes.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (com.google.common.collect.Multimap) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final com.google.common.collect.Multimap x = getNodeTypes_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private com.google.common.collect.Multimap getNodeTypes_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNodeTypes((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getNodeTypes((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getNodeTypes(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 6: case 24: case 30: return provider0.getNodeTypes((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: return provider0.getNodeTypes((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getNodeTypes((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getNodeTypes((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: return provider0.getNodeTypes((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getNodeTypes((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: return provider0.getNodeTypes((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getNodeTypes((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getNodeTypes((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getNodeTypes((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getNodeTypes((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_RowCount implements org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; public GeneratedMetadataHandler_RowCount(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdRowCount provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF; } public java.lang.Double getRowCount( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getRowCount_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getRowCount_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getRowCount(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 4: case 5: case 9: case 17: case 21: case 22: case 23: case 29: case 33: case 41: case 45: case 46: case 47: return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, mq); case 6: case 24: case 30: return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Selectivity implements org.apache.calcite.rel.metadata.BuiltInMetadata.Selectivity.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdSelectivity provider0; public GeneratedMetadataHandler_Selectivity(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdSelectivity provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF; } public java.lang.Double getSelectivity( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF, r, a0 == null ? "" : a0.toString()); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getSelectivity_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getSelectivity_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getSelectivity((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return getSelectivity(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case 6: case 24: case 30: return provider0.getSelectivity((org.apache.calcite.rel.core.Aggregate) r, mq, a0); case 10: case 25: case 34: return provider0.getSelectivity((org.apache.calcite.rel.core.Filter) r, mq, a0); case 12: case 27: case 36: return provider0.getSelectivity((org.apache.calcite.rel.core.Join) r, mq, a0); case 14: case 26: case 38: return provider0.getSelectivity((org.apache.calcite.rel.core.Project) r, mq, a0); case 15: case 39: return provider0.getSelectivity((org.apache.calcite.rel.core.Sort) r, mq, a0); case 19: case 43: return provider0.getSelectivity((org.apache.calcite.rel.core.Union) r, mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NonCumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_NonCumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getNonCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getNonCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_RowCount implements org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; public GeneratedMetadataHandler_RowCount(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdRowCount provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF; } public java.lang.Double getRowCount( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getRowCount_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getRowCount_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getRowCount(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 4: case 5: case 9: case 17: case 21: case 22: case 23: case 29: case 33: case 41: case 45: case 46: case 47: return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, mq); case 6: case 24: case 30: return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: case 51: return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Selectivity implements org.apache.calcite.rel.metadata.BuiltInMetadata.Selectivity.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdSelectivity provider0; public GeneratedMetadataHandler_Selectivity(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdSelectivity provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF; } public java.lang.Double getSelectivity( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF, r, a0 == null ? "" : a0.toString()); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getSelectivity_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getSelectivity_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getSelectivity((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return getSelectivity(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case 6: case 24: case 30: return provider0.getSelectivity((org.apache.calcite.rel.core.Aggregate) r, mq, a0); case 10: case 25: case 34: return provider0.getSelectivity((org.apache.calcite.rel.core.Filter) r, mq, a0); case 12: case 27: case 36: return provider0.getSelectivity((org.apache.calcite.rel.core.Join) r, mq, a0); case 14: case 26: case 38: case 51: return provider0.getSelectivity((org.apache.calcite.rel.core.Project) r, mq, a0); case 15: case 39: return provider0.getSelectivity((org.apache.calcite.rel.core.Sort) r, mq, a0); case 19: case 43: return provider0.getSelectivity((org.apache.calcite.rel.core.Union) r, mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NonCumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_NonCumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getNonCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getNonCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_RowCount implements org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; public GeneratedMetadataHandler_RowCount(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdRowCount provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF; } public java.lang.Double getRowCount( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getRowCount_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getRowCount_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getRowCount(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 4: case 5: case 9: case 17: case 21: case 22: case 23: case 29: case 33: case 41: case 45: case 46: case 47: case 52: return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, mq); case 6: case 24: case 30: return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: case 51: return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Selectivity implements org.apache.calcite.rel.metadata.BuiltInMetadata.Selectivity.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdSelectivity provider0; public GeneratedMetadataHandler_Selectivity(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdSelectivity provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF; } public java.lang.Double getSelectivity( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF, r, a0 == null ? "" : a0.toString()); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getSelectivity_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getSelectivity_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getSelectivity((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return getSelectivity(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case 6: case 24: case 30: return provider0.getSelectivity((org.apache.calcite.rel.core.Aggregate) r, mq, a0); case 10: case 25: case 34: return provider0.getSelectivity((org.apache.calcite.rel.core.Filter) r, mq, a0); case 12: case 27: case 36: return provider0.getSelectivity((org.apache.calcite.rel.core.Join) r, mq, a0); case 14: case 26: case 38: case 51: return provider0.getSelectivity((org.apache.calcite.rel.core.Project) r, mq, a0); case 15: case 39: return provider0.getSelectivity((org.apache.calcite.rel.core.Sort) r, mq, a0); case 19: case 43: return provider0.getSelectivity((org.apache.calcite.rel.core.Union) r, mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Collation implements org.apache.calcite.rel.metadata.BuiltInMetadata.Collation.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdCollation provider0; public GeneratedMetadataHandler_Collation(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdCollation provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF; } public com.google.common.collect.ImmutableList collations( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (com.google.common.collect.ImmutableList) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final com.google.common.collect.ImmutableList x = collations_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private com.google.common.collect.ImmutableList collations_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.collations((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.collations((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return collations(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 7: case 31: return provider0.collations((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.collations((org.apache.calcite.rel.core.Filter) r, mq); case 14: case 26: case 38: case 51: return provider0.collations((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.collations((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.collations((org.apache.calcite.rel.core.TableScan) r, mq); case 20: case 44: return provider0.collations((org.apache.calcite.rel.core.Values) r, mq); case 21: case 45: return provider0.collations((org.apache.calcite.rel.core.Window) r, mq); case 27: return provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableHashJoin) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NonCumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_NonCumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getNonCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getNonCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_RowCount implements org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; public GeneratedMetadataHandler_RowCount(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdRowCount provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF; } public java.lang.Double getRowCount( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getRowCount_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getRowCount_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getRowCount(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 4: case 5: case 9: case 17: case 21: case 22: case 23: case 29: case 33: case 41: case 45: case 46: case 47: case 52: return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, mq); case 6: case 24: case 30: return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: case 53: return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: case 51: return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Selectivity implements org.apache.calcite.rel.metadata.BuiltInMetadata.Selectivity.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdSelectivity provider0; public GeneratedMetadataHandler_Selectivity(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdSelectivity provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF; } public java.lang.Double getSelectivity( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF, r, a0 == null ? "" : a0.toString()); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getSelectivity_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getSelectivity_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getSelectivity((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return getSelectivity(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case 6: case 24: case 30: return provider0.getSelectivity((org.apache.calcite.rel.core.Aggregate) r, mq, a0); case 10: case 25: case 34: return provider0.getSelectivity((org.apache.calcite.rel.core.Filter) r, mq, a0); case 12: case 27: case 36: case 53: return provider0.getSelectivity((org.apache.calcite.rel.core.Join) r, mq, a0); case 14: case 26: case 38: case 51: return provider0.getSelectivity((org.apache.calcite.rel.core.Project) r, mq, a0); case 15: case 39: return provider0.getSelectivity((org.apache.calcite.rel.core.Sort) r, mq, a0); case 19: case 43: return provider0.getSelectivity((org.apache.calcite.rel.core.Union) r, mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Collation implements org.apache.calcite.rel.metadata.BuiltInMetadata.Collation.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdCollation provider0; public GeneratedMetadataHandler_Collation(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdCollation provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF; } public com.google.common.collect.ImmutableList collations( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (com.google.common.collect.ImmutableList) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final com.google.common.collect.ImmutableList x = collations_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private com.google.common.collect.ImmutableList collations_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.collations((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.collations((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return collations(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 7: case 31: return provider0.collations((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.collations((org.apache.calcite.rel.core.Filter) r, mq); case 14: case 26: case 38: case 51: return provider0.collations((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.collations((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.collations((org.apache.calcite.rel.core.TableScan) r, mq); case 20: case 44: return provider0.collations((org.apache.calcite.rel.core.Values) r, mq); case 21: case 45: return provider0.collations((org.apache.calcite.rel.core.Window) r, mq); case 27: return provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableHashJoin) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NonCumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_NonCumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getNonCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getNonCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_RowCount implements org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; public GeneratedMetadataHandler_RowCount(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdRowCount provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF; } public java.lang.Double getRowCount( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getRowCount_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getRowCount_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getRowCount(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 4: case 5: case 9: case 17: case 21: case 22: case 23: case 29: case 33: case 41: case 45: case 46: case 47: case 52: return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, mq); case 6: case 24: case 30: return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: case 53: case 54: return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: case 51: return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Selectivity implements org.apache.calcite.rel.metadata.BuiltInMetadata.Selectivity.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdSelectivity provider0; public GeneratedMetadataHandler_Selectivity(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdSelectivity provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF; } public java.lang.Double getSelectivity( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF, r, a0 == null ? "" : a0.toString()); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getSelectivity_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getSelectivity_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getSelectivity((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return getSelectivity(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case 6: case 24: case 30: return provider0.getSelectivity((org.apache.calcite.rel.core.Aggregate) r, mq, a0); case 10: case 25: case 34: return provider0.getSelectivity((org.apache.calcite.rel.core.Filter) r, mq, a0); case 12: case 27: case 36: case 53: case 54: return provider0.getSelectivity((org.apache.calcite.rel.core.Join) r, mq, a0); case 14: case 26: case 38: case 51: return provider0.getSelectivity((org.apache.calcite.rel.core.Project) r, mq, a0); case 15: case 39: return provider0.getSelectivity((org.apache.calcite.rel.core.Sort) r, mq, a0); case 19: case 43: return provider0.getSelectivity((org.apache.calcite.rel.core.Union) r, mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Collation implements org.apache.calcite.rel.metadata.BuiltInMetadata.Collation.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdCollation provider0; public GeneratedMetadataHandler_Collation(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdCollation provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF; } public com.google.common.collect.ImmutableList collations( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Collation.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (com.google.common.collect.ImmutableList) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final com.google.common.collect.ImmutableList x = collations_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private com.google.common.collect.ImmutableList collations_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.collations((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.collations((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return collations(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 7: case 31: return provider0.collations((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.collations((org.apache.calcite.rel.core.Filter) r, mq); case 14: case 26: case 38: case 51: return provider0.collations((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.collations((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.collations((org.apache.calcite.rel.core.TableScan) r, mq); case 20: case 44: return provider0.collations((org.apache.calcite.rel.core.Values) r, mq); case 21: case 45: return provider0.collations((org.apache.calcite.rel.core.Window) r, mq); case 27: return provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableHashJoin) r, mq); case 54: return provider0.collations((org.apache.calcite.adapter.enumerable.EnumerableMergeJoin) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_ExplainVisibility implements org.apache.calcite.rel.metadata.BuiltInMetadata.ExplainVisibility.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0; public GeneratedMetadataHandler_ExplainVisibility(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF; } public java.lang.Boolean isVisibleInExplain( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF, r, org.apache.calcite.rel.metadata.NullSentinel.mask(a0)); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Boolean) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Boolean x = isVisibleInExplain_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Boolean isVisibleInExplain_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.isVisibleInExplain((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return isVisibleInExplain(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_CumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.CumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_CumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$CumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$CumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_ExplainVisibility implements org.apache.calcite.rel.metadata.BuiltInMetadata.ExplainVisibility.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0; public GeneratedMetadataHandler_ExplainVisibility(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdExplainVisibility provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF; } public java.lang.Boolean isVisibleInExplain( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$ExplainVisibility.DEF, r, org.apache.calcite.rel.metadata.NullSentinel.mask(a0)); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Boolean) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Boolean x = isVisibleInExplain_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Boolean isVisibleInExplain_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.sql.SqlExplainLevel a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.isVisibleInExplain((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return isVisibleInExplain(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_RowCount implements org.apache.calcite.rel.metadata.BuiltInMetadata.RowCount.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdRowCount provider0; public GeneratedMetadataHandler_RowCount(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdRowCount provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF; } public java.lang.Double getRowCount( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$RowCount.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getRowCount_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getRowCount_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getRowCount((org.apache.calcite.rel.RelNode) r, mq); case 2: return provider0.getRowCount((org.apache.calcite.plan.volcano.RelSubset) r, mq); case 3: return getRowCount(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case 4: case 5: case 9: case 17: case 21: case 22: case 23: case 29: case 33: case 41: case 45: case 46: case 47: case 52: return provider0.getRowCount((org.apache.calcite.rel.SingleRel) r, mq); case 6: case 24: case 30: return provider0.getRowCount((org.apache.calcite.rel.core.Aggregate) r, mq); case 7: case 31: case 55: return provider0.getRowCount((org.apache.calcite.rel.core.Calc) r, mq); case 10: case 25: case 34: return provider0.getRowCount((org.apache.calcite.rel.core.Filter) r, mq); case 11: case 35: return provider0.getRowCount((org.apache.calcite.rel.core.Intersect) r, mq); case 12: case 27: case 36: case 53: case 54: return provider0.getRowCount((org.apache.calcite.rel.core.Join) r, mq); case 13: case 37: return provider0.getRowCount((org.apache.calcite.rel.core.Minus) r, mq); case 14: case 26: case 38: case 51: return provider0.getRowCount((org.apache.calcite.rel.core.Project) r, mq); case 15: case 39: return provider0.getRowCount((org.apache.calcite.rel.core.Sort) r, mq); case 18: case 28: case 42: case 50: return provider0.getRowCount((org.apache.calcite.rel.core.TableScan) r, mq); case 19: case 43: return provider0.getRowCount((org.apache.calcite.rel.core.Union) r, mq); case 20: case 44: return provider0.getRowCount((org.apache.calcite.rel.core.Values) r, mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_Selectivity implements org.apache.calcite.rel.metadata.BuiltInMetadata.Selectivity.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdSelectivity provider0; public GeneratedMetadataHandler_Selectivity(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdSelectivity provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF; } public java.lang.Double getSelectivity( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$Selectivity.DEF, r, a0 == null ? "" : a0.toString()); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (java.lang.Double) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final java.lang.Double x = getSelectivity_(r, mq, a0); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private java.lang.Double getSelectivity_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq, org.apache.calcite.rex.RexNode a0) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getSelectivity((org.apache.calcite.rel.RelNode) r, mq, a0); case 3: return getSelectivity(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq, a0); case 6: case 24: case 30: return provider0.getSelectivity((org.apache.calcite.rel.core.Aggregate) r, mq, a0); case 10: case 25: case 34: return provider0.getSelectivity((org.apache.calcite.rel.core.Filter) r, mq, a0); case 12: case 27: case 36: case 53: case 54: return provider0.getSelectivity((org.apache.calcite.rel.core.Join) r, mq, a0); case 14: case 26: case 38: case 51: return provider0.getSelectivity((org.apache.calcite.rel.core.Project) r, mq, a0); case 15: case 39: return provider0.getSelectivity((org.apache.calcite.rel.core.Sort) r, mq, a0); case 19: case 43: return provider0.getSelectivity((org.apache.calcite.rel.core.Union) r, mq, a0); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_CumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.CumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_CumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$CumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$CumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } public final class GeneratedMetadataHandler_NonCumulativeCost implements org.apache.calcite.rel.metadata.BuiltInMetadata.NonCumulativeCost.Handler { private final java.util.List relClasses; public final org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0; public GeneratedMetadataHandler_NonCumulativeCost(java.util.List relClasses, org.apache.calcite.rel.metadata.RelMdPercentageOriginalRows provider0) { this.relClasses = relClasses; this.provider0 = provider0; } public org.apache.calcite.rel.metadata.MetadataDef getDef() { return org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF; } public org.apache.calcite.plan.RelOptCost getNonCumulativeCost( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { final java.util.List key = org.apache.calcite.runtime.FlatLists.of(org.apache.calcite.rel.metadata.BuiltInMetadata$NonCumulativeCost.DEF, r); final Object v = mq.map.get(key); if (v != null) { if (v == org.apache.calcite.rel.metadata.NullSentinel.ACTIVE) { throw org.apache.calcite.rel.metadata.CyclicMetadataException.INSTANCE; } if (v == org.apache.calcite.rel.metadata.NullSentinel.INSTANCE) { return null; } return (org.apache.calcite.plan.RelOptCost) v; } mq.map.put(key,org.apache.calcite.rel.metadata.NullSentinel.ACTIVE); try { final org.apache.calcite.plan.RelOptCost x = getNonCumulativeCost_(r, mq); mq.map.put(key, org.apache.calcite.rel.metadata.NullSentinel.mask(x)); return x; } catch (java.lang.Exception e) { mq.map.remove(key); throw e; } } private org.apache.calcite.plan.RelOptCost getNonCumulativeCost_( org.apache.calcite.rel.RelNode r, org.apache.calcite.rel.metadata.RelMetadataQuery mq) { switch (relClasses.indexOf(r.getClass())) { default: return provider0.getNonCumulativeCost((org.apache.calcite.rel.RelNode) r, mq); case 3: return getNonCumulativeCost(((org.apache.calcite.plan.hep.HepRelVertex) r).getCurrentRel(), mq); case -1: throw new org.apache.calcite.rel.metadata.JaninoRelMetadataProvider$NoHandler(r.getClass()); } } } EnumerableCalc(expr#0..3=[{inputs}], proj#0..2=[{exprs}]) EnumerableHashJoin(condition=[=($0, $3)], joinType=[inner]) JdbcToEnumerableConverter JdbcTableScan(table=[[perm, user_table]]) JdbcToEnumerableConverter JdbcProject(id=[$0]) JdbcTableScan(table=[[insight_user, user_tab]]) Process finished with exit code 0 Michael Mior <mm...@apache.org> 于2020年2月7日周五 上午3:51写道: > If you set the system property calcite.debug, then the actual SQL sent > to the database will be printed to the console inside [] when it is > executed. > -- > Michael Mior > mm...@apache.org > > Le jeu. 6 févr. 2020 à 05:32, Yang Liu <whilg...@gmail.com> a écrit : > > > > Yang Liu <whilg...@gmail.com> 于2020年2月6日周四 下午5:59写道: > > > > > Hi there, recently I am studying Apache Calcite, by now I can use > explain > > > plan for via JDBC to view the logical plan, and I am wondering how can > I > > > view the physical sql in the plan execution? Since there may be bugs > in the > > > physical sql generation so I need to make sure the correctness. > > > > > > val connection = DriverManager.getConnection("jdbc:calcite:") > > > val calciteConnection = connection.asInstanceOf[CalciteConnection] > > > val rootSchema = calciteConnection.getRootSchema() > > > > > > val dsInsightUser = > JdbcSchema.dataSource("jdbc:mysql://localhost:13306/insight?useSSL=false&serverTimezone=UTC", > "com.mysql.jdbc.Driver", "insight_admin","xxxxxx") > > > val dsPerm = > JdbcSchema.dataSource("jdbc:mysql://localhost:13307/permission?useSSL=false&serverTimezone=UTC", > "com.mysql.jdbc.Driver", "perm_admin", "xxxxxx") > > > > > > rootSchema.add("insight_user", JdbcSchema.create(rootSchema, > "insight_user", dsInsightUser, null, null)) > > > rootSchema.add("perm", JdbcSchema.create(rootSchema, "perm", > dsPerm, null, null)) > > > > > > val stmt = connection.createStatement() > > > val rs = stmt.executeQuery("""explain plan for select > "perm"."user_table".* from "perm"."user_table" join > "insight_user"."user_tab" on > "perm"."user_table"."id"="insight_user"."user_tab"."id" """) > > > val metaData = rs.getMetaData() > > > > > > while(rs.next()) { > > > for(i <- 1 to metaData.getColumnCount) printf("%s ", > rs.getObject(i)) > > > println() > > > } > > > > > > result is > > > > > > EnumerableCalc(expr#0..3=[{inputs}], proj#0..2=[{exprs}]) > > > EnumerableHashJoin(condition=[=($0, $3)], joinType=[inner]) > > > JdbcToEnumerableConverter > > > JdbcTableScan(table=[[perm, user_table]]) > > > JdbcToEnumerableConverter > > > JdbcProject(id=[$0]) > > > JdbcTableScan(table=[[insight_user, user_tab]]) > > > > > > >