@Override public RelNode run( RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, List<RelOptMaterialization> materializations, List<RelOptLattice> lattices ) { final RelNode decorrelatedRel = RelDecorrelator.decorrelateQuery(rel); final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(decorrelatedRel.getCluster(), null); return new RelFieldTrimmer(null, relBuilder).trim(decorrelatedRel); } }
protected RelNode decorrelateQuery(RelNode rootRel) { return RelDecorrelator.decorrelateQuery(rootRel, relBuilder); }
protected RelNode decorrelateQuery(RelNode rootRel) { return RelDecorrelator.decorrelateQuery(rootRel, relBuilder); }
protected RelNode decorrelateQuery(RelNode rootRel) { return RelDecorrelator.decorrelateQuery(rootRel); }
protected RelNode decorrelateQuery(RelNode rootRel) { return RelDecorrelator.decorrelateQuery(rootRel); }
@Deprecated // to be removed before 2.0 public static RelNode decorrelateQuery(RelNode rootRel) { final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(rootRel.getCluster(), null); return decorrelateQuery(rootRel, relBuilder); }
@Deprecated // to be removed before 2.0 public static RelNode decorrelateQuery(RelNode rootRel) { final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(rootRel.getCluster(), null); return decorrelateQuery(rootRel, relBuilder); }
public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { final CalciteConnectionConfig config = planner.getContext().unwrap(CalciteConnectionConfig.class); if (config != null && config.forceDecorrelate()) { return RelDecorrelator.decorrelateQuery(rel); } return rel; } }
@Override public RelNode run( RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, List<RelOptMaterialization> materializations, List<RelOptLattice> lattices ) { final RelNode decorrelatedRel = RelDecorrelator.decorrelateQuery(rel); final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(decorrelatedRel.getCluster(), null); return new RelFieldTrimmer(null, relBuilder).trim(decorrelatedRel); } }
public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { final CalciteConnectionConfig config = planner.getContext().unwrap(CalciteConnectionConfig.class); if (config != null && config.forceDecorrelate()) { final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null); return RelDecorrelator.decorrelateQuery(rel, relBuilder); } return rel; } }
public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet requiredOutputTraits, List<RelOptMaterialization> materializations, List<RelOptLattice> lattices) { final CalciteConnectionConfig config = planner.getContext().unwrap(CalciteConnectionConfig.class); if (config != null && config.forceDecorrelate()) { final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null); return RelDecorrelator.decorrelateQuery(rel, relBuilder); } return rel; } }
private RelNode convertToRel(SqlNode node) { final RelNode convertedNode = config.getConverter().toRel(node).rel; log("INITIAL", convertedNode, logger, null); RelNode transformedNode = transform(PlannerType.HEP, PlannerPhase.SUBQUERY_REWRITE, convertedNode); RelNode decorrelatedNode = RelDecorrelator.decorrelateQuery(transformedNode, DrillRelFactories.LOGICAL_BUILDER.create(transformedNode.getCluster(), null)); return transform(PlannerType.HEP, PlannerPhase.WINDOW_REWRITE, decorrelatedNode); }
public RelRoot sqlToRel(SqlNode sqlNode) { assert sqlNode != null; RexBuilder rexBuilder = this.createRexBuilder(); RelOptCluster cluster = RelOptCluster.create(this.planner, rexBuilder); SqlToRelConverter sqlToRelConverter = new SqlToRelConverter( new ViewExpanderImpl(), this.validator, this.createCatalogReader(), cluster, this.convertletTable, SqlToRelConverter.Config.DEFAULT); RelRoot tempRoot = sqlToRelConverter.convertQuery(sqlNode, false, true); tempRoot = tempRoot.withRel(sqlToRelConverter.flattenTypes(tempRoot.project(), true)); tempRoot = tempRoot.withRel(RelDecorrelator.decorrelateQuery(tempRoot.project())); return tempRoot; }
/** * Returns a rel root that defers materialization of scans via {@link com.dremio.exec.planner.logical.ConvertibleScan} * * Used for serialization. */ public RelRootPlus toConvertibleRelRoot(final SqlNode validatedNode, boolean expand) { final OptionManager o = settings.getOptions(); final boolean useLegacyDecorrelator = o.getOption(PlannerSettings.USE_LEGACY_DECORRELATOR); final long inSubQueryThreshold = o.getOption(ExecConstants.FAST_OR_ENABLE) ? o.getOption(ExecConstants.FAST_OR_MAX_THRESHOLD) : settings.getOptions().getOption(ExecConstants.PLANNER_IN_SUBQUERY_THRESHOLD); final SqlToRelConverter.Config config = SqlToRelConverter.configBuilder() .withInSubQueryThreshold((int) inSubQueryThreshold) .withTrimUnusedFields(true) .withConvertTableAccess(false) .withExpand(expand) .build(); final ReflectionAllowedMonitoringConvertletTable convertletTable = new ReflectionAllowedMonitoringConvertletTable(new ConvertletTable(functionContext.getContextInformation())); final SqlToRelConverter sqlToRelConverter = new DremioSqlToRelConverter(this, validator, convertletTable, config); // Previously we had "top" = !innerQuery, but calcite only adds project if it is not a top query. final RelRoot rel = sqlToRelConverter.convertQuery(validatedNode, false /* needs validate */, false /* top */); final RelNode rel2 = sqlToRelConverter.flattenTypes(rel.rel, true); final RelNode rel3; rel3 = expand ? rel2 : rel2.accept(new RelsWithRexSubQueryFlattener(sqlToRelConverter)); final RelNode rel4 = RelDecorrelator.decorrelateQuery(rel3, useLegacyDecorrelator); if (logger.isDebugEnabled()) { logger.debug("ConvertQuery with expand = {}:\n{}", expand, RelOptUtil.toString(rel4, SqlExplainLevel.ALL_ATTRIBUTES)); } return RelRootPlus.of(rel4, rel.kind, convertletTable.isReflectionDisallowed()); }
config.getRelBuilderFactory().create(cluster, null); root = root.withRel( RelDecorrelator.decorrelateQuery(root.rel, relBuilder));
public RelRoot rel(SqlNode sql) throws RelConversionException { ensure(State.STATE_4_VALIDATED); assert validatedSqlNode != null; final RexBuilder rexBuilder = createRexBuilder(); final RelOptCluster cluster = RelOptCluster.create(planner, rexBuilder); final SqlToRelConverter.Config config = SqlToRelConverter.configBuilder() .withConfig(sqlToRelConverterConfig) .withTrimUnusedFields(false) .withConvertTableAccess(false) .build(); final SqlToRelConverter sqlToRelConverter = new SqlToRelConverter(this, validator, createCatalogReader(), cluster, convertletTable, config); root = sqlToRelConverter.convertQuery(validatedSqlNode, false, true); root = root.withRel(sqlToRelConverter.flattenTypes(root.rel, true)); final RelBuilder relBuilder = config.getRelBuilderFactory().create(cluster, null); root = root.withRel( RelDecorrelator.decorrelateQuery(root.rel, relBuilder)); state = State.STATE_5_CONVERTED; return root; }
public RelRoot rel(SqlNode sql) throws RelConversionException { ensure(State.STATE_4_VALIDATED); assert validatedSqlNode != null; final RexBuilder rexBuilder = createRexBuilder(); final RelOptCluster cluster = RelOptCluster.create(planner, rexBuilder); final SqlToRelConverter.Config config = SqlToRelConverter.configBuilder() .withConfig(sqlToRelConverterConfig) .withTrimUnusedFields(false) .withConvertTableAccess(false) .build(); final SqlToRelConverter sqlToRelConverter = new SqlToRelConverter(new ViewExpanderImpl(), validator, createCatalogReader(), cluster, convertletTable, config); root = sqlToRelConverter.convertQuery(validatedSqlNode, false, true); root = root.withRel(sqlToRelConverter.flattenTypes(root.rel, true)); final RelBuilder relBuilder = config.getRelBuilderFactory().create(cluster, null); root = root.withRel( RelDecorrelator.decorrelateQuery(root.rel, relBuilder)); state = State.STATE_5_CONVERTED; return root; }
config.getRelBuilderFactory().create(cluster, null); return root2.withRel( RelDecorrelator.decorrelateQuery(root.rel, relBuilder));
final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(origRel.getCluster(), null); origRel = RelDecorrelator.decorrelateQuery(origRel, relBuilder);
final RelBuilder relBuilder = RelFactories.LOGICAL_BUILDER.create(origRel.getCluster(), null); origRel = RelDecorrelator.decorrelateQuery(origRel, relBuilder);