Tests for helper methods
Closed this issue · 1 comments
Felerius commented
extract_input_lqp_info
- Success cases:
(NOT) IN
,(NOT) EXISTS
, comparisons -
(NOT) IN
with constant list (NoRewriteConstantIn
) - Correlated
NOT IN
(NoRewriteCorrelatedNotIn
) -
(NOT) IN
and comparison: Left operand must be a column expression (NoRewriteIfLeftOperandIsNotAColumn
, None that check for column expressions that are not table columns) - Uncorrelated
(NOT) EXISTS
not changed (NoRewriteUncorrelatedExists
)
uses_correlated_parameters
/assess_correlated_parameter_usage
- Correlated parameter used in subquery
- Correlated parameter used in join (
NoRewriteIfJoinUsesCorrelatedParameter
) - Correlated parameter used in projection (
NoRewriteIfCorrelatedParameterInProjection
) - Correlated parameter of outer subquery used
- Counts correlated nodes and not number of correlated uses
try_to_extract_join_predicate
- Predicate of unsupported type (
NoRewriteCorrelatedNestedIn
,NoRewriteCorrelatedNestedExists
, ...) - Non-equals predicate below aggregate (
NoRewriteIfCorrelatedParameterInPredicateOtherThanEqualsBelowAggregate
) - Other side is not a column expression
- Correlated parameter is from outer subquery/a placeholder
adapt_aggregate_node
- No duplicate group by columns
- Preserves aggregates
adapt_alias_node
- No added duplicates
- Preserves original duplicates
- Preserves aliases of originals
adapt_projection_node
- No added duplicates
- Preserves original duplicates
find_pullable_predicate_nodes
- Does not consider non-equals predicate below aggregate as pullable (overlaps with
try_to_extract_join_predicate
, basically just tests that the correct value foris_below_aggregate
is passed to that method) - Finds nodes in certain input sides of joins:
- inner/cross
- outer join variants
- semi/anti
- Does not find nodes in the NULL-producing sides of outer joins
- Does not find nodes in the right side of semi-/anti-joins
- Does not find nodes below limits (
NoRewriteIfCorrelatedParameterIsUsedBelowLimitNode
)
copy_and_adapt_lqp
- Does not change nodes from original LQP (important for multi output nodes)
- Removes pullable predicates from the LQP
- Note: Many cases are already covered by the tests for the
adapt_*
methods