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 booleanWhetherRelBuilder.aggregate(org.apache.calcite.tools.RelBuilder.GroupKey, org.apache.calcite.tools.RelBuilder.AggCall...)should eliminate duplicate aggregate calls; default true.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 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().withDedupAggregateCalls(boolean dedupAggregateCalls) SetsdedupAggregateCalls().withPruneInputOfAggregate(boolean pruneInputOfAggregate) SetspruneInputOfAggregate().withPushJoinCondition(boolean pushJoinCondition) SetspushJoinCondition().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(). -
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().
-