See: Description
Class | Description |
---|---|
CreatesDuplicatesProperty |
A property that determines whether the expression may produce duplicate entries.
|
FieldWithComparisonCountProperty |
A property that counts the number of
FieldWithComparison s that appear in a planner expression tree. |
PredicateHeightProperty |
A property representing the maximum height of any of the
QueryComponent trees in the given expression. |
RecordTypesProperty |
A property visitor that determines the set of record type names (as Strings) that a
RelationalPlannerExpression
could produce. |
RelationalExpressionDepthProperty |
A property representing the minimum depth of any of a set of relational planner expression types in a relational
planner expression: that is, the smallest integer such that one of those types is exactly that many relational
planner expressions away from the root expression.
|
TypeFilterCountProperty |
A property that determines the sum, over all elements of a
PlannerExpression tree, of the number of record
types that are passed by type filters in the tree. |
UnmatchedFieldsProperty |
A property for counting the total number of
KeyExpression columns (i.e., field-like KeyExpression s
such as FieldKeyExpression and
RecordTypeKeyExpression ) that are not matched with at
least one Comparisons.Comparison in a planner expression
tree. |
In Cascades, a property is an attribute of PlannerExpression
that cannot be described from the structure of the expression tree alone. For example, the set of record types that
a relational planner expression produces is a property, but whether or not it has a filter that contains an AND
clause is not a property. Properties generally need to be evaluated against an expression, instead of arising from
the structural features of a planner expression (which could be matched using an
ExpressionMatcher
.
In the Record Layer, properties are implemented as hierarchical visitors on the PlannerExpression
tree; this
approach prevents the accumulation of many methods on the PlannerExpression
interface. Furthermore, some
properties (such as the set of possible record types returned) cannot be determined from the PlannerExpression
alone; they also need access to the PlanContext
.
This package contains various implementations of PlannerProperty
.