new ProjectRel( cluster, rel, new ProjectRel( cluster, rel,
new ProjectRel( cluster, cluster.traitSetOf(RelCollationImpl.PRESERVE),
@Override public ProjectRel copy(RelTraitSet traitSet, RelNode input, List<RexNode> exps, RelDataType rowType) { return new ProjectRel(getCluster(), traitSet, input, exps, rowType, flags); }
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( new ProjectRel( translator.cluster, child, nodes, null, ProjectRelBase.Flags.Boxed)); return null; }
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( new ProjectRel( translator.cluster, child, nodes, null, ProjectRelBase.Flags.BOXED)); return null; }
/** * Creates a {@link org.eigenbase.rel.ProjectRel} that projects particular * fields of its input, according to a mapping. */ public static ProjectRel project( RelNode child, Mappings.TargetMapping mapping) { List<RexNode> nodes = new ArrayList<RexNode>(); List<String> names = new ArrayList<String>(); final List<RelDataTypeField> fields = child.getRowType().getFieldList(); for (int i = 0; i < mapping.getTargetCount(); i++) { int source = mapping.getSourceOpt(i); RelDataTypeField field = fields.get(source); nodes.add(new RexInputRef(source, field.getType())); names.add(field.getName()); } return new ProjectRel( child.getCluster(), child, nodes, names, ProjectRel.Flags.BOXED); }
public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { assert traitSet.containsIfApplicable(Convention.NONE); return new ProjectRel( getCluster(), sole(inputs), getProjects(), rowType, getFlags(), collationList); }
new ProjectRel( cluster, rel, new ProjectRel( cluster, rel,
return new ProjectRel( getCluster(), this,
case SELECT: child = translate(call.targetExpression); return new ProjectRel( cluster, child,
return new ProjectRel( getCluster(), this,
new ProjectRel( cluster, bb.root,
table.mongoTable, rowType, ops); final ProjectRel newProject = new ProjectRel(cluster, newTable, newProjects, project.getRowType(), ProjectRel.Flags.Boxed, Collections.<RelCollation>emptyList());
case SELECT: child = translate(call.targetExpression); return new ProjectRel( cluster, child,
new ProjectRel( cluster, cluster.traitSetOf(RelCollationImpl.PRESERVE),
public void onMatch(RelOptRuleCall call) { ProjectRel project = call.rel(0); List<RexNode> expList = new ArrayList<RexNode>(project.getChildExps()); if (reduceExpressions(project, expList)) { call.transformTo( new ProjectRel( project.getCluster(), project.getTraitSet(), project.getChild(), expList, project.getRowType(), ProjectRel.Flags.BOXED)); // New plan is absolutely better than old plan. call.getPlanner().setImportance(project, 0.0); } } };
public UnifyResult apply(UnifyIn<ProjectRel, ProjectRel> in) { final RexShuttle shuttle = getRexShuttle(in.target); final List<RexNode> newProjects; try { newProjects = shuttle.apply(in.query.getProjects()); } catch (MatchFailed e) { return null; } final ProjectRel newProject = new ProjectRel( in.target.getCluster(), in.target, newProjects, in.query.getRowType(), in.query.getFlags(), in.query.getCollationList()); final RelNode newProject2 = RemoveTrivialProjectRule.strip(newProject); return in.result(newProject2); } }
new ProjectRel( child.getCluster(), child,
new ProjectRel( cluster, cluster.traitSetOf(
private static RelNode fromMutable(MutableRel node) { switch (node.type) { case SCAN: case VALUES: return ((MutableLeafRel) node).rel; case PROJECT: final MutableProject project = (MutableProject) node; return new ProjectRel(node.cluster, node.cluster.traitSetOf(RelCollationImpl.EMPTY), fromMutable(project.input), project.projects, project.rowType, ProjectRelBase.Flags.BOXED); case FILTER: final MutableFilter filter = (MutableFilter) node; return new FilterRel(node.cluster, fromMutable(filter.input), filter.condition); case AGGREGATE: final MutableAggregate aggregate = (MutableAggregate) node; return new AggregateRel(node.cluster, fromMutable(aggregate.input), aggregate.groupSet, aggregate.aggCalls); case SORT: final MutableSort sort = (MutableSort) node; return new SortRel(node.cluster, node.cluster.traitSetOf(sort.collation), fromMutable(sort.input), sort.collation, sort.offset, sort.fetch); case UNION: final MutableUnion union = (MutableUnion) node; return new UnionRel(union.cluster, fromMutables(union.inputs), union.all); default: throw new AssertionError(node.deep()); } }