protected DummyNode(RelOptCluster cluster, RelTraitSet traits) { super(cluster, cluster.traitSet()); }
@Override public RelNode convert(final RelNode rel) { // KYLIN-3281 // OLAPProjectRule can't normal working with projectRel[input=sortRel] final LogicalProject project = (LogicalProject) rel; final RelNode convertChild = convert(project.getInput(), project.getInput().getTraitSet().replace(OLAPRel.CONVENTION)); final RelOptCluster cluster = convertChild.getCluster(); final RelTraitSet traitSet = cluster.traitSet().replace(OLAPRel.CONVENTION) .replaceIfs(RelCollationTraitDef.INSTANCE, new Supplier<List<RelCollation>>() { public List<RelCollation> get() { // CALCITE-88 return RelMdCollation.project(cluster.getMetadataQuery(), convertChild, project.getProjects()); } }); return new OLAPProjectRel(convertChild.getCluster(), traitSet, convertChild, project.getProjects(), project.getRowType()); } }
RelMetadataProvider chainedProvider = ChainedRelMetadataProvider.of(list); final RelNode node = new DummyNode(cluster, cluster.traitSet());
@Override public RelNode toRel(RelOptTable.ToRelContext context, RelOptTable relOptTable) { final RelOptCluster cluster = context.getCluster(); return new VirtualTableScan(cluster, cluster.traitSet(), relOptTable); }
@Override public RelNode toRel(RelOptTable.ToRelContext context, RelOptTable relOptTable) { final RelOptCluster cluster = context.getCluster(); return new MySQLTableScan(cluster, cluster.traitSet(), relOptTable); }
@Override public RelNode toRel(RelOptTable.ToRelContext context, RelOptTable relOptTable) { final RelOptCluster cluster = context.getCluster(); return new HiveTableScan(cluster, cluster.traitSet(), relOptTable); }
public static EnumerableMergeJoin create(RelNode left, RelNode right, RexLiteral condition, ImmutableIntList leftKeys, ImmutableIntList rightKeys, JoinRelType joinType) throws InvalidRelException { final RelOptCluster cluster = right.getCluster(); RelTraitSet traitSet = cluster.traitSet(); if (traitSet.isEnabled(RelCollationTraitDef.INSTANCE)) { final RelMetadataQuery mq = cluster.getMetadataQuery(); final List<RelCollation> collations = RelMdCollation.mergeJoin(mq, left, right, leftKeys, rightKeys); traitSet = traitSet.replace(collations); } return new EnumerableMergeJoin(cluster, traitSet, left, right, condition, leftKeys, rightKeys, ImmutableSet.of(), joinType); }
/** Creates a LogicalProject, specifying row type rather than field names. */ public static LogicalProject create(final RelNode input, final List<? extends RexNode> projects, RelDataType rowType) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet().replace(Convention.NONE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.project(mq, input, projects)); return new LogicalProject(cluster, traitSet, input, projects, rowType); }
/** Creates an EnumerableProject, specifying row type rather than field * names. */ public static EnumerableProject create(final RelNode input, final List<? extends RexNode> projects, RelDataType rowType) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet().replace(EnumerableConvention.INSTANCE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.project(mq, input, projects)); return new EnumerableProject(cluster, traitSet, input, projects, rowType); }
/** Creates an EnumerableProject, specifying row type rather than field * names. */ public static EnumerableProject create(final RelNode input, final List<? extends RexNode> projects, RelDataType rowType) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet().replace(EnumerableConvention.INSTANCE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.project(mq, input, projects)); return new EnumerableProject(cluster, traitSet, input, projects, rowType); }
/** Creates a LogicalProject, specifying row type rather than field names. */ public static LogicalProject create(final RelNode input, final List<? extends RexNode> projects, RelDataType rowType) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet().replace(Convention.NONE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.project(mq, input, projects)); return new LogicalProject(cluster, traitSet, input, projects, rowType); }
/** * Return a strip result with no stripping applied. * @param query * @return */ public static StripResult noStrip(RelNode node) { return new StripResult(ExpansionNode.removeFromTree(node), new StripLeaf(node.getCluster(), node.getCluster().traitSet(), node.getRowType())); }
public static LogicalCalc create(final RelNode input, final RexProgram program) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet() .replace(Convention.NONE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.calc(mq, input, program)) .replaceIf(RelDistributionTraitDef.INSTANCE, () -> RelMdDistribution.calc(mq, input, program)); return new LogicalCalc(cluster, traitSet, input, program); }
/** Creates an EnumerableCalc. */ public static EnumerableCalc create(final RelNode input, final RexProgram program) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet() .replace(EnumerableConvention.INSTANCE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.calc(mq, input, program)) .replaceIf(RelDistributionTraitDef.INSTANCE, () -> RelMdDistribution.calc(mq, input, program)); return new EnumerableCalc(cluster, traitSet, input, program); }
/** Creates an EnumerableCalc. */ public static EnumerableCalc create(final RelNode input, final RexProgram program) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet() .replace(EnumerableConvention.INSTANCE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.calc(mq, input, program)) .replaceIf(RelDistributionTraitDef.INSTANCE, () -> RelMdDistribution.calc(mq, input, program)); return new EnumerableCalc(cluster, traitSet, input, program); }
public static LogicalCalc create(final RelNode input, final RexProgram program) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = cluster.getMetadataQuery(); final RelTraitSet traitSet = cluster.traitSet() .replace(Convention.NONE) .replaceIfs(RelCollationTraitDef.INSTANCE, () -> RelMdCollation.calc(mq, input, program)) .replaceIf(RelDistributionTraitDef.INSTANCE, () -> RelMdDistribution.calc(mq, input, program)); return new LogicalCalc(cluster, traitSet, input, program); }
public static PhysProj create(final RelNode input, final List<RexNode> projects, RelDataType rowType) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = RelMetadataQuery.instance(); final RelTraitSet traitSet = cluster.traitSet().replace(PHYSICAL) .replaceIfs( RelCollationTraitDef.INSTANCE, () -> RelMdCollation.project(mq, input, projects)); return new PhysProj(cluster, traitSet, input, projects, rowType); }
public static PhysProj create(final RelNode input, final List<RexNode> projects, RelDataType rowType) { final RelOptCluster cluster = input.getCluster(); final RelMetadataQuery mq = RelMetadataQuery.instance(); final RelTraitSet traitSet = cluster.traitSet().replace(PHYSICAL) .replaceIfs( RelCollationTraitDef.INSTANCE, () -> RelMdCollation.project(mq, input, projects)); return new PhysProj(cluster, traitSet, input, projects, rowType); }
PhysTable(RelOptCluster cluster) { super(cluster, cluster.traitSet().replace(PHYSICAL).replace(COLLATION)); RelDataTypeFactory typeFactory = cluster.getTypeFactory(); final RelDataType stringType = typeFactory.createJavaType(String.class); final RelDataType integerType = typeFactory.createJavaType(Integer.class); this.rowType = typeFactory.builder().add("s", stringType) .add("i", integerType).build(); }
PhysTable(RelOptCluster cluster) { super(cluster, cluster.traitSet().replace(PHYSICAL).replace(COLLATION)); RelDataTypeFactory typeFactory = cluster.getTypeFactory(); final RelDataType stringType = typeFactory.createJavaType(String.class); final RelDataType integerType = typeFactory.createJavaType(Integer.class); this.rowType = typeFactory.builder().add("s", stringType) .add("i", integerType).build(); }