Felerius/hyrise

Tests for helper methods

Closed this issue · 1 comments

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 for is_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

Finished up with e85ca8a.