public RelNode get() { final RelOptCluster cluster = prepare.createCluster(planner, rexBuilder); return new LixToRelTranslator(cluster, CalcitePreparingStmt.this) .translate(queryable); } }, resultType);
switch (method) { case SELECT: input = translate(call.targetExpression); return LogicalProject.create(input, toRex(input, (FunctionExpression) call.expressions.get(0)), (List<String>) null); input = translate(call.targetExpression); return LogicalFilter.create(input, toRex((FunctionExpression) call.expressions.get(0), input));
RelNode toRel(Queryable<T> queryable) { if (queryable instanceof QueryableDefaults.Replayable) { //noinspection unchecked ((QueryableDefaults.Replayable) queryable).replay(this); return rel; } if (queryable instanceof AbstractTableQueryable) { final AbstractTableQueryable tableQueryable = (AbstractTableQueryable) queryable; final QueryableTable table = tableQueryable.table; final CalciteSchema.TableEntry tableEntry = CalciteSchema.from(tableQueryable.schema) .add(tableQueryable.tableName, tableQueryable.table); final RelOptTableImpl relOptTable = RelOptTableImpl.create(null, table.getRowType(translator.typeFactory), tableEntry, null); if (table instanceof TranslatableTable) { return ((TranslatableTable) table).toRel(translator.toRelContext(), relOptTable); } else { return LogicalTableScan.create(translator.cluster, relOptTable); } } return translator.translate(queryable.getExpression()); }
RelNode toRel(Queryable<T> queryable) { if (queryable instanceof QueryableDefaults.Replayable) { //noinspection unchecked ((QueryableDefaults.Replayable) queryable).replay(this); return rel; } if (queryable instanceof AbstractTableQueryable) { final AbstractTableQueryable tableQueryable = (AbstractTableQueryable) queryable; final QueryableTable table = tableQueryable.table; final CalciteSchema.TableEntry tableEntry = CalciteSchema.from(tableQueryable.schema) .add(tableQueryable.tableName, tableQueryable.table); final RelOptTableImpl relOptTable = RelOptTableImpl.create(null, table.getRowType(translator.typeFactory), tableEntry, null); if (table instanceof TranslatableTable) { return ((TranslatableTable) table).toRel(translator, relOptTable); } else { return LogicalTableScan.create(translator.cluster, relOptTable); } } return translator.translate(queryable.getExpression()); }
public Queryable<T> where( Queryable<T> source, FunctionExpression<? extends Predicate1<T>> predicate) { RelNode child = toRel(source); RexNode node = translator.toRex(predicate, child); setRel(LogicalFilter.create(child, node)); return source; }
public <TResult> Queryable<TResult> select( Queryable<T> source, FunctionExpression<Function1<T, TResult>> selector) { RelNode child = toRel(source); List<RexNode> nodes = translator.toRexList(selector, child); setRel( LogicalProject.create(child, nodes, (List<String>) null)); return null; }
private List<RexNode> toRex( RelNode child, FunctionExpression expression) { RexBuilder rexBuilder = cluster.getRexBuilder(); List<RexNode> list = Collections.singletonList( rexBuilder.makeRangeReference(child)); CalcitePrepareImpl.ScalarTranslator translator = CalcitePrepareImpl.EmptyScalarTranslator .empty(rexBuilder) .bind(expression.parameterList, list); final List<RexNode> rexList = new ArrayList<>(); final Expression simple = Blocks.simple(expression.body); for (Expression expression1 : fieldExpressions(simple)) { rexList.add(translator.toRex(expression1)); } return rexList; }
switch (method) { case SELECT: input = translate(call.targetExpression); return LogicalProject.create(input, toRex(input, (FunctionExpression) call.expressions.get(0)), (List<String>) null); input = translate(call.targetExpression); return LogicalFilter.create(input, toRex((FunctionExpression) call.expressions.get(0), input));
public Queryable<T> where( Queryable<T> source, FunctionExpression<? extends Predicate1<T>> predicate) { RelNode child = toRel(source); RexNode node = translator.toRex(predicate, child); setRel(LogicalFilter.create(child, node)); return source; }
public <TResult> Queryable<TResult> select( Queryable<T> source, FunctionExpression<Function1<T, TResult>> selector) { RelNode child = toRel(source); List<RexNode> nodes = translator.toRexList(selector, child); setRel( LogicalProject.create(child, nodes, (List<String>) null)); return null; }
private List<RexNode> toRex( RelNode child, FunctionExpression expression) { RexBuilder rexBuilder = cluster.getRexBuilder(); List<RexNode> list = Collections.singletonList( rexBuilder.makeRangeReference(child)); CalcitePrepareImpl.ScalarTranslator translator = CalcitePrepareImpl.EmptyScalarTranslator .empty(rexBuilder) .bind(expression.parameterList, list); final List<RexNode> rexList = new ArrayList<>(); final Expression simple = Blocks.simple(expression.body); for (Expression expression1 : fieldExpressions(simple)) { rexList.add(translator.toRex(expression1)); } return rexList; }
public PreparedResult prepareQueryable( final Queryable queryable, RelDataType resultType) { return prepare_(() -> { final RelOptCluster cluster = prepare.createCluster(planner, rexBuilder); return new LixToRelTranslator(cluster, CalcitePreparingStmt.this) .translate(queryable); }, resultType); }
public PreparedResult prepareQueryable( final Queryable queryable, RelDataType resultType) { return prepare_(() -> { final RelOptCluster cluster = prepare.createCluster(planner, rexBuilder); return new LixToRelTranslator(cluster, CalcitePreparingStmt.this) .translate(queryable); }, resultType); }