public boolean run(RelNode input) { go(input); return found; }
public SqlHandlerConfig cloneWithNewObserver(AttemptObserver replacementObserver){ return new SqlHandlerConfig(this.context, this.converter, replacementObserver, this.materializations); }
public RelsWithRexSubQueryFlattener(SqlToRelConverter converter) { flattener = new RexSubQueryFlattener(converter); }
public ExplainHandler(SqlHandlerConfig config) { super(); this.config = new SqlHandlerConfig(config.getContext(), config.getConverter(), config.getObserver(), config.getMaterializations().orNull()); }
/** * Return Dremio Logical RelNode tree for a SELECT statement, when it is executed / explained directly. * * @param relNode : root RelNode corresponds to Calcite Logical RelNode. * @param validatedRowType : the rowType for the final field names. A rename project may be placed on top of the root. * @return * @throws RelConversionException * @throws SqlUnsupportedException */ public static Rel convertToDrel(SqlHandlerConfig config, RelNode relNode, RelDataType validatedRowType) throws RelConversionException, SqlUnsupportedException { Rel convertedRelNode = convertToDrel(config, relNode); // Put a non-trivial topProject to ensure the final output field name is preserved, when necessary. convertedRelNode = addRenamedProject(config, convertedRelNode, validatedRowType); convertedRelNode = SqlHandlerUtil.storeQueryResultsIfNeeded(config.getConverter().getParserConfig(), config.getContext(), convertedRelNode); return new ScreenRel(convertedRelNode.getCluster(), convertedRelNode.getTraitSet(), convertedRelNode); }
private static RelNode toConvertibleRelRoot(SqlHandlerConfig config, final SqlNode validatedNode, boolean expand, RelTransformer relTransformer) { final Stopwatch stopwatch = Stopwatch.createStarted(); final RelRootPlus convertible = config.getConverter().toConvertibleRelRoot(validatedNode, expand); config.getObserver().planConvertedToRel(convertible.rel, stopwatch.elapsed(TimeUnit.MILLISECONDS)); final RelNode reduced = relTransformer.transform(transform(config, PlannerType.HEP, PlannerPhase.REDUCE_EXPRESSIONS, convertible.rel, convertible.rel.getTraitSet(), true)); config.getObserver().planSerializable(reduced); return reduced; }
public static ConvertedRelNode validateAndConvert(SqlHandlerConfig config, SqlNode sqlNode, RelTransformer relTransformer) throws ForemanSetupException, RelConversionException, ValidationException { final Pair<SqlNode, RelDataType> validatedTypedSqlNode = validateNode(config, sqlNode); final SqlNode validated = validatedTypedSqlNode.getKey(); final RelNode rel = convertToRel(config, validated, relTransformer); final RelNode preprocessedRel = preprocessNode(config, rel); return new ConvertedRelNode(preprocessedRel, validatedTypedSqlNode.getValue()); }
private static RelNode convertToRel(SqlHandlerConfig config, SqlNode node, RelTransformer relTransformer) throws RelConversionException { final RelNode rel = convertToRelRootAndJdbc(config, node, relTransformer); log("INITIAL", rel, logger, null); return transform(config, PlannerType.HEP, PlannerPhase.WINDOW_REWRITE, rel, rel.getTraitSet(), true); }
public static ConvertedRelNode validateAndConvert(SqlHandlerConfig config, SqlNode sqlNode) throws ForemanSetupException, RelConversionException, ValidationException { return validateAndConvert(config, sqlNode, NO_OP_TRANSFORMER); }
public boolean visit(final RelNode node) { if (node instanceof JdbcCrel) { return false; } for (RelNode input : node.getInputs()) { if (visit(input)) { return true; } } final RexSubQueryFinder subQueryFinder = new RexSubQueryFinder(); node.accept(subQueryFinder); if (subQueryFinder.getFoundSubQuery()) { return true; } return false; } }
public static RelNode trimFields(final RelNode relNode, boolean shouldLog) { final Stopwatch w = Stopwatch.createStarted(); final RelFieldTrimmer trimmer = DremioFieldTrimmer.of(relNode.getCluster()); final RelNode trimmed = trimmer.trim(relNode); if(shouldLog) { log(PlannerType.HEP, PlannerPhase.FIELD_TRIMMING, trimmed, logger, w); } return trimmed; }
PlanNormalizer(SqlHandlerConfig sqlHandlerConfig) { this.optionManager = sqlHandlerConfig.getContext().getOptions(); }
public DremioMaterialization transformMaterialization(RelTransformer transformer) { return new DremioMaterialization(transformer.transform(tableRel), queryRel, incrementalUpdateSettings, joinDependencyProperties, layoutInfo, materializationId, schema, expirationTimestamp, snowflake, original, alreadyStripped, postStripTransformer); }
public RelsWithRexSubQueryTransformer(SqlHandlerConfig config) { this.transformer = new RexSubQueryTransformer(config); }
public boolean failed() { return transformer.isFailed(); }
@Override public RelNode visit(RelNode other) { if (other instanceof PrelFinalizable) { return ((PrelFinalizable) other).finalizeRel(); } else { return super.visit(other); } }
public static DremioFieldTrimmer of(RelOptCluster cluster) { RelBuilder builder = DremioRelFactories.CALCITE_LOGICAL_BUILDER.create(cluster, null); return new DremioFieldTrimmer(builder); }
public StripResult transformNormalized(RelTransformer transformer) { return new StripResult(transformer.transform(normalized), stripFragment); }
public DremioMaterialization transformQuery(RelTransformer transformer) { return new DremioMaterialization(tableRel, transformer.transform(queryRel), incrementalUpdateSettings, joinDependencyProperties, layoutInfo, materializationId, schema, expirationTimestamp, snowflake, original, alreadyStripped, postStripTransformer); }