Interface RelBuilder.Config
- Enclosing class:
RelBuilder
It is immutable, and all fields are public.
Start with the DEFAULT instance,
and call withXxx methods to set its properties.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiondefault booleanWhether to create an Aggregate even if we know that the input is already unique; default false.default intbloat()Controls whether to merge twoProjectoperators when inlining expressions causes complexity to increase.default booleanWhether to convert Correlate to Join if correlation variable is unused.default booleanWhetherRelBuilder.aggregate(org.apache.calcite.tools.RelBuilder.GroupKey, org.apache.calcite.tools.RelBuilder.AggCall...)should eliminate duplicate aggregate calls; default true.default booleanWhether to ensure that relational operators always have at least one column.default booleanWhetherRelBuilder.aggregate(org.apache.calcite.tools.RelBuilder.GroupKey, org.apache.calcite.tools.RelBuilder.AggCall...)should prune unused input columns; default true.default booleanWhether to push down join conditions; default false (butSqlToRelConverter.config()by default sets this to true).default booleanWhether to remove the distinct that in aggregate if we know that the input is already unique; default false.default booleansimplify()Whether to simplify expressions; default true.default booleanWhether to simplify LIMIT 0 to an empty relation; default true.default booleanWhether to simplifyUnion(Values, Values)orUnion(Project(Values))toValues; default true.withAggregateUnique(boolean aggregateUnique) SetsaggregateUnique().withBloat(int bloat) Setsbloat().withConvertCorrelateToJoin(boolean convertCorrelateToJoin) SetsconvertCorrelateToJoin().withDedupAggregateCalls(boolean dedupAggregateCalls) SetsdedupAggregateCalls().withPreventEmptyFieldList(boolean preventEmptyFieldList) SetspreventEmptyFieldList().withPruneInputOfAggregate(boolean pruneInputOfAggregate) SetspruneInputOfAggregate().withPushJoinCondition(boolean pushJoinCondition) SetspushJoinCondition().withRemoveRedundantDistinct(boolean removeRedundantDistinct) withSimplify(boolean simplify) Setssimplify().withSimplifyLimit(boolean simplifyLimit) SetssimplifyLimit().withSimplifyValues(boolean simplifyValues) SetssimplifyValues().
-
Field Details
-
DEFAULT
Default configuration.
-
-
Method Details
-
bloat
@Default default int bloat()Controls whether to merge twoProjectoperators when inlining expressions causes complexity to increase.Usually merging projects is beneficial, but occasionally the result is more complex than the original projects. Consider:
P: Project(a+b+c AS x, d+e+f AS y, g+h+i AS z) # complexity 15 Q: Project(x*y*z AS p, x-y-z AS q) # complexity 10 R: Project((a+b+c)*(d+e+f)*(g+h+i) AS s, (a+b+c)-(d+e+f)-(g+h+i) AS t) # complexity 34The complexity of an expression is the number of nodes (leaves and operators). For example,
a+b+chas complexity 5 (3 field references and 2 calls):+ / \ + c / \ a bA negative value never allows merges.
A zero or positive value,
bloat, allows a merge if complexity of the result is less than or equal to the sum of the complexity of the originals plusbloat.The default value, 100, allows a moderate increase in complexity but prevents cases where complexity would run away into the millions and run out of memory. Moderate complexity is OK; the implementation, say via
EnumerableCalc, will often gather common sub-expressions and compute them only once. -
withBloat
Setsbloat(). -
dedupAggregateCalls
@Default default boolean dedupAggregateCalls()WhetherRelBuilder.aggregate(org.apache.calcite.tools.RelBuilder.GroupKey, org.apache.calcite.tools.RelBuilder.AggCall...)should eliminate duplicate aggregate calls; default true. -
withDedupAggregateCalls
SetsdedupAggregateCalls(). -
pruneInputOfAggregate
@Default default boolean pruneInputOfAggregate()WhetherRelBuilder.aggregate(org.apache.calcite.tools.RelBuilder.GroupKey, org.apache.calcite.tools.RelBuilder.AggCall...)should prune unused input columns; default true. -
withPruneInputOfAggregate
SetspruneInputOfAggregate(). -
preventEmptyFieldList
@Default default boolean preventEmptyFieldList()Whether to ensure that relational operators always have at least one column. -
withPreventEmptyFieldList
SetspreventEmptyFieldList(). -
pushJoinCondition
@Default default boolean pushJoinCondition()Whether to push down join conditions; default false (butSqlToRelConverter.config()by default sets this to true). -
withPushJoinCondition
SetspushJoinCondition(). -
simplify
@Default default boolean simplify()Whether to simplify expressions; default true. -
withSimplify
Setssimplify(). -
simplifyLimit
@Default default boolean simplifyLimit()Whether to simplify LIMIT 0 to an empty relation; default true. -
withSimplifyLimit
SetssimplifyLimit(). -
simplifyValues
@Default default boolean simplifyValues()Whether to simplifyUnion(Values, Values)orUnion(Project(Values))toValues; default true. -
withSimplifyValues
SetssimplifyValues(). -
aggregateUnique
@Default default boolean aggregateUnique()Whether to create an Aggregate even if we know that the input is already unique; default false. -
withAggregateUnique
SetsaggregateUnique(). -
convertCorrelateToJoin
@Default default boolean convertCorrelateToJoin()Whether to convert Correlate to Join if correlation variable is unused. -
withConvertCorrelateToJoin
SetsconvertCorrelateToJoin(). -
removeRedundantDistinct
@Default default boolean removeRedundantDistinct()Whether to remove the distinct that in aggregate if we know that the input is already unique; default false. -
withRemoveRedundantDistinct
-