public LixToRelTranslator(RelOptCluster cluster, Prepare preparingStmt) { this.cluster = cluster; this.preparingStmt = preparingStmt; this.typeFactory = (JavaTypeFactory) cluster.getTypeFactory(); }
new CollectRel( cluster, cluster.traitSetOf(Convention.NONE), input, validator.deriveAlias(call, i));
/** * Creates a cluster. * * @param typeFactory Type factory * @param rexBuilder Expression builder * @return New cluster */ public RelOptCluster createCluster( RelDataTypeFactory typeFactory, RexBuilder rexBuilder) { return new RelOptCluster(this, planner, typeFactory, rexBuilder); }
new SortRel( cluster, cluster.traitSetOf(Convention.NONE, collation), bb.root, collation, new ProjectRel( cluster, cluster.traitSetOf(RelCollationImpl.PRESERVE), bb.root, exprs, cluster.getTypeFactory().createStructType( rowType.getFieldList().subList(0, fieldCount)), ProjectRelBase.Flags.BOXED),
RelSubset( RelOptCluster cluster, RelSet set, RelTraitSet traits) { super(cluster, traits); this.set = set; this.boosted = false; computeBestCost(cluster.getPlanner()); recomputeDigest(); }
/** Checks that we can cache a metadata request that includes a null * argument. */ @Test public void testSelectivityAggCached() { RelNode rel = convertSql( "select deptno, count(*) from emp where deptno > 10 " + "group by deptno having count(*) = 0"); rel.getCluster().setMetadataProvider( new CachingRelMetadataProvider( rel.getCluster().getMetadataProvider(), rel.getCluster().getPlanner())); Double result = RelMetadataQuery.getSelectivity(rel, null); assertThat(result, nearTo(DEFAULT_COMP_SELECTIVITY * DEFAULT_EQUAL_SELECTIVITY, EPSILON)); }
List<RexNode> toRexList( FunctionExpression expression, RelNode... inputs) { List<RexNode> list = new ArrayList<RexNode>(); RexBuilder rexBuilder = cluster.getRexBuilder(); for (RelNode input : inputs) { list.add(rexBuilder.makeRangeReference(input)); } return OptiqPrepareImpl.EmptyScalarTranslator.empty(rexBuilder) .bind(expression.parameterList, list) .toRexList(expression.body); }
public Metadata apply(RelNode rel) { if (!(rel instanceof HepRelVertex)) { return null; } HepRelVertex vertex = (HepRelVertex) rel; final RelNode rel2 = vertex.getCurrentRel(); Function<RelNode, Metadata> function = rel.getCluster().getMetadataProvider().apply( rel2.getClass(), metadataClass); return function.apply(rel2); } };
/** * Creates a cluster. */ RelOptCluster( RelOptQuery query, RelOptPlanner planner, RelDataTypeFactory typeFactory, RexBuilder rexBuilder) { assert planner != null; assert typeFactory != null; this.query = query; this.planner = planner; this.typeFactory = typeFactory; this.rexBuilder = rexBuilder; this.originalExpression = rexBuilder.makeLiteral("?"); // set up a default rel metadata provider, // giving the planner first crack at everything setMetadataProvider(new DefaultRelMetadataProvider()); this.emptyTraitSet = planner.emptyTraitSet(); }
final RexBuilder rexBuilder = cluster.getRexBuilder(); final RelDecorrelator decorrelator = new RelDecorrelator(rexBuilder, corelMap, cluster.getPlanner().getContext());
if (leftKeys.size() > 0) { final RelOptCluster cluster = join.getCluster(); final RexBuilder rexBuilder = cluster.getRexBuilder(); RexNode condition = null; for (Pair<Integer, Integer> p : Pair.zip(leftKeys, rightKeys)) { final String dyn_inIdStr = cluster.getQuery().createCorrel(); final int dyn_inId = RelOptQuery.getCorrelOrdinal(dyn_inIdStr);
public final RelOptQuery getQuery() { return getCluster().getQuery(); }
public RelOptCost getNonCumulativeCost(RelNode rel) { return rel.computeSelfCost(rel.getCluster().getPlanner()); }
"select deptno, count(*) from emp where deptno > 10 " + "group by deptno having count(*) = 0"); rel.getCluster().setMetadataProvider( ChainedRelMetadataProvider.of( ImmutableList.of( ColTypeImpl.SOURCE, rel.getCluster().getMetadataProvider()))); final RelOptPlanner planner = rel.getCluster().getPlanner(); rel.getCluster().setMetadataProvider( new CachingRelMetadataProvider( rel.getCluster().getMetadataProvider(), planner)); assertThat(input.metadata(ColType.class).getColType(0), equalTo("DEPTNO-agg"));
RexNode toRex( FunctionExpression expression, RelNode... inputs) { List<RexNode> list = new ArrayList<RexNode>(); RexBuilder rexBuilder = cluster.getRexBuilder(); for (RelNode input : inputs) { list.add(rexBuilder.makeRangeReference(input)); } return OptiqPrepareImpl.EmptyScalarTranslator.empty(rexBuilder) .bind(expression.parameterList, list) .toRex(expression.body); } }
/** * Determines if a specified set of columns from a specified relational * expression are unique. * * @param rel the relational expression * @param columns column mask representing the subset of columns for which * uniqueness will be determined * * @return true or false depending on whether the columns are unique, or * null if not enough information is available to make that determination */ public static Boolean areColumnsUnique(RelNode rel, BitSet columns) { return (Boolean) rel.getCluster().getMetadataProvider().getRelMetadata( rel, "areColumnsUnique", new Object[] { columns, false }); }
public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits) { final HepPlanner hepPlanner = new HepPlanner(hepProgram, null, noDag, null, RelOptCostImpl.FACTORY); if (metadataProvider != null) { List<RelMetadataProvider> list = Lists.newArrayList(); list.add(metadataProvider); hepPlanner.registerMetadataProviders(list); RelMetadataProvider plannerChain = ChainedRelMetadataProvider.of(list); rel.getCluster().setMetadataProvider(plannerChain); } hepPlanner.setRoot(rel); return hepPlanner.findBestExp(); } };
if (joinInfo.leftKeys.size() > 0) { final RelOptCluster cluster = join.getCluster(); final RexBuilder rexBuilder = cluster.getRexBuilder(); RexNode condition = null; for (IntPair p : joinInfo.pairs()) { final String dynInIdStr = cluster.getQuery().createCorrel(); final int dynInId = RelOptQuery.getCorrelOrdinal(dynInIdStr); left, right, joinInfo.getRemaining(join.getCluster().getRexBuilder()), correlationList, join.getJoinType());
public final RelOptQuery getQuery() { return getCluster().getQuery(); }
protected JdbcTableScan( RelOptCluster cluster, RelOptTable table, JdbcTable jdbcTable, JdbcConvention jdbcConvention) { super(cluster, cluster.traitSetOf(jdbcConvention), table); this.jdbcTable = jdbcTable; assert jdbcTable != null; }