RelNode project = RelOptUtil.createProject( HiveRelFactories.HIVE_PROJECT_FACTORY, newInput, mapNewInputToOutputs.get(newInput)); RelNode distinct = relBuilder.push(project).distinct().build();
RelOptUtil.createProject( newInput, mapNewInputToOutputs.get(newInput));
public void onMatch(RelOptRuleCall call) { final LogicalCorrelate correlate = call.rel(0); final RelNode left = call.rel(1); final Project aggOutputProject; final Aggregate aggregate; if (flavor) { aggOutputProject = call.rel(2); aggregate = call.rel(3); } else { aggregate = call.rel(2); // Create identity projection final List<Pair<RexNode, String>> projects = Lists.newArrayList(); final List<RelDataTypeField> fields = aggregate.getRowType().getFieldList(); for (int i = 0; i < fields.size(); i++) { projects.add(RexInputRef.of2(projects.size(), fields)); } aggOutputProject = (Project) RelOptUtil.createProject( aggregate, Pair.left(projects), Pair.right(projects), false, relBuilder); } onMatch2(call, correlate, left, aggOutputProject, aggregate); }
/** * Projects all {@code input} output fields plus the additional expressions. * * @param input Input relational expression * @param additionalExprs Additional expressions and names * @return the new Project */ private RelNode createProjectWithAdditionalExprs( RelNode input, List<Pair<RexNode, String>> additionalExprs) { final List<RelDataTypeField> fieldList = input.getRowType().getFieldList(); List<Pair<RexNode, String>> projects = Lists.newArrayList(); for (Ord<RelDataTypeField> field : Ord.zip(fieldList)) { projects.add( Pair.of( (RexNode) rexBuilder.makeInputRef( field.e.getType(), field.i), field.e.getName())); } projects.addAll(additionalExprs); return RelOptUtil.createProject(input, Pair.left(projects), Pair.right(projects), false, relBuilder); }
/** * Projects all {@code input} output fields plus the additional expressions. * * @param input Input relational expression * @param additionalExprs Additional expressions and names * @return the new LogicalProject */ private RelNode createProjectWithAdditionalExprs( RelNode input, List<Pair<RexNode, String>> additionalExprs) { final List<RelDataTypeField> fieldList = input.getRowType().getFieldList(); List<Pair<RexNode, String>> projects = Lists.newArrayList(); for (Ord<RelDataTypeField> field : Ord.zip(fieldList)) { projects.add( Pair.of( (RexNode) rexBuilder.makeInputRef( field.e.getType(), field.i), field.e.getName())); } projects.addAll(additionalExprs); return RelOptUtil.createProject(input, projects, false); }
public void onMatch(RelOptRuleCall call) { final LogicalCorrelate correlate = call.rel(0); final RelNode left = call.rel(1); final LogicalProject aggOutputProject; final LogicalAggregate aggregate; if (flavor) { aggOutputProject = call.rel(2); aggregate = call.rel(3); } else { aggregate = call.rel(2); // Create identity projection final List<Pair<RexNode, String>> projects = Lists.newArrayList(); final List<RelDataTypeField> fields = aggregate.getRowType().getFieldList(); for (int i = 0; i < fields.size(); i++) { projects.add(RexInputRef.of2(projects.size(), fields)); } aggOutputProject = (LogicalProject) RelOptUtil.createProject( aggregate, projects, false); } onMatch2(call, correlate, left, aggOutputProject, aggregate); }
RelNode newProject = RelOptUtil.createProject(aggregate, ImmutableList.of(rexBuilder.makeCast( cluster.getTypeFactory().createTypeWithNullability(projExprs.get(0).getType(), true),
return RelOptUtil.createProject(correlate, Pair.left(newProjects), Pair.right(newProjects), false, relBuilder);
return RelOptUtil.createProject(correlate, newProjects, false);
RelOptUtil.createProject(aggregate, ImmutableList.of( rexBuilder.makeCast(
return RelOptUtil.createProject(join, Pair.left(newProjExprs), Pair.right(newProjExprs), false, relBuilder);
return RelOptUtil.createProject(join, newProjExprs, false);
rexBuilder.makeInputRef(join, nullIndicatorPos)); RelNode joinOutputProject = RelOptUtil.createProject( join, joinOutputProjects, null, false, relBuilder); newAggOutputProjects)); RelNode newAggOutputProject = RelOptUtil.createProject( newAggregate, newAggOutputProjectList, null, false, relBuilder);
RelOptUtil.createProject( join, joinOutputProjects, RelOptUtil.createProject( newAggregate, newAggOutputProjectList,
r = RelOptUtil.createProject(r, projects, null, true, relBuilderFactory.create(aggregate.getCluster(), null)); if (allColumnsInAggregate) { == aggregate.getGroupSet().cardinality() + newAggCalls.size()) { r = RelOptUtil.createProject(r, projects2, null, true, relBuilderFactory.create(aggregate.getCluster(), null)); break b;
/** * Creates a relational expression that projects the given fields of the * input. * * <p>Optimizes if the fields are the identity projection.</p> * * @param child Input relational expression * @param posList Source of each projected field * @return Relational expression that projects given fields */ public static RelNode createProject(final RelNode child, final List<Integer> posList) { return createProject( RelFactories.DEFAULT_PROJECT_FACTORY, child, posList); }
/** * Creates a {@link org.apache.calcite.rel.logical.LogicalProject} that * projects particular fields of its input, according to a mapping. */ public static RelNode createProject( RelNode child, Mappings.TargetMapping mapping) { return createProject(child, Mappings.asList(mapping.inverse())); }
public static RelNode createProject(RelNode child, Mappings.TargetMapping mapping, RelFactories.ProjectFactory projectFactory) { return createProject(projectFactory, child, Mappings.asList(mapping.inverse())); }
public static RelNode createProject(RelNode child, Mappings.TargetMapping mapping, RelFactories.ProjectFactory projectFactory) { return createProject(projectFactory, child, Mappings.asList(mapping.inverse())); }
/** * Creates a {@link org.apache.calcite.rel.logical.LogicalProject} that * projects particular fields of its input, according to a mapping. */ public static RelNode createProject( RelNode child, Mappings.TargetMapping mapping) { return createProject(child, Mappings.asList(mapping.inverse())); }