diff --git a/pydough/conversion/hybrid_tree.py b/pydough/conversion/hybrid_tree.py index aeea1bf38..b481c5a74 100644 --- a/pydough/conversion/hybrid_tree.py +++ b/pydough/conversion/hybrid_tree.py @@ -860,6 +860,58 @@ def is_singular(self) -> bool: # The current level is fine, so check any levels above it next. return True if self.parent is None else self.parent.is_singular() + def search_reverse_cardinality(self) -> JoinCardinality: + """ + TODO + """ + if self.parent is None: + return JoinCardinality.SINGULAR_ACCESS + parent_cardinality: JoinCardinality = self.parent.search_reverse_cardinality() + + current_cardinality: JoinCardinality + match self.pipeline[0]: + case HybridRoot(): + # If the parent of the child is a root, it means a cross join + # is occurring, so the cardinality depends on whether + # the parent context is singular or plural. + current_cardinality = ( + JoinCardinality.SINGULAR_ACCESS + if self.is_singular() + else JoinCardinality.PLURAL_ACCESS + ) + case HybridCollectionAccess(): + # For non sub-collection accesses, use plural access. + # For a sub-collection, infer from the reverse property. + if isinstance(self.pipeline[0].collection, SubCollection): + current_cardinality = self.infer_metadata_reverse_cardinality( + self.pipeline[0].collection.subcollection_property + ) + else: + current_cardinality = JoinCardinality.PLURAL_ACCESS + # For partition & partition child, infer from the underlying child. + case HybridPartition(): + current_cardinality = JoinCardinality.SINGULAR_ACCESS + case HybridPartitionChild(): + current_cardinality = self.pipeline[ + 0 + ].subtree.infer_root_reverse_cardinality(self) + case HybridChildPullUp(): + current_cardinality = self.children[ + self.pipeline[0].child_idx + ].subtree.search_reverse_cardinality() + case _: + raise NotImplementedError( + f"Invalid start of pipeline: {self.pipeline[0].__class__.__name__}" + ) + + if current_cardinality.plural: + parent_cardinality = parent_cardinality.add_plural() + + if current_cardinality.filters: + parent_cardinality = parent_cardinality.add_filter() + + return parent_cardinality + def equals_ignoring_successors(self, other: "HybridTree") -> bool: """ Compares two hybrid trees without taking into account their diff --git a/pydough/conversion/relational_converter.py b/pydough/conversion/relational_converter.py index 35c98e75e..8b979c9c2 100644 --- a/pydough/conversion/relational_converter.py +++ b/pydough/conversion/relational_converter.py @@ -926,6 +926,12 @@ def translate_sub_collection( if (not reverse_cardinality.filters) and (not parent.always_exists()): reverse_cardinality = reverse_cardinality.add_filter() + ancestral_reverse_cardinality: JoinCardinality = ( + parent.search_reverse_cardinality() + ) + if ancestral_reverse_cardinality.plural: + reverse_cardinality = reverse_cardinality.add_plural() + join_keys: list[tuple[HybridExpr, HybridExpr]] | None = None join_cond: HybridExpr | None = None match collection_access.subcollection_property: @@ -1376,7 +1382,8 @@ def rel_translation( result, JoinType.INNER, JoinCardinality.PLURAL_ACCESS, - JoinCardinality.SINGULAR_ACCESS, + # JoinCardinality.SINGULAR_ACCESS, + preceding_hybrid[0].search_reverse_cardinality(), join_keys, None, None, diff --git a/tests/test_plan_refsols/aggregate_then_backref.txt b/tests/test_plan_refsols/aggregate_then_backref.txt index d041361c5..58f460454 100644 --- a/tests/test_plan_refsols/aggregate_then_backref.txt +++ b/tests/test_plan_refsols/aggregate_then_backref.txt @@ -1,5 +1,5 @@ ROOT(columns=[('part_key', l_partkey), ('supplier_key', l_suppkey), ('order_key', l_orderkey), ('order_quantity_ratio', l_quantity / DEFAULT_TO(sum_l_quantity, 0:numeric))], orderings=[]) - JOIN(condition=t0.l_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'l_orderkey': t1.l_orderkey, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'sum_l_quantity': t0.sum_l_quantity}) + JOIN(condition=t0.l_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'l_orderkey': t1.l_orderkey, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'sum_l_quantity': t0.sum_l_quantity}) AGGREGATE(keys={'l_orderkey': l_orderkey}, aggregations={'sum_l_quantity': SUM(l_quantity)}) SCAN(table=tpch.LINEITEM, columns={'l_orderkey': l_orderkey, 'l_quantity': l_quantity}) SCAN(table=tpch.LINEITEM, columns={'l_orderkey': l_orderkey, 'l_partkey': l_partkey, 'l_quantity': l_quantity, 'l_suppkey': l_suppkey}) diff --git a/tests/test_plan_refsols/aggregation_analytics_1.txt b/tests/test_plan_refsols/aggregation_analytics_1.txt index 5313d48d0..8f60b7f4b 100644 --- a/tests/test_plan_refsols/aggregation_analytics_1.txt +++ b/tests/test_plan_refsols/aggregation_analytics_1.txt @@ -8,7 +8,7 @@ ROOT(columns=[('part_name', p_name), ('revenue_generated', ROUND(DEFAULT_TO(sum_ FILTER(condition=STARTSWITH(p_container, 'LG':string), columns={'p_name': p_name, 'p_partkey': p_partkey}) SCAN(table=tpch.PART, columns={'p_container': p_container, 'p_name': p_name, 'p_partkey': p_partkey}) AGGREGATE(keys={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey}, aggregations={'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount * 1:numeric - l_tax - l_quantity * ps_supplycost)}) - JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.ps_suppkey == t1.l_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'l_tax': t1.l_tax, 'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) + JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.ps_suppkey == t1.l_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'l_tax': t1.l_tax, 'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) JOIN(condition=t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) JOIN(condition=t0.ps_suppkey == t1.s_suppkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) SCAN(table=tpch.PARTSUPP, columns={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey, 'ps_supplycost': ps_supplycost}) diff --git a/tests/test_plan_refsols/aggregation_analytics_2.txt b/tests/test_plan_refsols/aggregation_analytics_2.txt index 2ef53d9c2..3d69403d2 100644 --- a/tests/test_plan_refsols/aggregation_analytics_2.txt +++ b/tests/test_plan_refsols/aggregation_analytics_2.txt @@ -1,7 +1,7 @@ ROOT(columns=[('part_name', p_name), ('revenue_generated', ROUND(DEFAULT_TO(sum_revenue, 0:numeric), 2:numeric))], orderings=[(ROUND(DEFAULT_TO(sum_revenue, 0:numeric), 2:numeric)):asc_first, (p_name):asc_first], limit=4:numeric) JOIN(condition=t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'p_name': t1.p_name, 'sum_revenue': t0.sum_revenue}) AGGREGATE(keys={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey}, aggregations={'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount * 1:numeric - l_tax - l_quantity * ps_supplycost)}) - JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.ps_suppkey == t1.l_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'l_tax': t1.l_tax, 'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) + JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.ps_suppkey == t1.l_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'l_tax': t1.l_tax, 'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) JOIN(condition=t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) JOIN(condition=t0.ps_suppkey == t1.s_suppkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) SCAN(table=tpch.PARTSUPP, columns={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey, 'ps_supplycost': ps_supplycost}) diff --git a/tests/test_plan_refsols/aggregation_analytics_3.txt b/tests/test_plan_refsols/aggregation_analytics_3.txt index 339aaf5d5..a3562f234 100644 --- a/tests/test_plan_refsols/aggregation_analytics_3.txt +++ b/tests/test_plan_refsols/aggregation_analytics_3.txt @@ -1,7 +1,7 @@ ROOT(columns=[('part_name', p_name), ('revenue_ratio', ROUND(DEFAULT_TO(sum_revenue, 0:numeric) / DEFAULT_TO(sum_l_quantity, 0:numeric), 2:numeric))], orderings=[(ROUND(DEFAULT_TO(sum_revenue, 0:numeric) / DEFAULT_TO(sum_l_quantity, 0:numeric), 2:numeric)):asc_first, (p_name):asc_first], limit=3:numeric) JOIN(condition=t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'p_name': t1.p_name, 'sum_l_quantity': t0.sum_l_quantity, 'sum_revenue': t0.sum_revenue}) AGGREGATE(keys={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey}, aggregations={'sum_l_quantity': SUM(l_quantity), 'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount * 1:numeric - l_tax - l_quantity * ps_supplycost)}) - JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.ps_suppkey == t1.l_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'l_tax': t1.l_tax, 'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) + JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.ps_suppkey == t1.l_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'l_tax': t1.l_tax, 'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) JOIN(condition=t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) JOIN(condition=t0.ps_suppkey == t1.s_suppkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'ps_partkey': t0.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t0.ps_supplycost}) SCAN(table=tpch.PARTSUPP, columns={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey, 'ps_supplycost': ps_supplycost}) diff --git a/tests/test_plan_refsols/bad_child_reuse_2.txt b/tests/test_plan_refsols/bad_child_reuse_2.txt index cc52f1bfb..06dcdf154 100644 --- a/tests/test_plan_refsols/bad_child_reuse_2.txt +++ b/tests/test_plan_refsols/bad_child_reuse_2.txt @@ -2,6 +2,8 @@ ROOT(columns=[('cust_key', c_custkey), ('n_orders', n_rows), ('n_cust', n_cust)] FILTER(condition=n_rows != 0:numeric, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'n_cust': n_cust, 'n_rows': n_rows}) PROJECT(columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'n_cust': RELSIZE(args=[], partition=[c_nationkey], order=[]), 'n_rows': n_rows}) JOIN(condition=t0.c_custkey == t1.o_custkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'o_custkey': o_custkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey}) diff --git a/tests/test_plan_refsols/bad_child_reuse_3.txt b/tests/test_plan_refsols/bad_child_reuse_3.txt index cc52f1bfb..06dcdf154 100644 --- a/tests/test_plan_refsols/bad_child_reuse_3.txt +++ b/tests/test_plan_refsols/bad_child_reuse_3.txt @@ -2,6 +2,8 @@ ROOT(columns=[('cust_key', c_custkey), ('n_orders', n_rows), ('n_cust', n_cust)] FILTER(condition=n_rows != 0:numeric, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'n_cust': n_cust, 'n_rows': n_rows}) PROJECT(columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'n_cust': RELSIZE(args=[], partition=[c_nationkey], order=[]), 'n_rows': n_rows}) JOIN(condition=t0.c_custkey == t1.o_custkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'o_custkey': o_custkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey}) diff --git a/tests/test_plan_refsols/bad_child_reuse_4.txt b/tests/test_plan_refsols/bad_child_reuse_4.txt index d9b891dea..5607f1c62 100644 --- a/tests/test_plan_refsols/bad_child_reuse_4.txt +++ b/tests/test_plan_refsols/bad_child_reuse_4.txt @@ -1,6 +1,8 @@ ROOT(columns=[('cust_key', c_custkey), ('n_orders', n_rows)], orderings=[(c_acctbal):desc_last], limit=10:numeric) FILTER(condition=n_rows != 0:numeric & DEFAULT_TO(n_rows, 0:numeric) < RELAVG(args=[DEFAULT_TO(n_rows, 0:numeric)], partition=[c_nationkey], order=[]), columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'n_rows': n_rows}) JOIN(condition=t0.c_custkey == t1.o_custkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'o_custkey': o_custkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey}) diff --git a/tests/test_plan_refsols/common_prefix_ag.txt b/tests/test_plan_refsols/common_prefix_ag.txt index 06810301d..f132fa538 100644 --- a/tests/test_plan_refsols/common_prefix_ag.txt +++ b/tests/test_plan_refsols/common_prefix_ag.txt @@ -3,7 +3,7 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_anything_n_name': ANYTHING(anything_n_name), 'n_rows': COUNT(), 'sum_n_rows': SUM(KEEP_IF(count_c_custkey, count_c_custkey != 0:numeric)), 'sum_sum_n_rows': SUM(sum_n_rows), 'sum_sum_sum_revenue': SUM(sum_sum_revenue)}) AGGREGATE(keys={'c_custkey': c_custkey_0, 'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'count_c_custkey': COUNT(c_custkey), 'sum_n_rows': SUM(n_rows), 'sum_sum_revenue': SUM(sum_revenue)}) JOIN(condition=t0.n_nationkey == t1.n_nationkey & t0.c_custkey == t1.c_custkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'c_custkey_0': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_rows': t1.n_rows, 'sum_revenue': t1.sum_revenue}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -13,8 +13,8 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro PROJECT(columns={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'n_rows': KEEP_IF(count_o_orderkey, count_o_orderkey != 0:numeric), 'sum_revenue': sum_revenue}) AGGREGATE(keys={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'o_orderkey': o_orderkey_0}, aggregations={'count_o_orderkey': COUNT(o_orderkey), 'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount - l_quantity * ps_supplycost)}) JOIN(condition=t0.c_custkey == t1.c_custkey & t0.n_nationkey == t1.n_nationkey & t0.o_orderkey == t1.o_orderkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'o_orderkey_0': t0.o_orderkey, 'ps_supplycost': t1.ps_supplycost}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -25,9 +25,9 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey, 'o_orderpriority': o_orderpriority}) JOIN(condition=t0.l_partkey == t1.ps_partkey & t0.l_suppkey == t1.ps_suppkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_quantity': t0.l_quantity, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey, 'ps_supplycost': t1.ps_supplycost}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_partkey': t0.l_partkey, 'l_quantity': t0.l_quantity, 'l_suppkey': t0.l_suppkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/common_prefix_ah.txt b/tests/test_plan_refsols/common_prefix_ah.txt index 266aea028..0066e32d8 100644 --- a/tests/test_plan_refsols/common_prefix_ah.txt +++ b/tests/test_plan_refsols/common_prefix_ah.txt @@ -3,8 +3,8 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_high_orders AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_anything_n_name': ANYTHING(anything_n_name), 'n_rows': COUNT(), 'sum_n_rows': SUM(KEEP_IF(count_o_orderkey, count_o_orderkey != 0:numeric)), 'sum_sum_revenue': SUM(sum_revenue)}) AGGREGATE(keys={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'o_orderkey': o_orderkey_0}, aggregations={'anything_n_name': ANYTHING(n_name), 'count_o_orderkey': COUNT(o_orderkey), 'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount - l_quantity * ps_supplycost)}) JOIN(condition=t0.c_custkey == t1.c_custkey & t0.n_nationkey == t1.n_nationkey & t0.o_orderkey == t1.o_orderkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'o_orderkey_0': t0.o_orderkey, 'ps_supplycost': t1.ps_supplycost}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -15,9 +15,9 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_high_orders SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey, 'o_orderpriority': o_orderpriority}) JOIN(condition=t0.l_partkey == t1.ps_partkey & t0.l_suppkey == t1.ps_suppkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_quantity': t0.l_quantity, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey, 'ps_supplycost': t1.ps_supplycost}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_partkey': t0.l_partkey, 'l_quantity': t0.l_quantity, 'l_suppkey': t0.l_suppkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/common_prefix_ai.txt b/tests/test_plan_refsols/common_prefix_ai.txt index 9ba0f521a..dcefbf796 100644 --- a/tests/test_plan_refsols/common_prefix_ai.txt +++ b/tests/test_plan_refsols/common_prefix_ai.txt @@ -3,7 +3,7 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_anything_n_name': ANYTHING(anything_n_name), 'n_rows': COUNT(), 'sum_n_rows': SUM(KEEP_IF(count_c_custkey, count_c_custkey != 0:numeric)), 'sum_sum_revenue': SUM(sum_revenue)}) AGGREGATE(keys={'c_custkey': c_custkey_0, 'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'count_c_custkey': COUNT(c_custkey), 'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount - l_quantity * ps_supplycost)}) JOIN(condition=t0.n_nationkey == t1.n_nationkey & t0.c_custkey == t1.c_custkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'c_custkey_0': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'ps_supplycost': t1.ps_supplycost}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -12,9 +12,9 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_mktsegment': c_mktsegment, 'c_nationkey': c_nationkey}) JOIN(condition=t0.l_partkey == t1.ps_partkey & t0.l_suppkey == t1.ps_suppkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_quantity': t0.l_quantity, 'n_nationkey': t0.n_nationkey, 'ps_supplycost': t1.ps_supplycost}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_partkey': t0.l_partkey, 'l_quantity': t0.l_quantity, 'l_suppkey': t0.l_suppkey, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/common_prefix_aj.txt b/tests/test_plan_refsols/common_prefix_aj.txt index c2046982c..b333c9e5a 100644 --- a/tests/test_plan_refsols/common_prefix_aj.txt +++ b/tests/test_plan_refsols/common_prefix_aj.txt @@ -3,7 +3,7 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_anything_n_name': ANYTHING(anything_n_name), 'n_rows': COUNT(), 'sum_n_rows': SUM(KEEP_IF(count_c_custkey, count_c_custkey != 0:numeric)), 'sum_sum_n_rows': SUM(sum_n_rows), 'sum_sum_sum_revenue': SUM(sum_sum_revenue)}) AGGREGATE(keys={'c_custkey': c_custkey_0, 'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'count_c_custkey': COUNT(c_custkey), 'sum_n_rows': SUM(n_rows), 'sum_sum_revenue': SUM(sum_revenue)}) JOIN(condition=t0.n_nationkey == t1.n_nationkey & t0.c_custkey == t1.c_custkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'c_custkey_0': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_rows': t1.n_rows, 'sum_revenue': t1.sum_revenue}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -13,8 +13,8 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro PROJECT(columns={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'n_rows': KEEP_IF(count_o_orderkey, count_o_orderkey != 0:numeric), 'sum_revenue': sum_revenue}) AGGREGATE(keys={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'o_orderkey': o_orderkey_0}, aggregations={'count_o_orderkey': COUNT(o_orderkey), 'sum_revenue': SUM(l_extendedprice * 1:numeric - l_discount - l_quantity * ps_supplycost)}) JOIN(condition=t0.c_custkey == t1.c_custkey & t0.n_nationkey == t1.n_nationkey & t0.o_orderkey == t1.o_orderkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_quantity': t1.l_quantity, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'o_orderkey_0': t0.o_orderkey, 'ps_supplycost': t1.ps_supplycost}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -25,9 +25,9 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey, 'o_orderpriority': o_orderpriority}) JOIN(condition=t0.l_partkey == t1.ps_partkey & t0.l_suppkey == t1.ps_suppkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_quantity': t0.l_quantity, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey, 'ps_supplycost': t1.ps_supplycost}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'l_partkey': t0.l_partkey, 'l_quantity': t0.l_quantity, 'l_suppkey': t0.l_suppkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/common_prefix_ak.txt b/tests/test_plan_refsols/common_prefix_ak.txt index 024eece8f..f5667183e 100644 --- a/tests/test_plan_refsols/common_prefix_ak.txt +++ b/tests/test_plan_refsols/common_prefix_ak.txt @@ -3,7 +3,7 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_anything_n_name': ANYTHING(anything_n_name), 'n_rows': COUNT(), 'sum_n_rows': SUM(KEEP_IF(count_c_custkey, count_c_custkey != 0:numeric)), 'sum_sum_n_rows': SUM(sum_n_rows)}) AGGREGATE(keys={'c_custkey': c_custkey_0, 'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'count_c_custkey': COUNT(c_custkey), 'sum_n_rows': SUM(n_rows)}) JOIN(condition=t0.n_nationkey == t1.n_nationkey & t0.c_custkey == t1.c_custkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'c_custkey_0': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_rows': t1.n_rows}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -13,8 +13,8 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro PROJECT(columns={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'n_rows': KEEP_IF(count_o_orderkey, count_o_orderkey != 0:numeric)}) AGGREGATE(keys={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'o_orderkey': o_orderkey_0}, aggregations={'count_o_orderkey': COUNT(o_orderkey)}) JOIN(condition=t0.c_custkey == t1.c_custkey & t0.n_nationkey == t1.n_nationkey & t0.o_orderkey == t1.o_orderkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'o_orderkey_0': t0.o_orderkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) @@ -24,9 +24,9 @@ ROOT(columns=[('nation_name', anything_anything_n_name), ('n_machine_cust', n_ro FILTER(condition=YEAR(o_orderdate) == 1998:numeric & o_orderpriority == '2-HIGH':string, columns={'o_custkey': o_custkey, 'o_orderkey': o_orderkey}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey, 'o_orderpriority': o_orderpriority}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t0.o_orderkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/common_prefix_al.txt b/tests/test_plan_refsols/common_prefix_al.txt index 13a125136..3800ff817 100644 --- a/tests/test_plan_refsols/common_prefix_al.txt +++ b/tests/test_plan_refsols/common_prefix_al.txt @@ -6,7 +6,9 @@ ROOT(columns=[('cust_key', o_custkey), ('n_orders', DEFAULT_TO(anything_anything JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_rows': t0.n_rows, 'o_custkey': t1.o_custkey}) FILTER(condition=DEFAULT_TO(n_rows, 0:numeric) > RELAVG(args=[DEFAULT_TO(n_rows, 0:numeric)], partition=[c_nationkey], order=[]), columns={'c_custkey': c_custkey, 'n_rows': n_rows}) JOIN(condition=t0.c_custkey == t1.o_custkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'o_custkey': o_custkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey}) JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'o_custkey': t0.o_custkey}) diff --git a/tests/test_plan_refsols/common_prefix_am.txt b/tests/test_plan_refsols/common_prefix_am.txt index b7a89f156..dca8dcada 100644 --- a/tests/test_plan_refsols/common_prefix_am.txt +++ b/tests/test_plan_refsols/common_prefix_am.txt @@ -3,7 +3,9 @@ ROOT(columns=[('cust_key', c_custkey), ('n_orders', DEFAULT_TO(n_rows_1, 0:numer LIMIT(limit=10:numeric, columns={'c_custkey': c_custkey, 'n_rows': n_rows}, orderings=[(c_custkey):asc_first]) FILTER(condition=DEFAULT_TO(n_rows, 0:numeric) > RELAVG(args=[DEFAULT_TO(n_rows, 0:numeric)], partition=[c_nationkey], order=[]), columns={'c_custkey': c_custkey, 'n_rows': n_rows}) JOIN(condition=t0.c_custkey == t1.o_custkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'o_custkey': o_custkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey}) FILTER(condition=sum_n_rows != 0:numeric, columns={'n_rows': n_rows, 'o_custkey': o_custkey}) diff --git a/tests/test_plan_refsols/common_prefix_an.txt b/tests/test_plan_refsols/common_prefix_an.txt index e4dcc0ca1..dd4792278 100644 --- a/tests/test_plan_refsols/common_prefix_an.txt +++ b/tests/test_plan_refsols/common_prefix_an.txt @@ -4,7 +4,9 @@ ROOT(columns=[('cust_key', c_custkey), ('n_orders', DEFAULT_TO(KEEP_IF(count_any JOIN(condition=t0.c_custkey == t1.anything_o_custkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'anything_o_custkey': t1.anything_o_custkey, 'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows, 'n_rows_0': t0.n_rows}) LIMIT(limit=50:numeric, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey, 'n_rows': n_rows}, orderings=[(c_custkey):asc_first]) JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t0.c_custkey, 'c_nationkey': t0.c_nationkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'o_custkey': o_custkey}, aggregations={'n_rows': COUNT()}) JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'o_custkey': t0.o_custkey}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey, 'o_orderkey': o_orderkey}) diff --git a/tests/test_plan_refsols/correl_15.txt b/tests/test_plan_refsols/correl_15.txt index 4b184d5bf..cb74cb4aa 100644 --- a/tests/test_plan_refsols/correl_15.txt +++ b/tests/test_plan_refsols/correl_15.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', ndistinct_ps_suppkey)], orderings=[]) AGGREGATE(keys={}, aggregations={'ndistinct_ps_suppkey': NDISTINCT(ps_suppkey)}) JOIN(condition=t1.p_retailprice < t0.anything_avg_p_retailprice * 0.85:numeric & t1.p_retailprice < t0.ps_supplycost * 1.5:numeric & t1.p_retailprice < t0.sum_p_retailprice / t0.sum_expr & t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ps_suppkey': t0.ps_suppkey}) - JOIN(condition=t0.ps_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'anything_avg_p_retailprice': t0.anything_avg_p_retailprice, 'ps_partkey': t1.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t1.ps_supplycost, 'sum_expr': t0.sum_expr, 'sum_p_retailprice': t0.sum_p_retailprice}) + JOIN(condition=t0.ps_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'anything_avg_p_retailprice': t0.anything_avg_p_retailprice, 'ps_partkey': t1.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'ps_supplycost': t1.ps_supplycost, 'sum_expr': t0.sum_expr, 'sum_p_retailprice': t0.sum_p_retailprice}) AGGREGATE(keys={'ps_suppkey': ps_suppkey}, aggregations={'anything_avg_p_retailprice': ANYTHING(avg_p_retailprice), 'sum_expr': SUM(IFF(PRESENT(p_retailprice), 1:numeric, 0:numeric)), 'sum_p_retailprice': SUM(p_retailprice)}) JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'avg_p_retailprice': t0.avg_p_retailprice, 'p_retailprice': t1.p_retailprice, 'ps_suppkey': t1.ps_suppkey}) JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'avg_p_retailprice': t0.avg_p_retailprice, 's_suppkey': t1.s_suppkey}) diff --git a/tests/test_plan_refsols/correl_16.txt b/tests/test_plan_refsols/correl_16.txt index e9c9aec15..01d815095 100644 --- a/tests/test_plan_refsols/correl_16.txt +++ b/tests/test_plan_refsols/correl_16.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', ndistinct_s_suppkey)], orderings=[]) AGGREGATE(keys={}, aggregations={'ndistinct_s_suppkey': NDISTINCT(s_suppkey)}) FILTER(condition=s_nationkey == n_nationkey & PERCENTILE(args=[], partition=[c_nationkey, s_suppkey], order=[(c_acctbal):asc_last, (c_custkey):asc_last], n_buckets=10000) == tile, columns={'s_suppkey': s_suppkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey, 'n_nationkey': t0.n_nationkey, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey, 'tile': t0.tile}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey, 'n_nationkey': t0.n_nationkey, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey, 'tile': t0.tile}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey, 'tile': t0.tile}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey, 'tile': t0.tile}) PROJECT(columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey, 'tile': PERCENTILE(args=[], partition=[], order=[(s_acctbal):asc_last, (s_suppkey):asc_last], n_buckets=10000)}) diff --git a/tests/test_plan_refsols/correl_19.txt b/tests/test_plan_refsols/correl_19.txt index ede8c4337..29d3bd192 100644 --- a/tests/test_plan_refsols/correl_19.txt +++ b/tests/test_plan_refsols/correl_19.txt @@ -1,5 +1,5 @@ ROOT(columns=[('supplier_name', anything_s_name), ('n_super_cust', n_rows)], orderings=[(n_rows):desc_last], limit=5:numeric) AGGREGATE(keys={'s_suppkey': s_suppkey}, aggregations={'anything_s_name': ANYTHING(s_name), 'n_rows': COUNT()}) - JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_acctbal > t0.s_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'s_name': t0.s_name, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_acctbal > t0.s_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'s_name': t0.s_name, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_acctbal': s_acctbal, 's_name': s_name, 's_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/correl_2.txt b/tests/test_plan_refsols/correl_2.txt index bf42b8cd6..8a06f8937 100644 --- a/tests/test_plan_refsols/correl_2.txt +++ b/tests/test_plan_refsols/correl_2.txt @@ -1,6 +1,6 @@ ROOT(columns=[('name', n_name), ('n_selected_custs', DEFAULT_TO(n_rows, 0:numeric))], orderings=[(n_name):asc_first]) JOIN(condition=LOWER(SLICE(t0.r_name, None:unknown, 1:numeric, None:unknown)) == t1.expr_1 & t0.n_nationkey == t1.c_nationkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_rows': t1.n_rows}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) FILTER(condition=NOT(STARTSWITH(r_name, 'A':string)), columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/correl_25.txt b/tests/test_plan_refsols/correl_25.txt index ebf6e34bb..f570b928a 100644 --- a/tests/test_plan_refsols/correl_25.txt +++ b/tests/test_plan_refsols/correl_25.txt @@ -1,10 +1,10 @@ ROOT(columns=[('cust_region_name', anything_r_name), ('cust_region_key', r_regionkey), ('cust_nation_name', anything_n_name), ('cust_nation_key', n_nationkey), ('customer_name', anything_c_name), ('n_urgent_semi_domestic_rail_orders', ndistinct_l_orderkey)], orderings=[(ndistinct_l_orderkey):desc_last, (anything_c_name):asc_first], limit=5:numeric) AGGREGATE(keys={'c_custkey': c_custkey, 'n_nationkey': n_nationkey, 'r_regionkey': r_regionkey}, aggregations={'anything_c_name': ANYTHING(c_name), 'anything_n_name': ANYTHING(n_name), 'anything_r_name': ANYTHING(r_name), 'ndistinct_l_orderkey': NDISTINCT(l_orderkey)}) JOIN(condition=t1.n_name != t0.n_name & t0.l_suppkey == t1.s_suppkey & t1.r_name == t0.r_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'c_name': t0.c_name, 'l_orderkey': t0.l_orderkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'c_name': t0.c_name, 'l_orderkey': t1.l_orderkey, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t0.c_custkey, 'c_name': t0.c_name, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t1.c_custkey, 'c_name': t1.c_name, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'c_name': t0.c_name, 'l_orderkey': t1.l_orderkey, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'c_name': t0.c_name, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'c_name': t1.c_name, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_name': c_name, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/correl_26.txt b/tests/test_plan_refsols/correl_26.txt index 59d4c2efd..0a69ddba0 100644 --- a/tests/test_plan_refsols/correl_26.txt +++ b/tests/test_plan_refsols/correl_26.txt @@ -1,9 +1,9 @@ ROOT(columns=[('nation_name', anything_n_name), ('n_selected_purchases', n_rows)], orderings=[(anything_n_name):asc_first]) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'n_rows': COUNT()}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/correl_27.txt b/tests/test_plan_refsols/correl_27.txt index 05490b4f1..8dd453345 100644 --- a/tests/test_plan_refsols/correl_27.txt +++ b/tests/test_plan_refsols/correl_27.txt @@ -2,9 +2,9 @@ ROOT(columns=[('nation_name', anything_n_name), ('n_selected_purchases', n_rows) JOIN(condition=t0.anything_n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'anything_n_name': t0.anything_n_name, 'n_rows': t0.n_rows}) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'anything_n_regionkey': ANYTHING(n_regionkey), 'n_rows': COUNT()}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) FILTER(condition=YEAR(o_orderdate) == 1994:numeric & o_orderpriority == '1-URGENT':string, columns={'o_custkey': o_custkey, 'o_orderkey': o_orderkey}) diff --git a/tests/test_plan_refsols/correl_28.txt b/tests/test_plan_refsols/correl_28.txt index 862466ad1..1c3d0fbd4 100644 --- a/tests/test_plan_refsols/correl_28.txt +++ b/tests/test_plan_refsols/correl_28.txt @@ -2,9 +2,9 @@ ROOT(columns=[('nation_name', anything_n_name), ('n_selected_purchases', n_rows) JOIN(condition=t0.anything_n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'anything_n_name': t0.anything_n_name, 'n_rows': t0.n_rows}) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'anything_n_regionkey': ANYTHING(n_regionkey), 'n_rows': COUNT()}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) FILTER(condition=YEAR(o_orderdate) == 1994:numeric & o_orderpriority == '1-URGENT':string, columns={'o_custkey': o_custkey, 'o_orderkey': o_orderkey}) diff --git a/tests/test_plan_refsols/correl_29.txt b/tests/test_plan_refsols/correl_29.txt index 00a187e5f..17ea7e921 100644 --- a/tests/test_plan_refsols/correl_29.txt +++ b/tests/test_plan_refsols/correl_29.txt @@ -5,14 +5,14 @@ ROOT(columns=[('region_key', anything_anything_anything_n_regionkey), ('nation_n JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'anything_n_name': t0.anything_n_name, 'anything_n_regionkey': t0.anything_n_regionkey, 'c_acctbal': t1.c_acctbal, 'c_nationkey': t1.c_nationkey, 'n_rows': t0.n_rows}) FILTER(condition=ISIN(anything_n_regionkey, [1, 3]:array[unknown]), columns={'anything_n_name': anything_n_name, 'anything_n_regionkey': anything_n_regionkey, 'n_nationkey': n_nationkey, 'n_rows': n_rows}) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'anything_n_regionkey': ANYTHING(n_regionkey), 'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_acctbal > t0.avg_c_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_acctbal > t0.avg_c_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'avg_c_acctbal': t1.avg_c_acctbal, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) AGGREGATE(keys={'c_nationkey': c_nationkey}, aggregations={'avg_c_acctbal': AVG(c_acctbal)}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_nationkey': c_nationkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_nationkey': c_nationkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_nationkey': c_nationkey}) - JOIN(condition=t0.s_nationkey == t1.s_nationkey & t1.s_acctbal > t0.avg_s_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'s_nationkey': t0.s_nationkey}) + JOIN(condition=t0.s_nationkey == t1.s_nationkey & t1.s_acctbal > t0.avg_s_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'s_nationkey': t0.s_nationkey}) AGGREGATE(keys={'s_nationkey': s_nationkey}, aggregations={'avg_s_acctbal': AVG(s_acctbal)}) SCAN(table=tpch.SUPPLIER, columns={'s_acctbal': s_acctbal, 's_nationkey': s_nationkey}) SCAN(table=tpch.SUPPLIER, columns={'s_acctbal': s_acctbal, 's_nationkey': s_nationkey}) diff --git a/tests/test_plan_refsols/correl_3.txt b/tests/test_plan_refsols/correl_3.txt index 475b9a565..79e91271f 100644 --- a/tests/test_plan_refsols/correl_3.txt +++ b/tests/test_plan_refsols/correl_3.txt @@ -4,8 +4,8 @@ ROOT(columns=[('region_name', r_name), ('n_nations', DEFAULT_TO(n_rows, 0:numeri AGGREGATE(keys={'r_regionkey': r_regionkey}, aggregations={'n_rows': COUNT()}) FILTER(condition=r_regionkey == anything_n_regionkey, columns={'r_regionkey': r_regionkey}) AGGREGATE(keys={'n_nationkey': n_nationkey, 'r_regionkey': r_regionkey}, aggregations={'anything_n_regionkey': ANYTHING(n_regionkey)}) - JOIN(condition=SLICE(t1.c_comment, None:unknown, 2:numeric, None:unknown) == LOWER(SLICE(t0.r_name, None:unknown, 2:numeric, None:unknown)) & t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=SLICE(t1.c_comment, None:unknown, 2:numeric, None:unknown) == LOWER(SLICE(t0.r_name, None:unknown, 2:numeric, None:unknown)) & t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_comment': c_comment, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/correl_30.txt b/tests/test_plan_refsols/correl_30.txt index a9718cf64..ff2612644 100644 --- a/tests/test_plan_refsols/correl_30.txt +++ b/tests/test_plan_refsols/correl_30.txt @@ -1,7 +1,7 @@ ROOT(columns=[('region_name', anything_lower_r_name), ('nation_name', anything_n_name), ('n_above_avg_customers', n_rows), ('n_above_avg_suppliers', anything_n_rows)], orderings=[(anything_lower_r_name):asc_first, (anything_n_name):asc_first]) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_lower_r_name': ANYTHING(LOWER(r_name)), 'anything_n_name': ANYTHING(n_name), 'anything_n_rows': ANYTHING(n_rows), 'n_rows': COUNT()}) JOIN(condition=t0.n_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_rows': t1.n_rows, 'r_name': t0.r_name}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_acctbal > t0.avg_c_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_acctbal > t0.avg_c_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'avg_c_acctbal': t0.avg_c_acctbal, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t1.r_name}) JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'avg_c_acctbal': t1.avg_c_acctbal, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) @@ -11,7 +11,7 @@ ROOT(columns=[('region_name', anything_lower_r_name), ('nation_name', anything_n SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_nationkey': c_nationkey}) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.s_nationkey & t1.s_acctbal > t0.avg_s_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey & t1.s_acctbal > t0.avg_s_acctbal, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'avg_s_acctbal': t0.avg_s_acctbal, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'avg_s_acctbal': t1.avg_s_acctbal, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/correl_31.txt b/tests/test_plan_refsols/correl_31.txt index cd7f36ae7..c9f94c378 100644 --- a/tests/test_plan_refsols/correl_31.txt +++ b/tests/test_plan_refsols/correl_31.txt @@ -1,9 +1,9 @@ ROOT(columns=[('nation_name', anything_n_name), ('mean_rev', avg_revenue), ('median_rev', median_revenue)], orderings=[(anything_n_name):asc_first]) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'avg_revenue': AVG(l_extendedprice * 1:numeric - l_discount), 'median_revenue': MEDIAN(l_extendedprice * 1:numeric - l_discount)}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.s_nationkey == t0.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'EUROPE':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/correl_36.txt b/tests/test_plan_refsols/correl_36.txt index 888773da4..42e6bdb81 100644 --- a/tests/test_plan_refsols/correl_36.txt +++ b/tests/test_plan_refsols/correl_36.txt @@ -2,8 +2,8 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) AGGREGATE(keys={'key': key, 'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey}, aggregations={}) JOIN(condition=t0.l_partkey == t1.p_partkey & t0.p_type == t1.p_type, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'key': t0.key, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'key': t0.key, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'l_partkey': t1.l_partkey, 'p_type': t0.p_type}) - JOIN(condition=t0.c_custkey == t1.o_custkey & t0.o_orderpriority == t1.o_orderpriority, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'key': t0.o_orderkey, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'o_orderkey': t1.o_orderkey, 'p_type': t0.p_type}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'key': t0.key, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'l_partkey': t1.l_partkey, 'p_type': t0.p_type}) + JOIN(condition=t0.c_custkey == t1.o_custkey & t0.o_orderpriority == t1.o_orderpriority, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'key': t0.o_orderkey, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'o_orderkey': t1.o_orderkey, 'p_type': t0.p_type}) JOIN(condition=t0.c_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t0.c_custkey, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'o_orderkey': t0.o_orderkey, 'o_orderpriority': t0.o_orderpriority, 'p_type': t0.p_type}) JOIN(condition=t0.o_custkey == t1.c_custkey & t1.c_nationkey == t0.s_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'c_nationkey': t1.c_nationkey, 'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'o_orderkey': t0.o_orderkey, 'o_orderpriority': t0.o_orderpriority, 'p_type': t0.p_type}) JOIN(condition=t0.l_orderkey == t1.o_orderkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'o_custkey': t1.o_custkey, 'o_orderkey': t1.o_orderkey, 'o_orderpriority': t1.o_orderpriority, 'p_type': t0.p_type, 's_nationkey': t0.s_nationkey}) diff --git a/tests/test_plan_refsols/correl_4.txt b/tests/test_plan_refsols/correl_4.txt index 149cb725a..27fc8653e 100644 --- a/tests/test_plan_refsols/correl_4.txt +++ b/tests/test_plan_refsols/correl_4.txt @@ -1,7 +1,7 @@ ROOT(columns=[('name', n_name)], orderings=[(n_name):asc_first]) JOIN(condition=t0.n_nationkey == t1.n_nationkey, type=ANTI, columns={'n_name': t0.n_name}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey}) - JOIN(condition=t1.c_acctbal <= t0.min_c_acctbal + 5.0:numeric & t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t0.n_nationkey}) + JOIN(condition=t1.c_acctbal <= t0.min_c_acctbal + 5.0:numeric & t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t0.n_nationkey}) JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'min_c_acctbal': t0.min_c_acctbal, 'n_nationkey': t1.n_nationkey}) AGGREGATE(keys={}, aggregations={'min_c_acctbal': MIN(c_acctbal)}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal}) diff --git a/tests/test_plan_refsols/correl_5.txt b/tests/test_plan_refsols/correl_5.txt index 24feb1b17..9d6f0fb99 100644 --- a/tests/test_plan_refsols/correl_5.txt +++ b/tests/test_plan_refsols/correl_5.txt @@ -1,7 +1,7 @@ ROOT(columns=[('name', anything_r_name)], orderings=[(anything_r_name):asc_first]) AGGREGATE(keys={'r_regionkey': r_regionkey}, aggregations={'anything_r_name': ANYTHING(r_name)}) - JOIN(condition=t1.s_acctbal <= t0.min_s_acctbal + 4.0:numeric & t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'min_s_acctbal': t0.min_s_acctbal, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t1.s_acctbal <= t0.min_s_acctbal + 4.0:numeric & t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'min_s_acctbal': t0.min_s_acctbal, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'min_s_acctbal': t0.min_s_acctbal, 'r_name': t1.r_name, 'r_regionkey': t1.r_regionkey}) AGGREGATE(keys={}, aggregations={'min_s_acctbal': MIN(s_acctbal)}) SCAN(table=tpch.SUPPLIER, columns={'s_acctbal': s_acctbal}) diff --git a/tests/test_plan_refsols/country_x_year_analysis.txt b/tests/test_plan_refsols/country_x_year_analysis.txt index ccc44a169..53c3394b9 100644 --- a/tests/test_plan_refsols/country_x_year_analysis.txt +++ b/tests/test_plan_refsols/country_x_year_analysis.txt @@ -4,7 +4,7 @@ ROOT(columns=[('country_name', co_name), ('start_of_year', start_of_year), ('n_p SCAN(table=main.COUNTRIES, columns={'co_name': co_name}) AGGREGATE(keys={'co_name': co_name, 'start_of_year': DATETIME(ca_dt, 'start of year':string)}, aggregations={'sum_n_rows': SUM(n_rows)}) JOIN(condition=t0.co_name == t1.co_name & t0.ca_dt == t1.ca_dt, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'ca_dt': t0.ca_dt, 'co_name': t0.co_name, 'n_rows': t1.n_rows}) - JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t1.ca_dt, 'co_name': t0.co_name}) + JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t1.ca_dt, 'co_name': t0.co_name}) JOIN(condition=True:bool, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'co_name': t0.co_name, 'pr_release': t1.pr_release}) FILTER(condition=NOT(CONTAINS(co_name, 'C':string)), columns={'co_name': co_name}) SCAN(table=main.COUNTRIES, columns={'co_name': co_name}) @@ -14,8 +14,8 @@ ROOT(columns=[('country_name', co_name), ('start_of_year', start_of_year), ('n_p AGGREGATE(keys={'ca_dt': ca_dt, 'co_name': co_name}, aggregations={'n_rows': COUNT()}) JOIN(condition=t0.de_purchase_country_id == t1.co_id & t1.co_name == t0.co_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt, 'co_name': t0.co_name}) JOIN(condition=t0.de_product_id == t1.pr_id, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt, 'co_name': t0.co_name, 'de_purchase_country_id': t0.de_purchase_country_id}) - JOIN(condition=t0.ca_dt == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t0.ca_dt, 'co_name': t0.co_name, 'de_product_id': t1.de_product_id, 'de_purchase_country_id': t1.de_purchase_country_id}) - JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t1.ca_dt, 'co_name': t0.co_name}) + JOIN(condition=t0.ca_dt == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt, 'co_name': t0.co_name, 'de_product_id': t1.de_product_id, 'de_purchase_country_id': t1.de_purchase_country_id}) + JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t1.ca_dt, 'co_name': t0.co_name}) JOIN(condition=True:bool, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'co_name': t0.co_name, 'pr_release': t1.pr_release}) FILTER(condition=NOT(CONTAINS(co_name, 'C':string)), columns={'co_name': co_name}) SCAN(table=main.COUNTRIES, columns={'co_name': co_name}) diff --git a/tests/test_plan_refsols/country_x_year_combos.txt b/tests/test_plan_refsols/country_x_year_combos.txt index 2e9e5a13d..18bf04423 100644 --- a/tests/test_plan_refsols/country_x_year_combos.txt +++ b/tests/test_plan_refsols/country_x_year_combos.txt @@ -3,7 +3,7 @@ ROOT(columns=[('country_name', co_name), ('start_of_year', start_of_year)], orde FILTER(condition=NOT(CONTAINS(co_name, 'C':string)), columns={'co_name': co_name}) SCAN(table=main.COUNTRIES, columns={'co_name': co_name}) AGGREGATE(keys={'co_name': co_name, 'start_of_year': DATETIME(ca_dt, 'start of year':string)}, aggregations={}) - JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t1.ca_dt, 'co_name': t0.co_name}) + JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t1.ca_dt, 'co_name': t0.co_name}) JOIN(condition=True:bool, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'co_name': t0.co_name, 'pr_release': t1.pr_release}) FILTER(condition=NOT(CONTAINS(co_name, 'C':string)), columns={'co_name': co_name}) SCAN(table=main.COUNTRIES, columns={'co_name': co_name}) diff --git a/tests/test_plan_refsols/cryptbank_general_join_01_raw.txt b/tests/test_plan_refsols/cryptbank_general_join_01_raw.txt index 641e01b1c..a76d2bf1c 100644 --- a/tests/test_plan_refsols/cryptbank_general_join_01_raw.txt +++ b/tests/test_plan_refsols/cryptbank_general_join_01_raw.txt @@ -5,7 +5,7 @@ ROOT(columns=[('branch_key', b_key), ('n_local_cust', n_rows), ('n_local_cust_lo SCAN(table=CRBNK.BRANCHES, columns={'b_addr': b_addr, 'b_key': b_key}) SCAN(table=CRBNK.CUSTOMERS, columns={'c_addr': c_addr, 'c_key': c_key}) AGGREGATE(keys={'b_key': b_key, 'unmask_c_key': UNMASK::((42 - ([c_key])))}, aggregations={'n_rows': COUNT()}) - JOIN(condition=UNMASK::((42 - ([t0.c_key]))) == t1.a_custkey & t1.a_branchkey == t0.b_key, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'b_key': t0.b_key, 'c_key': t0.c_key}) + JOIN(condition=UNMASK::((42 - ([t0.c_key]))) == t1.a_custkey & t1.a_branchkey == t0.b_key, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'b_key': t0.b_key, 'c_key': t0.c_key}) JOIN(condition=SLICE(t0.b_addr, -8:numeric, -6:numeric, None:unknown) == SLICE(UNMASK::(SUBSTRING([t1.c_addr], -1) || SUBSTRING([t1.c_addr], 1, LENGTH([t1.c_addr]) - 1)), -8:numeric, -6:numeric, None:unknown), type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'b_key': t0.b_key, 'c_key': t1.c_key}) SCAN(table=CRBNK.BRANCHES, columns={'b_addr': b_addr, 'b_key': b_key}) SCAN(table=CRBNK.CUSTOMERS, columns={'c_addr': c_addr, 'c_key': c_key}) diff --git a/tests/test_plan_refsols/cryptbank_general_join_01_rewrite.txt b/tests/test_plan_refsols/cryptbank_general_join_01_rewrite.txt index 641e01b1c..a76d2bf1c 100644 --- a/tests/test_plan_refsols/cryptbank_general_join_01_rewrite.txt +++ b/tests/test_plan_refsols/cryptbank_general_join_01_rewrite.txt @@ -5,7 +5,7 @@ ROOT(columns=[('branch_key', b_key), ('n_local_cust', n_rows), ('n_local_cust_lo SCAN(table=CRBNK.BRANCHES, columns={'b_addr': b_addr, 'b_key': b_key}) SCAN(table=CRBNK.CUSTOMERS, columns={'c_addr': c_addr, 'c_key': c_key}) AGGREGATE(keys={'b_key': b_key, 'unmask_c_key': UNMASK::((42 - ([c_key])))}, aggregations={'n_rows': COUNT()}) - JOIN(condition=UNMASK::((42 - ([t0.c_key]))) == t1.a_custkey & t1.a_branchkey == t0.b_key, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'b_key': t0.b_key, 'c_key': t0.c_key}) + JOIN(condition=UNMASK::((42 - ([t0.c_key]))) == t1.a_custkey & t1.a_branchkey == t0.b_key, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'b_key': t0.b_key, 'c_key': t0.c_key}) JOIN(condition=SLICE(t0.b_addr, -8:numeric, -6:numeric, None:unknown) == SLICE(UNMASK::(SUBSTRING([t1.c_addr], -1) || SUBSTRING([t1.c_addr], 1, LENGTH([t1.c_addr]) - 1)), -8:numeric, -6:numeric, None:unknown), type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'b_key': t0.b_key, 'c_key': t1.c_key}) SCAN(table=CRBNK.BRANCHES, columns={'b_addr': b_addr, 'b_key': b_key}) SCAN(table=CRBNK.CUSTOMERS, columns={'c_addr': c_addr, 'c_key': c_key}) diff --git a/tests/test_plan_refsols/deep_best_analysis.txt b/tests/test_plan_refsols/deep_best_analysis.txt index a9a88b56e..d1bde25bf 100644 --- a/tests/test_plan_refsols/deep_best_analysis.txt +++ b/tests/test_plan_refsols/deep_best_analysis.txt @@ -1,22 +1,26 @@ ROOT(columns=[('r_name', r_name), ('n_name', n_name), ('c_key', key_5), ('c_bal', c_acctbal), ('cr_bal', account_balance_13), ('s_key', s_suppkey), ('p_key', ps_partkey), ('p_qty', ps_availqty), ('cg_key', c_custkey)], orderings=[(n_name):asc_first], limit=10:numeric) JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'account_balance_13': t0.account_balance_13, 'c_acctbal': t0.c_acctbal, 'c_custkey': t1.c_custkey, 'key_5': t0.c_custkey, 'n_name': t0.n_name, 'ps_availqty': t0.ps_availqty, 'ps_partkey': t0.ps_partkey, 'r_name': t0.r_name, 's_suppkey': t0.s_suppkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey & t0.n_nationkey == t1.n_nationkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'account_balance_13': t0.account_balance_13, 'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'ps_availqty': t1.ps_availqty, 'ps_partkey': t1.ps_partkey, 'r_name': t0.r_name, 's_suppkey': t1.s_suppkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey & t0.n_nationkey == t1.n_nationkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'account_balance_13': t1.c_acctbal, 'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.r_regionkey & t0.n_nationkey == t1.n_nationkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'account_balance_13': t0.account_balance_13, 'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'ps_availqty': t1.ps_availqty, 'ps_partkey': t1.ps_partkey, 'r_name': t0.r_name, 's_suppkey': t1.s_suppkey}) + JOIN(condition=t0.r_regionkey == t1.r_regionkey & t0.n_nationkey == t1.n_nationkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'account_balance_13': t1.c_acctbal, 'c_acctbal': t0.c_acctbal, 'c_custkey': t0.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=RANKING(args=[], partition=[c_nationkey], order=[(c_acctbal):desc_first, (c_custkey):asc_last], allow_ties=False) == 1:numeric, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) - FILTER(condition=RANKING(args=[], partition=[n_regionkey], order=[(c_acctbal):desc_first, (c_custkey):asc_last], allow_ties=False) == 1:numeric, columns={'c_acctbal': c_acctbal, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey}) - SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) - SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) - FILTER(condition=n_nationkey == s_nationkey & RANKING(args=[], partition=[n_regionkey], order=[(ps_availqty):desc_first, (s_suppkey):asc_last], allow_ties=False) == 1:numeric, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey, 'ps_availqty': ps_availqty, 'ps_partkey': ps_partkey, 's_suppkey': s_suppkey}) - FILTER(condition=RANKING(args=[], partition=[n_regionkey], order=[(ps_availqty):desc_first, (ps_partkey):asc_last], allow_ties=False) == 1:numeric, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey, 'ps_availqty': ps_availqty, 'ps_partkey': ps_partkey, 's_nationkey': s_nationkey, 's_suppkey': s_suppkey}) - JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'ps_availqty': t1.ps_availqty, 'ps_partkey': t1.ps_partkey, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey}) - JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 's_nationkey': t1.s_nationkey, 's_suppkey': t1.s_suppkey}) + FILTER(condition=RANKING(args=[], partition=[n_regionkey], order=[(c_acctbal):desc_first, (c_custkey):asc_last], allow_ties=False) == 1:numeric, columns={'c_acctbal': c_acctbal, 'n_nationkey': n_nationkey, 'r_regionkey': r_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_regionkey': t0.r_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) + FILTER(condition=n_nationkey == s_nationkey & RANKING(args=[], partition=[n_regionkey], order=[(ps_availqty):desc_first, (s_suppkey):asc_last], allow_ties=False) == 1:numeric, columns={'n_nationkey': n_nationkey, 'ps_availqty': ps_availqty, 'ps_partkey': ps_partkey, 'r_regionkey': r_regionkey, 's_suppkey': s_suppkey}) + FILTER(condition=RANKING(args=[], partition=[n_regionkey], order=[(ps_availqty):desc_first, (ps_partkey):asc_last], allow_ties=False) == 1:numeric, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey, 'ps_availqty': ps_availqty, 'ps_partkey': ps_partkey, 'r_regionkey': r_regionkey, 's_nationkey': s_nationkey, 's_suppkey': s_suppkey}) + JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'ps_availqty': t1.ps_availqty, 'ps_partkey': t1.ps_partkey, 'r_regionkey': t0.r_regionkey, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'n_regionkey': t0.n_regionkey, 'r_regionkey': t0.r_regionkey, 's_nationkey': t1.s_nationkey, 's_suppkey': t1.s_suppkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_regionkey': t0.r_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.PARTSUPP, columns={'ps_availqty': ps_availqty, 'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey}) FILTER(condition=RANKING(args=[], partition=[], order=[(c_acctbal):desc_first, (c_custkey):asc_last], allow_ties=False) == 1:numeric, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/double_cross.txt b/tests/test_plan_refsols/double_cross.txt index b714f74e3..c0fcd9e51 100644 --- a/tests/test_plan_refsols/double_cross.txt +++ b/tests/test_plan_refsols/double_cross.txt @@ -1,6 +1,6 @@ ROOT(columns=[('wk', ord_wk), ('n_lines', n_rows), ('n_orders', anything_n_rows), ('lpo', ROUND(RELSUM(args=[n_rows], partition=[], order=[(line_wk):asc_last], cumulative=True) / RELSUM(args=[anything_n_rows], partition=[], order=[(ord_wk):asc_last], cumulative=True), 4:numeric))], orderings=[(ord_wk):asc_first]) AGGREGATE(keys={'line_wk': DATEDIFF('week':string, min_o_orderdate, l_receiptdate), 'ord_wk': ord_wk}, aggregations={'anything_n_rows': ANYTHING(n_rows), 'n_rows': COUNT()}) - JOIN(condition=DATEDIFF('week':string, t0.min_o_orderdate, t1.l_receiptdate) < 10:numeric & t0.ord_wk == DATEDIFF('week':string, t0.min_o_orderdate, t1.l_receiptdate), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_receiptdate': t1.l_receiptdate, 'min_o_orderdate': t0.min_o_orderdate, 'n_rows': t0.n_rows, 'ord_wk': t0.ord_wk}) + JOIN(condition=DATEDIFF('week':string, t0.min_o_orderdate, t1.l_receiptdate) < 10:numeric & t0.ord_wk == DATEDIFF('week':string, t0.min_o_orderdate, t1.l_receiptdate), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_receiptdate': t1.l_receiptdate, 'min_o_orderdate': t0.min_o_orderdate, 'n_rows': t0.n_rows, 'ord_wk': t0.ord_wk}) JOIN(condition=True:bool, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'min_o_orderdate': t1.min_o_orderdate, 'n_rows': t0.n_rows, 'ord_wk': t0.ord_wk}) AGGREGATE(keys={'ord_wk': DATEDIFF('week':string, min_o_orderdate, o_orderdate)}, aggregations={'n_rows': COUNT()}) JOIN(condition=DATEDIFF('week':string, t0.min_o_orderdate, t1.o_orderdate) < 10:numeric, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'min_o_orderdate': t0.min_o_orderdate, 'o_orderdate': t1.o_orderdate}) diff --git a/tests/test_plan_refsols/epoch_event_gap_per_era.txt b/tests/test_plan_refsols/epoch_event_gap_per_era.txt index e1ca5b4c4..424a0a448 100644 --- a/tests/test_plan_refsols/epoch_event_gap_per_era.txt +++ b/tests/test_plan_refsols/epoch_event_gap_per_era.txt @@ -2,6 +2,6 @@ ROOT(columns=[('era_name', er_name), ('avg_event_gap', avg_day_gap)], orderings= AGGREGATE(keys={'er_name': er_name}, aggregations={'anything_er_start_year': ANYTHING(er_start_year), 'avg_day_gap': AVG(day_gap)}) FILTER(condition=er_start_year <= YEAR(ev_dt) & YEAR(ev_dt) < er_end_year, columns={'day_gap': day_gap, 'er_name': er_name, 'er_start_year': er_start_year}) PROJECT(columns={'day_gap': DATEDIFF('days':string, PREV(args=[ev_dt], partition=[er_name, er_name], order=[(ev_dt):asc_last]), ev_dt), 'er_end_year': er_end_year, 'er_name': er_name, 'er_start_year': er_start_year, 'ev_dt': ev_dt}) - JOIN(condition=t0.er_start_year <= YEAR(t1.ev_dt) & YEAR(t1.ev_dt) < t0.er_end_year, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'er_end_year': t0.er_end_year, 'er_name': t0.er_name, 'er_start_year': t0.er_start_year, 'ev_dt': t1.ev_dt}) + JOIN(condition=t0.er_start_year <= YEAR(t1.ev_dt) & YEAR(t1.ev_dt) < t0.er_end_year, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'er_end_year': t0.er_end_year, 'er_name': t0.er_name, 'er_start_year': t0.er_start_year, 'ev_dt': t1.ev_dt}) SCAN(table=ERAS, columns={'er_end_year': er_end_year, 'er_name': er_name, 'er_start_year': er_start_year}) SCAN(table=EVENTS, columns={'ev_dt': ev_dt}) diff --git a/tests/test_plan_refsols/epoch_events_per_season.txt b/tests/test_plan_refsols/epoch_events_per_season.txt index 3dbc17b63..def1b76e9 100644 --- a/tests/test_plan_refsols/epoch_events_per_season.txt +++ b/tests/test_plan_refsols/epoch_events_per_season.txt @@ -1,5 +1,5 @@ ROOT(columns=[('season_name', s_name), ('n_events', n_rows)], orderings=[(n_rows):desc_last, (s_name):asc_first]) AGGREGATE(keys={'s_name': s_name}, aggregations={'n_rows': COUNT()}) - JOIN(condition=MONTH(t1.ev_dt) == t0.s_month1 | MONTH(t1.ev_dt) == t0.s_month2 | MONTH(t1.ev_dt) == t0.s_month3, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'s_name': t0.s_name}) + JOIN(condition=MONTH(t1.ev_dt) == t0.s_month1 | MONTH(t1.ev_dt) == t0.s_month2 | MONTH(t1.ev_dt) == t0.s_month3, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'s_name': t0.s_name}) SCAN(table=SEASONS, columns={'s_month1': s_month1, 's_month2': s_month2, 's_month3': s_month3, 's_name': s_name}) SCAN(table=EVENTS, columns={'ev_dt': ev_dt}) diff --git a/tests/test_plan_refsols/epoch_first_event_per_era.txt b/tests/test_plan_refsols/epoch_first_event_per_era.txt index a4a1793d0..d0c1ca629 100644 --- a/tests/test_plan_refsols/epoch_first_event_per_era.txt +++ b/tests/test_plan_refsols/epoch_first_event_per_era.txt @@ -1,5 +1,5 @@ ROOT(columns=[('era_name', er_name), ('event_name', ev_name)], orderings=[(er_start_year):asc_first]) FILTER(condition=RANKING(args=[], partition=[er_name], order=[(ev_dt):asc_last], allow_ties=False) == 1:numeric, columns={'er_name': er_name, 'er_start_year': er_start_year, 'ev_name': ev_name}) - JOIN(condition=t0.er_start_year <= YEAR(t1.ev_dt) & YEAR(t1.ev_dt) < t0.er_end_year, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'er_name': t0.er_name, 'er_start_year': t0.er_start_year, 'ev_dt': t1.ev_dt, 'ev_name': t1.ev_name}) + JOIN(condition=t0.er_start_year <= YEAR(t1.ev_dt) & YEAR(t1.ev_dt) < t0.er_end_year, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'er_name': t0.er_name, 'er_start_year': t0.er_start_year, 'ev_dt': t1.ev_dt, 'ev_name': t1.ev_name}) SCAN(table=ERAS, columns={'er_end_year': er_end_year, 'er_name': er_name, 'er_start_year': er_start_year}) SCAN(table=EVENTS, columns={'ev_dt': ev_dt, 'ev_name': ev_name}) diff --git a/tests/test_plan_refsols/epoch_intra_season_searches.txt b/tests/test_plan_refsols/epoch_intra_season_searches.txt index 81911c559..d939a6a42 100644 --- a/tests/test_plan_refsols/epoch_intra_season_searches.txt +++ b/tests/test_plan_refsols/epoch_intra_season_searches.txt @@ -3,12 +3,12 @@ ROOT(columns=[('season_name', s_name), ('pct_season_searches', ROUND(100.0:numer AGGREGATE(keys={'s_name': s_name}, aggregations={'n_rows': COUNT(), 'sum_is_intra_season': SUM(DEFAULT_TO(KEEP_IF(count_search_id, count_search_id != 0:numeric), 0:numeric) > 0:numeric)}) AGGREGATE(keys={'s_name': s_name, 'search_id': search_id_0}, aggregations={'count_search_id': COUNT(search_id)}) JOIN(condition=t0.s_name == t1.s_name & t0.search_id == t1.search_id, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'s_name': t0.s_name, 'search_id': t1.search_id, 'search_id_0': t0.search_id}) - JOIN(condition=MONTH(t1.search_ts) == t0.s_month1 | MONTH(t1.search_ts) == t0.s_month2 | MONTH(t1.search_ts) == t0.s_month3, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'s_name': t0.s_name, 'search_id': t1.search_id}) + JOIN(condition=MONTH(t1.search_ts) == t0.s_month1 | MONTH(t1.search_ts) == t0.s_month2 | MONTH(t1.search_ts) == t0.s_month3, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'s_name': t0.s_name, 'search_id': t1.search_id}) SCAN(table=SEASONS, columns={'s_month1': s_month1, 's_month2': s_month2, 's_month3': s_month3, 's_name': s_name}) SCAN(table=SEARCHES, columns={'search_id': search_id, 'search_ts': search_ts}) JOIN(condition=t1.s_name == t0.s_name & MONTH(t0.ev_dt) == t1.s_month1 | MONTH(t0.ev_dt) == t1.s_month2 | MONTH(t0.ev_dt) == t1.s_month3, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'s_name': t0.s_name, 'search_id': t0.search_id}) JOIN(condition=CONTAINS(LOWER(t0.search_string), LOWER(t1.ev_name)), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ev_dt': t1.ev_dt, 's_name': t0.s_name, 'search_id': t0.search_id}) - JOIN(condition=MONTH(t1.search_ts) == t0.s_month1 | MONTH(t1.search_ts) == t0.s_month2 | MONTH(t1.search_ts) == t0.s_month3, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'s_name': t0.s_name, 'search_id': t1.search_id, 'search_string': t1.search_string}) + JOIN(condition=MONTH(t1.search_ts) == t0.s_month1 | MONTH(t1.search_ts) == t0.s_month2 | MONTH(t1.search_ts) == t0.s_month3, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'s_name': t0.s_name, 'search_id': t1.search_id, 'search_string': t1.search_string}) SCAN(table=SEASONS, columns={'s_month1': s_month1, 's_month2': s_month2, 's_month3': s_month3, 's_name': s_name}) SCAN(table=SEARCHES, columns={'search_id': search_id, 'search_string': search_string, 'search_ts': search_ts}) SCAN(table=EVENTS, columns={'ev_dt': ev_dt, 'ev_name': ev_name}) @@ -16,7 +16,7 @@ ROOT(columns=[('season_name', s_name), ('pct_season_searches', ROUND(100.0:numer AGGREGATE(keys={'s_name': s_name}, aggregations={'n_rows': COUNT(), 'sum_is_intra_season': SUM(name_9 == s_name)}) JOIN(condition=MONTH(t0.search_ts) == t1.s_month1 | MONTH(t0.search_ts) == t1.s_month2 | MONTH(t0.search_ts) == t1.s_month3, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'name_9': t1.s_name, 's_name': t0.s_name}) JOIN(condition=CONTAINS(LOWER(t1.search_string), LOWER(t0.ev_name)), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'s_name': t0.s_name, 'search_ts': t1.search_ts}) - JOIN(condition=MONTH(t1.ev_dt) == t0.s_month1 | MONTH(t1.ev_dt) == t0.s_month2 | MONTH(t1.ev_dt) == t0.s_month3, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ev_name': t1.ev_name, 's_name': t0.s_name}) + JOIN(condition=MONTH(t1.ev_dt) == t0.s_month1 | MONTH(t1.ev_dt) == t0.s_month2 | MONTH(t1.ev_dt) == t0.s_month3, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ev_name': t1.ev_name, 's_name': t0.s_name}) SCAN(table=SEASONS, columns={'s_month1': s_month1, 's_month2': s_month2, 's_month3': s_month3, 's_name': s_name}) SCAN(table=EVENTS, columns={'ev_dt': ev_dt, 'ev_name': ev_name}) SCAN(table=SEARCHES, columns={'search_string': search_string, 'search_ts': search_ts}) diff --git a/tests/test_plan_refsols/epoch_overlapping_event_search_other_users_per_user.txt b/tests/test_plan_refsols/epoch_overlapping_event_search_other_users_per_user.txt index fe613a411..431f9d14f 100644 --- a/tests/test_plan_refsols/epoch_overlapping_event_search_other_users_per_user.txt +++ b/tests/test_plan_refsols/epoch_overlapping_event_search_other_users_per_user.txt @@ -3,7 +3,7 @@ ROOT(columns=[('user_name', anything_user_name), ('n_other_users', ndistinct_use JOIN(condition=t1.user_name != t0.user_name & t0.search_user_id == t1.user_id, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'user_id': t0.user_id, 'user_id_11': t1.user_id, 'user_name': t0.user_name}) JOIN(condition=CONTAINS(LOWER(t1.search_string), LOWER(t0.ev_name)), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'search_user_id': t1.search_user_id, 'user_id': t0.user_id, 'user_name': t0.user_name}) JOIN(condition=CONTAINS(LOWER(t0.search_string), LOWER(t1.ev_name)), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ev_name': t1.ev_name, 'user_id': t0.user_id, 'user_name': t0.user_name}) - JOIN(condition=t0.user_id == t1.search_user_id, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'search_string': t1.search_string, 'user_id': t0.user_id, 'user_name': t0.user_name}) + JOIN(condition=t0.user_id == t1.search_user_id, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'search_string': t1.search_string, 'user_id': t0.user_id, 'user_name': t0.user_name}) SCAN(table=USERS, columns={'user_id': user_id, 'user_name': user_name}) SCAN(table=SEARCHES, columns={'search_string': search_string, 'search_user_id': search_user_id}) SCAN(table=EVENTS, columns={'ev_name': ev_name}) diff --git a/tests/test_plan_refsols/epoch_overlapping_event_searches_per_user.txt b/tests/test_plan_refsols/epoch_overlapping_event_searches_per_user.txt index 589bbc2c0..dcf0d2718 100644 --- a/tests/test_plan_refsols/epoch_overlapping_event_searches_per_user.txt +++ b/tests/test_plan_refsols/epoch_overlapping_event_searches_per_user.txt @@ -5,7 +5,7 @@ ROOT(columns=[('user_name', anything_anything_user_name), ('n_searches', n_rows) JOIN(condition=t1.user_name != t0.user_name & t0.user_id_8 == t1.user_id, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'search_id': t0.search_id, 'search_user_id': t0.search_user_id, 'user_id': t0.user_id, 'user_name': t0.user_name}) JOIN(condition=CONTAINS(LOWER(t1.search_string), LOWER(t0.ev_name)), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'search_id': t0.search_id, 'search_user_id': t0.search_user_id, 'user_id': t0.user_id, 'user_id_8': t1.search_user_id, 'user_name': t0.user_name}) JOIN(condition=CONTAINS(LOWER(t0.search_string), LOWER(t1.ev_name)), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ev_name': t1.ev_name, 'search_id': t0.search_id, 'search_user_id': t0.search_user_id, 'user_id': t0.user_id, 'user_name': t0.user_name}) - JOIN(condition=t0.user_id == t1.search_user_id, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'search_id': t1.search_id, 'search_string': t1.search_string, 'search_user_id': t1.search_user_id, 'user_id': t0.user_id, 'user_name': t0.user_name}) + JOIN(condition=t0.user_id == t1.search_user_id, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'search_id': t1.search_id, 'search_string': t1.search_string, 'search_user_id': t1.search_user_id, 'user_id': t0.user_id, 'user_name': t0.user_name}) SCAN(table=USERS, columns={'user_id': user_id, 'user_name': user_name}) SCAN(table=SEARCHES, columns={'search_id': search_id, 'search_string': search_string, 'search_user_id': search_user_id}) SCAN(table=EVENTS, columns={'ev_name': ev_name}) diff --git a/tests/test_plan_refsols/epoch_pct_searches_per_tod.txt b/tests/test_plan_refsols/epoch_pct_searches_per_tod.txt index 25e99085d..119f6f119 100644 --- a/tests/test_plan_refsols/epoch_pct_searches_per_tod.txt +++ b/tests/test_plan_refsols/epoch_pct_searches_per_tod.txt @@ -1,5 +1,5 @@ ROOT(columns=[('tod', t_name), ('pct_searches', ROUND(100.0:numeric * n_rows / RELSUM(args=[n_rows], partition=[], order=[]), 2:numeric))], orderings=[(anything_t_start_hour):asc_first]) AGGREGATE(keys={'t_name': t_name}, aggregations={'anything_t_start_hour': ANYTHING(t_start_hour), 'n_rows': COUNT()}) - JOIN(condition=t0.t_start_hour <= HOUR(t1.search_ts) & HOUR(t1.search_ts) < t0.t_end_hour, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'t_name': t0.t_name, 't_start_hour': t0.t_start_hour}) + JOIN(condition=t0.t_start_hour <= HOUR(t1.search_ts) & HOUR(t1.search_ts) < t0.t_end_hour, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'t_name': t0.t_name, 't_start_hour': t0.t_start_hour}) SCAN(table=TIMES, columns={'t_end_hour': t_end_hour, 't_name': t_name, 't_start_hour': t_start_hour}) SCAN(table=SEARCHES, columns={'search_ts': search_ts}) diff --git a/tests/test_plan_refsols/epoch_search_results_by_tod.txt b/tests/test_plan_refsols/epoch_search_results_by_tod.txt index 67a223a35..966679d8a 100644 --- a/tests/test_plan_refsols/epoch_search_results_by_tod.txt +++ b/tests/test_plan_refsols/epoch_search_results_by_tod.txt @@ -1,5 +1,5 @@ ROOT(columns=[('tod', t_name), ('pct_searches', ROUND(100.0:numeric * n_rows / RELSUM(args=[n_rows], partition=[], order=[]), 2:numeric)), ('avg_results', ROUND(avg_search_num_results, 2:numeric))], orderings=[(anything_t_start_hour):asc_first]) AGGREGATE(keys={'t_name': t_name}, aggregations={'anything_t_start_hour': ANYTHING(t_start_hour), 'avg_search_num_results': AVG(search_num_results), 'n_rows': COUNT()}) - JOIN(condition=t0.t_start_hour <= HOUR(t1.search_ts) & HOUR(t1.search_ts) < t0.t_end_hour, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'search_num_results': t1.search_num_results, 't_name': t0.t_name, 't_start_hour': t0.t_start_hour}) + JOIN(condition=t0.t_start_hour <= HOUR(t1.search_ts) & HOUR(t1.search_ts) < t0.t_end_hour, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'search_num_results': t1.search_num_results, 't_name': t0.t_name, 't_start_hour': t0.t_start_hour}) SCAN(table=TIMES, columns={'t_end_hour': t_end_hour, 't_name': t_name, 't_start_hour': t_start_hour}) SCAN(table=SEARCHES, columns={'search_num_results': search_num_results, 'search_ts': search_ts}) diff --git a/tests/test_plan_refsols/fsi_best_account_customers_per_state_raw.txt b/tests/test_plan_refsols/fsi_best_account_customers_per_state_raw.txt index 247fcd01b..9bf9b407e 100644 --- a/tests/test_plan_refsols/fsi_best_account_customers_per_state_raw.txt +++ b/tests/test_plan_refsols/fsi_best_account_customers_per_state_raw.txt @@ -1,6 +1,6 @@ ROOT(columns=[('state', unmask_state), ('balance', balance), ('first_name', UNMASK::(PTY_UNPROTECT([firstname], 'deName'))), ('last_name', UNMASK::(PTY_UNPROTECT([lastname], 'deName')))], orderings=[(unmask_state):asc_first]) FILTER(condition=RANKING(args=[], partition=[unmask_state], order=[(balance):desc_first], allow_ties=False) == 1:numeric, columns={'balance': balance, 'firstname': firstname, 'lastname': lastname, 'unmask_state': unmask_state}) - JOIN(condition=UNMASK::(PTY_UNPROTECT([t0.customerid], 'deAccount')) == UNMASK::(PTY_UNPROTECT_ACCOUNT([t1.customerid])), type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'balance': t1.balance, 'firstname': t0.firstname, 'lastname': t0.lastname, 'unmask_state': t0.unmask_state}) + JOIN(condition=UNMASK::(PTY_UNPROTECT([t0.customerid], 'deAccount')) == UNMASK::(PTY_UNPROTECT_ACCOUNT([t1.customerid])), type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'balance': t1.balance, 'firstname': t0.firstname, 'lastname': t0.lastname, 'unmask_state': t0.unmask_state}) JOIN(condition=t0.unmask_state == UNMASK::(PTY_UNPROTECT([t1.state], 'deAddress')), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customerid': t1.customerid, 'firstname': t1.firstname, 'lastname': t1.lastname, 'unmask_state': t0.unmask_state}) LIMIT(limit=5:numeric, columns={'unmask_state': unmask_state}, orderings=[(unmask_state):asc_first]) AGGREGATE(keys={'unmask_state': UNMASK::(PTY_UNPROTECT([state], 'deAddress'))}, aggregations={}) diff --git a/tests/test_plan_refsols/fsi_best_account_customers_per_state_rewrite.txt b/tests/test_plan_refsols/fsi_best_account_customers_per_state_rewrite.txt index 247fcd01b..9bf9b407e 100644 --- a/tests/test_plan_refsols/fsi_best_account_customers_per_state_rewrite.txt +++ b/tests/test_plan_refsols/fsi_best_account_customers_per_state_rewrite.txt @@ -1,6 +1,6 @@ ROOT(columns=[('state', unmask_state), ('balance', balance), ('first_name', UNMASK::(PTY_UNPROTECT([firstname], 'deName'))), ('last_name', UNMASK::(PTY_UNPROTECT([lastname], 'deName')))], orderings=[(unmask_state):asc_first]) FILTER(condition=RANKING(args=[], partition=[unmask_state], order=[(balance):desc_first], allow_ties=False) == 1:numeric, columns={'balance': balance, 'firstname': firstname, 'lastname': lastname, 'unmask_state': unmask_state}) - JOIN(condition=UNMASK::(PTY_UNPROTECT([t0.customerid], 'deAccount')) == UNMASK::(PTY_UNPROTECT_ACCOUNT([t1.customerid])), type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'balance': t1.balance, 'firstname': t0.firstname, 'lastname': t0.lastname, 'unmask_state': t0.unmask_state}) + JOIN(condition=UNMASK::(PTY_UNPROTECT([t0.customerid], 'deAccount')) == UNMASK::(PTY_UNPROTECT_ACCOUNT([t1.customerid])), type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'balance': t1.balance, 'firstname': t0.firstname, 'lastname': t0.lastname, 'unmask_state': t0.unmask_state}) JOIN(condition=t0.unmask_state == UNMASK::(PTY_UNPROTECT([t1.state], 'deAddress')), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customerid': t1.customerid, 'firstname': t1.firstname, 'lastname': t1.lastname, 'unmask_state': t0.unmask_state}) LIMIT(limit=5:numeric, columns={'unmask_state': unmask_state}, orderings=[(unmask_state):asc_first]) AGGREGATE(keys={'unmask_state': UNMASK::(PTY_UNPROTECT([state], 'deAddress'))}, aggregations={}) diff --git a/tests/test_plan_refsols/function_sampler.txt b/tests/test_plan_refsols/function_sampler.txt index 5ab472869..dbf40d5a4 100644 --- a/tests/test_plan_refsols/function_sampler.txt +++ b/tests/test_plan_refsols/function_sampler.txt @@ -1,6 +1,6 @@ ROOT(columns=[('a', JOIN_STRINGS('-':string, r_name, n_name, SLICE(c_name, 16:numeric, None:unknown, None:unknown))), ('b', ROUND(c_acctbal, 1:numeric)), ('c', KEEP_IF(c_name, SLICE(c_phone, None:unknown, 1:numeric, None:unknown) == '3':string)), ('d', PRESENT(KEEP_IF(c_name, SLICE(c_phone, 1:numeric, 2:numeric, None:unknown) == '1':string))), ('e', ABSENT(KEEP_IF(c_name, SLICE(c_phone, 14:numeric, None:unknown, None:unknown) == '7':string))), ('f', ROUND(c_acctbal))], orderings=[(c_address):asc_first], limit=10:numeric) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_address': t1.c_address, 'c_name': t1.c_name, 'c_phone': t1.c_phone, 'n_name': t0.n_name, 'r_name': t0.r_name}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_address': t1.c_address, 'c_name': t1.c_name, 'c_phone': t1.c_phone, 'n_name': t0.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=MONOTONIC(0.0:numeric, c_acctbal, 100.0:numeric), columns={'c_acctbal': c_acctbal, 'c_address': c_address, 'c_name': c_name, 'c_nationkey': c_nationkey, 'c_phone': c_phone}) diff --git a/tests/test_plan_refsols/join_asia_region_nations.txt b/tests/test_plan_refsols/join_asia_region_nations.txt index 78532832c..6bf52d844 100644 --- a/tests/test_plan_refsols/join_asia_region_nations.txt +++ b/tests/test_plan_refsols/join_asia_region_nations.txt @@ -1,5 +1,5 @@ ROOT(columns=[('key', n_nationkey), ('region_key', n_regionkey), ('name', n_name), ('comment', n_comment)], orderings=[]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) FILTER(condition=r_name == 'ASIA':string, columns={'r_regionkey': r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/join_order_by.txt b/tests/test_plan_refsols/join_order_by.txt index e84c9ff03..2f8fd8b6c 100644 --- a/tests/test_plan_refsols/join_order_by.txt +++ b/tests/test_plan_refsols/join_order_by.txt @@ -1,4 +1,4 @@ ROOT(columns=[('region_name', r_name), ('nation_name', n_name)], orderings=[(n_name):desc_last]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/join_order_by_back_reference.txt b/tests/test_plan_refsols/join_order_by_back_reference.txt index c2fa8442c..a2fa8c83e 100644 --- a/tests/test_plan_refsols/join_order_by_back_reference.txt +++ b/tests/test_plan_refsols/join_order_by_back_reference.txt @@ -1,4 +1,4 @@ ROOT(columns=[('region_name', r_name), ('nation_name', n_name)], orderings=[(r_name):desc_last]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/join_order_by_pruned_back_reference.txt b/tests/test_plan_refsols/join_order_by_pruned_back_reference.txt index ad9495668..52d39e497 100644 --- a/tests/test_plan_refsols/join_order_by_pruned_back_reference.txt +++ b/tests/test_plan_refsols/join_order_by_pruned_back_reference.txt @@ -1,4 +1,4 @@ ROOT(columns=[('nation_name', n_name)], orderings=[(r_name):desc_last]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/join_region_nations.txt b/tests/test_plan_refsols/join_region_nations.txt index 192f6778a..e385270e8 100644 --- a/tests/test_plan_refsols/join_region_nations.txt +++ b/tests/test_plan_refsols/join_region_nations.txt @@ -1,2 +1,4 @@ ROOT(columns=[('key', n_nationkey), ('region_key', n_regionkey), ('name', n_name), ('comment', n_comment)], orderings=[]) - SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/join_region_nations_customers.txt b/tests/test_plan_refsols/join_region_nations_customers.txt index 8f39f219c..719063a2d 100644 --- a/tests/test_plan_refsols/join_region_nations_customers.txt +++ b/tests/test_plan_refsols/join_region_nations_customers.txt @@ -1,2 +1,6 @@ ROOT(columns=[('key', c_custkey), ('name', c_name), ('address', c_address), ('nation_key', c_nationkey), ('phone', c_phone), ('account_balance', c_acctbal), ('market_segment', c_mktsegment), ('comment', c_comment)], orderings=[]) - SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_address': c_address, 'c_comment': c_comment, 'c_custkey': c_custkey, 'c_mktsegment': c_mktsegment, 'c_name': c_name, 'c_nationkey': c_nationkey, 'c_phone': c_phone}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_address': t1.c_address, 'c_comment': t1.c_comment, 'c_custkey': t1.c_custkey, 'c_mktsegment': t1.c_mktsegment, 'c_name': t1.c_name, 'c_nationkey': t1.c_nationkey, 'c_phone': t1.c_phone}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_address': c_address, 'c_comment': c_comment, 'c_custkey': c_custkey, 'c_mktsegment': c_mktsegment, 'c_name': c_name, 'c_nationkey': c_nationkey, 'c_phone': c_phone}) diff --git a/tests/test_plan_refsols/join_topk.txt b/tests/test_plan_refsols/join_topk.txt index b5fed4ca0..69d627e2f 100644 --- a/tests/test_plan_refsols/join_topk.txt +++ b/tests/test_plan_refsols/join_topk.txt @@ -1,4 +1,4 @@ ROOT(columns=[('region_name', r_name), ('nation_name', n_name)], orderings=[(n_name):asc_last], limit=10:numeric) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/lineitem_regional_shipments.txt b/tests/test_plan_refsols/lineitem_regional_shipments.txt index f715a682e..2af6b102d 100644 --- a/tests/test_plan_refsols/lineitem_regional_shipments.txt +++ b/tests/test_plan_refsols/lineitem_regional_shipments.txt @@ -1,9 +1,9 @@ ROOT(columns=[('rname', r_name), ('price', l_extendedprice)], orderings=[]) JOIN(condition=t0.l_partkey == t1.ps_partkey & t0.l_suppkey == t1.ps_suppkey & t0.r_name == t1.r_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_extendedprice': t0.l_extendedprice, 'r_name': t0.r_name}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_suppkey': t1.l_suppkey, 'r_name': t0.r_name}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t1.c_custkey, 'r_name': t0.r_name}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_extendedprice': t1.l_extendedprice, 'l_partkey': t1.l_partkey, 'l_suppkey': t1.l_suppkey, 'r_name': t0.r_name}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/lineitem_regional_shipments3.txt b/tests/test_plan_refsols/lineitem_regional_shipments3.txt index 92972470c..620f056d2 100644 --- a/tests/test_plan_refsols/lineitem_regional_shipments3.txt +++ b/tests/test_plan_refsols/lineitem_regional_shipments3.txt @@ -3,10 +3,10 @@ ROOT(columns=[('key', r_regionkey), ('name', r_name), ('comment', r_comment)], o JOIN(condition=t0.c_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) JOIN(condition=t0.o_custkey == t1.c_custkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'c_nationkey': t1.c_nationkey, 'r_name': t0.r_name}) JOIN(condition=t0.l_orderkey == t1.o_orderkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'o_custkey': t1.o_custkey, 'r_name': t0.r_name}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_orderkey': t1.l_orderkey, 'r_name': t0.r_name}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t1.c_custkey, 'r_name': t0.r_name}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_orderkey': t1.l_orderkey, 'r_name': t0.r_name}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/lines_shipping_vs_customer_region.txt b/tests/test_plan_refsols/lines_shipping_vs_customer_region.txt index d83f1a69a..01121acc1 100644 --- a/tests/test_plan_refsols/lines_shipping_vs_customer_region.txt +++ b/tests/test_plan_refsols/lines_shipping_vs_customer_region.txt @@ -1,9 +1,9 @@ ROOT(columns=[('order_year', YEAR(o_orderdate)), ('customer_region_name', r_name), ('customer_nation_name', nname), ('supplier_region_name', name_16), ('nation_name', n_name)], orderings=[]) JOIN(condition=t0.l_partkey == t1.ps_partkey & t0.l_suppkey == t1.ps_suppkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t1.n_name, 'name_16': t1.r_name, 'nname': t0.n_name, 'o_orderdate': t0.o_orderdate, 'r_name': t0.r_name}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_partkey': t1.l_partkey, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'o_orderdate': t0.o_orderdate, 'r_name': t0.r_name}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t0.n_name, 'o_orderdate': t1.o_orderdate, 'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'r_name': t0.r_name}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_partkey': t1.l_partkey, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'o_orderdate': t0.o_orderdate, 'r_name': t0.r_name}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'o_orderdate': t1.o_orderdate, 'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/many_net_filter_1.txt b/tests/test_plan_refsols/many_net_filter_1.txt index c3287b05e..eea54bdbf 100644 --- a/tests/test_plan_refsols/many_net_filter_1.txt +++ b/tests/test_plan_refsols/many_net_filter_1.txt @@ -1,6 +1,6 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) + JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) FILTER(condition=s_nationkey == 1:numeric, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/many_net_filter_10.txt b/tests/test_plan_refsols/many_net_filter_10.txt index 8eb35e3e3..ae5127e54 100644 --- a/tests/test_plan_refsols/many_net_filter_10.txt +++ b/tests/test_plan_refsols/many_net_filter_10.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/many_net_filter_11.txt b/tests/test_plan_refsols/many_net_filter_11.txt index 6122ff62a..3e0229e3b 100644 --- a/tests/test_plan_refsols/many_net_filter_11.txt +++ b/tests/test_plan_refsols/many_net_filter_11.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) FILTER(condition=NOT(ISIN(s_nationkey, [0, 3, 6, 9, 12, 15, 18, 21, 24]:array[unknown])), columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) diff --git a/tests/test_plan_refsols/many_net_filter_2.txt b/tests/test_plan_refsols/many_net_filter_2.txt index b17aa1d69..460bf0bd3 100644 --- a/tests/test_plan_refsols/many_net_filter_2.txt +++ b/tests/test_plan_refsols/many_net_filter_2.txt @@ -1,6 +1,6 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) + JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) FILTER(condition=s_nationkey == 2:numeric, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/many_net_filter_3.txt b/tests/test_plan_refsols/many_net_filter_3.txt index 0a679d928..0ec2331d5 100644 --- a/tests/test_plan_refsols/many_net_filter_3.txt +++ b/tests/test_plan_refsols/many_net_filter_3.txt @@ -1,6 +1,6 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) + JOIN(condition=t0.s_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) FILTER(condition=c_nationkey == 3:numeric, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) SCAN(table=tpch.CUSTOMER, columns={'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/many_net_filter_4.txt b/tests/test_plan_refsols/many_net_filter_4.txt index c05b4d33a..1323021cf 100644 --- a/tests/test_plan_refsols/many_net_filter_4.txt +++ b/tests/test_plan_refsols/many_net_filter_4.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) FILTER(condition=s_nationkey == 4:numeric, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) diff --git a/tests/test_plan_refsols/many_net_filter_5.txt b/tests/test_plan_refsols/many_net_filter_5.txt index 5c3449d2a..08eb40f14 100644 --- a/tests/test_plan_refsols/many_net_filter_5.txt +++ b/tests/test_plan_refsols/many_net_filter_5.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) FILTER(condition=n_nationkey == 5:numeric, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/many_net_filter_6.txt b/tests/test_plan_refsols/many_net_filter_6.txt index 47ce0b021..ec266e374 100644 --- a/tests/test_plan_refsols/many_net_filter_6.txt +++ b/tests/test_plan_refsols/many_net_filter_6.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/many_net_filter_7.txt b/tests/test_plan_refsols/many_net_filter_7.txt index fa1027a5b..1f48b1107 100644 --- a/tests/test_plan_refsols/many_net_filter_7.txt +++ b/tests/test_plan_refsols/many_net_filter_7.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/many_net_filter_8.txt b/tests/test_plan_refsols/many_net_filter_8.txt index 583e93edb..74830eb51 100644 --- a/tests/test_plan_refsols/many_net_filter_8.txt +++ b/tests/test_plan_refsols/many_net_filter_8.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) FILTER(condition=n_regionkey == 0:numeric, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/many_net_filter_9.txt b/tests/test_plan_refsols/many_net_filter_9.txt index 2f693c013..a97d6b154 100644 --- a/tests/test_plan_refsols/many_net_filter_9.txt +++ b/tests/test_plan_refsols/many_net_filter_9.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) - JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey & t1.c_custkey == t0.s_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) + JOIN(condition=t0.n_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_nationkey': t1.n_nationkey, 's_suppkey': t0.s_suppkey}) JOIN(condition=t0.s_nationkey == t1.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t1.n_regionkey, 's_suppkey': t0.s_suppkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) FILTER(condition=n_regionkey == 1:numeric, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/nation_name_contains_region_name.txt b/tests/test_plan_refsols/nation_name_contains_region_name.txt index 9d3c189f4..b714c3cee 100644 --- a/tests/test_plan_refsols/nation_name_contains_region_name.txt +++ b/tests/test_plan_refsols/nation_name_contains_region_name.txt @@ -1,4 +1,4 @@ ROOT(columns=[('key', n_nationkey), ('region_key', n_regionkey), ('name', n_name), ('comment', n_comment)], orderings=[]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey & CONTAINS(t1.n_name, t0.r_name), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey & CONTAINS(t1.n_name, t0.r_name), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/order_by_before_join.txt b/tests/test_plan_refsols/order_by_before_join.txt index 192f6778a..e385270e8 100644 --- a/tests/test_plan_refsols/order_by_before_join.txt +++ b/tests/test_plan_refsols/order_by_before_join.txt @@ -1,2 +1,4 @@ ROOT(columns=[('key', n_nationkey), ('region_key', n_regionkey), ('name', n_name), ('comment', n_comment)], orderings=[]) - SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/part_cross_part_a.txt b/tests/test_plan_refsols/part_cross_part_a.txt index 90ec89d6c..47429e136 100644 --- a/tests/test_plan_refsols/part_cross_part_a.txt +++ b/tests/test_plan_refsols/part_cross_part_a.txt @@ -1,14 +1,14 @@ ROOT(columns=[('state', sbCustState), ('exchange', sbTickerExchange), ('n', DEFAULT_TO(sum_n_rows, 0:numeric))], orderings=[(sbCustState):asc_first, (sbTickerExchange):asc_first]) AGGREGATE(keys={'sbCustState': sbCustState, 'sbTickerExchange': sbTickerExchange}, aggregations={'sum_n_rows': SUM(n_rows)}) JOIN(condition=t0.sbTickerExchange == t1.sbTickerExchange & t0.sbCustId == t1.sbCustId, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'n_rows': t1.n_rows, 'sbCustState': t0.sbCustState, 'sbTickerExchange': t0.sbTickerExchange}) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'sbCustId': t1.sbCustId, 'sbCustState': t1.sbCustState, 'sbTickerExchange': t0.sbTickerExchange}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'sbCustId': t1.sbCustId, 'sbCustState': t1.sbCustState, 'sbTickerExchange': t0.sbTickerExchange}) AGGREGATE(keys={'sbTickerExchange': sbTickerExchange}, aggregations={}) SCAN(table=main.sbTicker, columns={'sbTickerExchange': sbTickerExchange}) SCAN(table=main.sbCustomer, columns={'sbCustId': sbCustId, 'sbCustState': sbCustState}) AGGREGATE(keys={'sbCustId': sbCustId, 'sbTickerExchange': sbTickerExchange}, aggregations={'n_rows': COUNT()}) JOIN(condition=t0.sbTxTickerId == t1.sbTickerId & t1.sbTickerExchange == t0.sbTickerExchange, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'sbCustId': t0.sbCustId, 'sbTickerExchange': t0.sbTickerExchange}) - JOIN(condition=t0.sbCustId == t1.sbTxCustId, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'sbCustId': t0.sbCustId, 'sbTickerExchange': t0.sbTickerExchange, 'sbTxTickerId': t1.sbTxTickerId}) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'sbCustId': t1.sbCustId, 'sbTickerExchange': t0.sbTickerExchange}) + JOIN(condition=t0.sbCustId == t1.sbTxCustId, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'sbCustId': t0.sbCustId, 'sbTickerExchange': t0.sbTickerExchange, 'sbTxTickerId': t1.sbTxTickerId}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'sbCustId': t1.sbCustId, 'sbTickerExchange': t0.sbTickerExchange}) AGGREGATE(keys={'sbTickerExchange': sbTickerExchange}, aggregations={}) SCAN(table=main.sbTicker, columns={'sbTickerExchange': sbTickerExchange}) SCAN(table=main.sbCustomer, columns={'sbCustId': sbCustId}) diff --git a/tests/test_plan_refsols/part_reduced_size.txt b/tests/test_plan_refsols/part_reduced_size.txt index 68b341aaa..69634d802 100644 --- a/tests/test_plan_refsols/part_reduced_size.txt +++ b/tests/test_plan_refsols/part_reduced_size.txt @@ -1,5 +1,5 @@ ROOT(columns=[('reduced_size', FLOAT(p_size / 2.5:numeric)), ('retail_price_int', INTEGER(p_retailprice)), ('message', JOIN_STRINGS('':string, 'old size: ':string, STRING(p_size))), ('discount', l_discount), ('date_dmy', STRING(l_receiptdate, '%d-%m-%Y':string)), ('date_md', STRING(l_receiptdate, '%m/%d':string)), ('am_pm', STRING(l_receiptdate, '%H:%M%p':string))], orderings=[(l_discount):desc_last], limit=5:numeric) - JOIN(condition=t0.p_partkey == t1.l_partkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_discount': t1.l_discount, 'l_receiptdate': t1.l_receiptdate, 'p_retailprice': t0.p_retailprice, 'p_size': t0.p_size}) + JOIN(condition=t0.p_partkey == t1.l_partkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t1.l_discount, 'l_receiptdate': t1.l_receiptdate, 'p_retailprice': t0.p_retailprice, 'p_size': t0.p_size}) LIMIT(limit=2:numeric, columns={'p_partkey': p_partkey, 'p_retailprice': p_retailprice, 'p_size': p_size}, orderings=[(INTEGER(p_retailprice)):asc_first]) SCAN(table=tpch.PART, columns={'p_partkey': p_partkey, 'p_retailprice': p_retailprice, 'p_size': p_size}) SCAN(table=tpch.LINEITEM, columns={'l_discount': l_discount, 'l_partkey': l_partkey, 'l_receiptdate': l_receiptdate}) diff --git a/tests/test_plan_refsols/percentile_customers_per_region.txt b/tests/test_plan_refsols/percentile_customers_per_region.txt index 627b425c7..3e57f7752 100644 --- a/tests/test_plan_refsols/percentile_customers_per_region.txt +++ b/tests/test_plan_refsols/percentile_customers_per_region.txt @@ -1,5 +1,7 @@ ROOT(columns=[('name', c_name)], orderings=[(c_name):asc_first]) FILTER(condition=PERCENTILE(args=[], partition=[n_regionkey], order=[(c_acctbal):asc_last]) == 95:numeric & ENDSWITH(c_phone, '00':string), columns={'c_name': c_name}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'c_phone': t1.c_phone, 'n_regionkey': t0.n_regionkey}) - SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'c_phone': t1.c_phone, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_name': c_name, 'c_nationkey': c_nationkey, 'c_phone': c_phone}) diff --git a/tests/test_plan_refsols/quarter_cum_ir_analysis.txt b/tests/test_plan_refsols/quarter_cum_ir_analysis.txt index 8e39cad16..25aba7b3b 100644 --- a/tests/test_plan_refsols/quarter_cum_ir_analysis.txt +++ b/tests/test_plan_refsols/quarter_cum_ir_analysis.txt @@ -7,7 +7,7 @@ ROOT(columns=[('quarter', quarter), ('n_incidents', DEFAULT_TO(ndistinct_in_devi SCAN(table=main.PRODUCTS, columns={'pr_name': pr_name, 'pr_release': pr_release}) SCAN(table=main.CALENDAR, columns={'ca_dt': ca_dt}) AGGREGATE(keys={'ca_dt': ca_dt}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.ca_dt == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t0.ca_dt}) + JOIN(condition=t0.ca_dt == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt}) JOIN(condition=t1.ca_dt < DATETIME(t0.pr_release, '+2 years':string, 'start of quarter':string) & t1.ca_dt >= t0.pr_release, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t1.ca_dt}) FILTER(condition=pr_name == 'RubyCopper-Star':string, columns={'pr_release': pr_release}) SCAN(table=main.PRODUCTS, columns={'pr_name': pr_name, 'pr_release': pr_release}) @@ -16,7 +16,7 @@ ROOT(columns=[('quarter', quarter), ('n_incidents', DEFAULT_TO(ndistinct_in_devi SCAN(table=main.DEVICES, columns={'de_product_id': de_product_id, 'de_purchase_ts': de_purchase_ts}) AGGREGATE(keys={'quarter': quarter}, aggregations={'ndistinct_in_device_id': NDISTINCT(in_device_id)}) JOIN(condition=t0.in_device_id == t1.de_id, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'in_device_id': t0.in_device_id, 'quarter': t0.quarter}) - JOIN(condition=t0.ca_dt == DATETIME(t1.in_error_report_ts, 'start of day':string) & t1.in_repair_country_id == t0.co_id, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'in_device_id': t1.in_device_id, 'quarter': t0.quarter}) + JOIN(condition=t0.ca_dt == DATETIME(t1.in_error_report_ts, 'start of day':string) & t1.in_repair_country_id == t0.co_id, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'in_device_id': t1.in_device_id, 'quarter': t0.quarter}) JOIN(condition=t0.quarter == DATETIME(t1.ca_dt, 'start of quarter':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t1.ca_dt, 'co_id': t0.co_id, 'quarter': t0.quarter}) JOIN(condition=True:bool, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'co_id': t0.co_id, 'quarter': t1.quarter}) JOIN(condition=True:bool, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'co_id': t1.co_id}) diff --git a/tests/test_plan_refsols/rank_customers_per_nation.txt b/tests/test_plan_refsols/rank_customers_per_nation.txt index 7384d661e..5927e5581 100644 --- a/tests/test_plan_refsols/rank_customers_per_nation.txt +++ b/tests/test_plan_refsols/rank_customers_per_nation.txt @@ -1,4 +1,4 @@ ROOT(columns=[('nation_name', n_name), ('name', c_name), ('cust_rank', RANKING(args=[], partition=[c_nationkey], order=[(c_acctbal):desc_first], allow_ties=True))], orderings=[]) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'c_nationkey': t1.c_nationkey, 'n_name': t0.n_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'c_nationkey': t1.c_nationkey, 'n_name': t0.n_name}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_name': c_name, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/rank_customers_per_region.txt b/tests/test_plan_refsols/rank_customers_per_region.txt index b21f4c0b5..d07076b73 100644 --- a/tests/test_plan_refsols/rank_customers_per_region.txt +++ b/tests/test_plan_refsols/rank_customers_per_region.txt @@ -1,4 +1,6 @@ ROOT(columns=[('nation_name', n_name), ('name', c_name), ('cust_rank', RANKING(args=[], partition=[n_regionkey], order=[(c_acctbal):desc_first], allow_ties=True, dense=True))], orderings=[]) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'n_name': t0.n_name, 'n_regionkey': t0.n_regionkey}) - SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'n_name': t0.n_name, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_name': c_name, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/rank_nations_per_region_by_customers.txt b/tests/test_plan_refsols/rank_nations_per_region_by_customers.txt index acb2cb036..1e15a2b9f 100644 --- a/tests/test_plan_refsols/rank_nations_per_region_by_customers.txt +++ b/tests/test_plan_refsols/rank_nations_per_region_by_customers.txt @@ -1,5 +1,7 @@ ROOT(columns=[('name', n_name), ('rank', RANKING(args=[], partition=[n_regionkey], order=[(n_rows):desc_first]))], orderings=[(RANKING(args=[], partition=[n_regionkey], order=[(n_rows):desc_first])):asc_first], limit=5:numeric) JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t0.n_name, 'n_regionkey': t0.n_regionkey, 'n_rows': t1.n_rows}) - SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) AGGREGATE(keys={'c_nationkey': c_nationkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.CUSTOMER, columns={'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/rank_parts_per_supplier_region_by_size.txt b/tests/test_plan_refsols/rank_parts_per_supplier_region_by_size.txt index 0e4ebd6a9..93faac8e4 100644 --- a/tests/test_plan_refsols/rank_parts_per_supplier_region_by_size.txt +++ b/tests/test_plan_refsols/rank_parts_per_supplier_region_by_size.txt @@ -1,8 +1,8 @@ ROOT(columns=[('key', p_partkey), ('region', r_name), ('rank', RANKING(args=[], partition=[n_regionkey], order=[(p_size):desc_first, (p_container):desc_first, (p_type):desc_first], allow_ties=True, dense=True))], orderings=[(p_partkey):asc_first], limit=15:numeric) JOIN(condition=t0.ps_partkey == t1.p_partkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'p_container': t1.p_container, 'p_partkey': t1.p_partkey, 'p_size': t1.p_size, 'p_type': t1.p_type, 'r_name': t0.r_name}) - JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'ps_partkey': t1.ps_partkey, 'r_name': t0.r_name}) - JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'r_name': t0.r_name, 's_suppkey': t1.s_suppkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) + JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'ps_partkey': t1.ps_partkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'r_name': t0.r_name, 's_suppkey': t1.s_suppkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.SUPPLIER, columns={'s_nationkey': s_nationkey, 's_suppkey': s_suppkey}) diff --git a/tests/test_plan_refsols/region_nation_window_aggs.txt b/tests/test_plan_refsols/region_nation_window_aggs.txt index 219f9e2a2..c3ad69a9b 100644 --- a/tests/test_plan_refsols/region_nation_window_aggs.txt +++ b/tests/test_plan_refsols/region_nation_window_aggs.txt @@ -1,3 +1,5 @@ ROOT(columns=[('nation_name', n_name), ('key_sum', RELSUM(args=[n_nationkey], partition=[n_regionkey], order=[])), ('key_avg', RELAVG(args=[n_nationkey], partition=[n_regionkey], order=[])), ('n_short_comment', RELCOUNT(args=[KEEP_IF(n_comment, LENGTH(n_comment) < 75:numeric)], partition=[n_regionkey], order=[])), ('n_nations', RELSIZE(args=[], partition=[n_regionkey], order=[]))], orderings=[(n_regionkey):asc_first, (n_name):asc_first]) - FILTER(condition=NOT(ISIN(SLICE(n_name, None:unknown, 1:numeric, None:unknown), ['A', 'E', 'I', 'O', 'U']:array[unknown])), columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) - SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_comment': t1.n_comment, 'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + FILTER(condition=NOT(ISIN(SLICE(n_name, None:unknown, 1:numeric, None:unknown), ['A', 'E', 'I', 'O', 'U']:array[unknown])), columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + SCAN(table=tpch.NATION, columns={'n_comment': n_comment, 'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/region_nations_backref.txt b/tests/test_plan_refsols/region_nations_backref.txt index 4b66a2f19..0cee79d99 100644 --- a/tests/test_plan_refsols/region_nations_backref.txt +++ b/tests/test_plan_refsols/region_nations_backref.txt @@ -1,4 +1,4 @@ ROOT(columns=[('region_name', r_name), ('nation_name', n_name)], orderings=[]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/regional_suppliers_percentile.txt b/tests/test_plan_refsols/regional_suppliers_percentile.txt index 6a369877b..14074b574 100644 --- a/tests/test_plan_refsols/regional_suppliers_percentile.txt +++ b/tests/test_plan_refsols/regional_suppliers_percentile.txt @@ -1,8 +1,10 @@ ROOT(columns=[('name', s_name)], orderings=[]) FILTER(condition=PERCENTILE(args=[], partition=[n_regionkey], order=[(n_rows):asc_last, (s_name):asc_last], n_buckets=1000) == 1000:numeric, columns={'s_name': s_name}) JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'n_rows': t1.n_rows, 's_name': t0.s_name}) - JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_regionkey': t0.n_regionkey, 's_name': t1.s_name, 's_suppkey': t1.s_suppkey}) - SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t0.n_regionkey, 's_name': t1.s_name, 's_suppkey': t1.s_suppkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.SUPPLIER, columns={'s_name': s_name, 's_nationkey': s_nationkey, 's_suppkey': s_suppkey}) AGGREGATE(keys={'ps_suppkey': ps_suppkey}, aggregations={'n_rows': COUNT()}) SCAN(table=tpch.PARTSUPP, columns={'ps_suppkey': ps_suppkey}) diff --git a/tests/test_plan_refsols/replace_order_by.txt b/tests/test_plan_refsols/replace_order_by.txt index c2fa8442c..a2fa8c83e 100644 --- a/tests/test_plan_refsols/replace_order_by.txt +++ b/tests/test_plan_refsols/replace_order_by.txt @@ -1,4 +1,4 @@ ROOT(columns=[('region_name', r_name), ('nation_name', n_name)], orderings=[(r_name):desc_last]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/richest_customer_key_per_region.txt b/tests/test_plan_refsols/richest_customer_key_per_region.txt index 67636a941..fa86e48e2 100644 --- a/tests/test_plan_refsols/richest_customer_key_per_region.txt +++ b/tests/test_plan_refsols/richest_customer_key_per_region.txt @@ -1,5 +1,7 @@ ROOT(columns=[('key', c_custkey)], orderings=[]) FILTER(condition=RANKING(args=[], partition=[n_regionkey], order=[(c_acctbal):desc_first], allow_ties=False) == 1:numeric, columns={'c_custkey': c_custkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'n_regionkey': t0.n_regionkey}) - SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'n_regionkey': t0.n_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey}) + SCAN(table=tpch.REGION, columns={'r_regionkey': r_regionkey}) + SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_custkey': c_custkey, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/richest_customer_per_region.txt b/tests/test_plan_refsols/richest_customer_per_region.txt index 426377814..2d4658515 100644 --- a/tests/test_plan_refsols/richest_customer_per_region.txt +++ b/tests/test_plan_refsols/richest_customer_per_region.txt @@ -1,7 +1,7 @@ ROOT(columns=[('region_name', r_name), ('nation_name', n_name), ('customer_name', c_name), ('balance', c_acctbal)], orderings=[]) FILTER(condition=RANKING(args=[], partition=[n_regionkey], order=[(c_acctbal):desc_first, (c_name):asc_last], allow_ties=False) == 1:numeric, columns={'c_acctbal': c_acctbal, 'c_name': c_name, 'n_name': n_name, 'r_name': r_name}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'n_name': t0.n_name, 'n_regionkey': t0.n_regionkey, 'r_name': t0.r_name}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'c_acctbal': t1.c_acctbal, 'c_name': t1.c_name, 'n_name': t0.n_name, 'n_regionkey': t0.n_regionkey, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.CUSTOMER, columns={'c_acctbal': c_acctbal, 'c_name': c_name, 'c_nationkey': c_nationkey}) diff --git a/tests/test_plan_refsols/simple_cross_1.txt b/tests/test_plan_refsols/simple_cross_1.txt index 143afa7f7..7b8af391f 100644 --- a/tests/test_plan_refsols/simple_cross_1.txt +++ b/tests/test_plan_refsols/simple_cross_1.txt @@ -1,4 +1,4 @@ ROOT(columns=[('r1', r1), ('r2', r_name)], orderings=[(r1):asc_first, (r_name):asc_first]) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'r1': t0.r_name, 'r_name': t1.r_name}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'r1': t0.r_name, 'r_name': t1.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name}) diff --git a/tests/test_plan_refsols/simple_cross_10.txt b/tests/test_plan_refsols/simple_cross_10.txt index bdf4299bd..e8824ffdc 100644 --- a/tests/test_plan_refsols/simple_cross_10.txt +++ b/tests/test_plan_refsols/simple_cross_10.txt @@ -2,8 +2,8 @@ ROOT(columns=[('region_name', r_name), ('n_other_nations', DEFAULT_TO(n_rows, 0: JOIN(condition=t0.r_regionkey == t1.r_regionkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'n_rows': t1.n_rows, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) AGGREGATE(keys={'r_regionkey': r_regionkey}, aggregations={'n_rows': COUNT()}) - JOIN(condition=SLICE(t0.r_name, None:unknown, 1:numeric, None:unknown) == SLICE(t1.n_name, None:unknown, 1:numeric, None:unknown) & t0.key_2 == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'r_regionkey': t0.r_regionkey}) - JOIN(condition=t1.r_name != t0.r_name, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'key_2': t1.r_regionkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=SLICE(t0.r_name, None:unknown, 1:numeric, None:unknown) == SLICE(t1.n_name, None:unknown, 1:numeric, None:unknown) & t0.key_2 == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'r_regionkey': t0.r_regionkey}) + JOIN(condition=t1.r_name != t0.r_name, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'key_2': t1.r_regionkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/simple_cross_2.txt b/tests/test_plan_refsols/simple_cross_2.txt index 1e976820e..e86092f5a 100644 --- a/tests/test_plan_refsols/simple_cross_2.txt +++ b/tests/test_plan_refsols/simple_cross_2.txt @@ -1,4 +1,4 @@ ROOT(columns=[('r1', r1), ('r2', r_name)], orderings=[(r1):asc_first, (r_name):asc_first]) - JOIN(condition=t0.r_name != t1.r_name, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'r1': t0.r_name, 'r_name': t1.r_name}) + JOIN(condition=t0.r_name != t1.r_name, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'r1': t0.r_name, 'r_name': t1.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name}) diff --git a/tests/test_plan_refsols/simple_cross_3.txt b/tests/test_plan_refsols/simple_cross_3.txt index d4688a855..d2d01fb66 100644 --- a/tests/test_plan_refsols/simple_cross_3.txt +++ b/tests/test_plan_refsols/simple_cross_3.txt @@ -1,12 +1,12 @@ ROOT(columns=[('supplier_nation', anything_n_name), ('customer_nation', anything_customer_nation), ('nation_combinations', n_rows)], orderings=[]) AGGREGATE(keys={'key_5': key_5, 'key_8': key_8, 'n_nationkey': n_nationkey, 'r_regionkey': r_regionkey}, aggregations={'anything_customer_nation': ANYTHING(customer_nation), 'anything_n_name': ANYTHING(n_name), 'n_rows': COUNT()}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.s_nationkey == t0.n_nationkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.key_8 == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.key_5 == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'customer_nation': t1.n_name, 'key_5': t0.key_5, 'key_8': t1.n_nationkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'key_5': t1.r_regionkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.key_8 == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'customer_nation': t0.customer_nation, 'key_5': t0.key_5, 'key_8': t0.key_8, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.key_5 == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'customer_nation': t1.n_name, 'key_5': t0.key_5, 'key_8': t1.n_nationkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'key_5': t1.r_regionkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t1.n_name, 'n_nationkey': t1.n_nationkey, 'r_regionkey': t0.r_regionkey}) FILTER(condition=r_name == 'ASIA':string, columns={'r_regionkey': r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/simple_cross_4.txt b/tests/test_plan_refsols/simple_cross_4.txt index 59617616d..273113b8d 100644 --- a/tests/test_plan_refsols/simple_cross_4.txt +++ b/tests/test_plan_refsols/simple_cross_4.txt @@ -2,6 +2,6 @@ ROOT(columns=[('region_name', r_name), ('n_other_regions', DEFAULT_TO(n_rows, 0: JOIN(condition=t0.r_regionkey == t1.r_regionkey, type=LEFT, cardinality=SINGULAR_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'n_rows': t1.n_rows, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) AGGREGATE(keys={'r_regionkey': r_regionkey}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t1.r_name != t0.r_name & SLICE(t0.r_name, None:unknown, 1:numeric, None:unknown) == SLICE(t1.r_name, None:unknown, 1:numeric, None:unknown), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'r_regionkey': t0.r_regionkey}) + JOIN(condition=t1.r_name != t0.r_name & SLICE(t0.r_name, None:unknown, 1:numeric, None:unknown) == SLICE(t1.r_name, None:unknown, 1:numeric, None:unknown), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'r_regionkey': t0.r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name}) diff --git a/tests/test_plan_refsols/simple_cross_5.txt b/tests/test_plan_refsols/simple_cross_5.txt index 76c51fc6b..aa919738f 100644 --- a/tests/test_plan_refsols/simple_cross_5.txt +++ b/tests/test_plan_refsols/simple_cross_5.txt @@ -8,8 +8,8 @@ ROOT(columns=[('part_size', p_size), ('best_order_priority', o_orderpriority), ( FILTER(condition=RANKING(args=[], partition=[p_size], order=[(DEFAULT_TO(sum_l_quantity, 0:numeric)):desc_first], allow_ties=False) == 1:numeric, columns={'o_orderpriority': o_orderpriority, 'p_size': p_size, 'sum_l_quantity': sum_l_quantity}) AGGREGATE(keys={'o_orderpriority': o_orderpriority, 'p_size': p_size}, aggregations={'sum_l_quantity': SUM(l_quantity)}) JOIN(condition=t0.l_partkey == t1.p_partkey & t1.p_size == t0.p_size, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_quantity': t0.l_quantity, 'o_orderpriority': t0.o_orderpriority, 'p_size': t0.p_size}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'o_orderpriority': t0.o_orderpriority, 'p_size': t0.p_size}) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_ACCESS, columns={'o_orderkey': t1.o_orderkey, 'o_orderpriority': t1.o_orderpriority, 'p_size': t0.p_size}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_partkey': t1.l_partkey, 'l_quantity': t1.l_quantity, 'o_orderpriority': t0.o_orderpriority, 'p_size': t0.p_size}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'o_orderkey': t1.o_orderkey, 'o_orderpriority': t1.o_orderpriority, 'p_size': t0.p_size}) LIMIT(limit=10:numeric, columns={'p_size': p_size}, orderings=[(p_size):asc_first]) AGGREGATE(keys={'p_size': p_size}, aggregations={}) FILTER(condition=STARTSWITH(p_container, 'LG':string), columns={'p_size': p_size}) diff --git a/tests/test_plan_refsols/simple_cross_6.txt b/tests/test_plan_refsols/simple_cross_6.txt index 5450d1e5a..87a1c56da 100644 --- a/tests/test_plan_refsols/simple_cross_6.txt +++ b/tests/test_plan_refsols/simple_cross_6.txt @@ -1,6 +1,6 @@ ROOT(columns=[('n_pairs', n_rows)], orderings=[]) AGGREGATE(keys={}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t1.o_custkey == t0.o_custkey & t1.o_orderdate == t0.o_orderdate & t1.o_orderkey > t0.o_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={}) + JOIN(condition=t1.o_custkey == t0.o_custkey & t1.o_orderdate == t0.o_orderdate & t1.o_orderkey > t0.o_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={}) FILTER(condition=INTEGER(SLICE(o_clerk, 6:numeric, None:unknown, None:unknown)) >= 900:numeric, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey}) SCAN(table=tpch.ORDERS, columns={'o_clerk': o_clerk, 'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey}) FILTER(condition=INTEGER(SLICE(o_clerk, 6:numeric, None:unknown, None:unknown)) >= 900:numeric, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey}) diff --git a/tests/test_plan_refsols/simple_cross_7.txt b/tests/test_plan_refsols/simple_cross_7.txt index 69800f5c2..cd6e9f679 100644 --- a/tests/test_plan_refsols/simple_cross_7.txt +++ b/tests/test_plan_refsols/simple_cross_7.txt @@ -3,7 +3,7 @@ ROOT(columns=[('original_order_key', o_orderkey), ('n_other_orders', DEFAULT_TO( FILTER(condition=o_orderstatus == 'P':string, columns={'o_orderkey': o_orderkey}) SCAN(table=tpch.ORDERS, columns={'o_orderkey': o_orderkey, 'o_orderstatus': o_orderstatus}) AGGREGATE(keys={'o_orderkey': o_orderkey}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.o_custkey == t1.o_custkey & t0.o_orderdate == t1.o_orderdate & t1.o_orderkey > t0.o_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'o_orderkey': t0.o_orderkey}) + JOIN(condition=t0.o_custkey == t1.o_custkey & t0.o_orderdate == t1.o_orderdate & t1.o_orderkey > t0.o_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'o_orderkey': t0.o_orderkey}) FILTER(condition=o_orderstatus == 'P':string, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey}) SCAN(table=tpch.ORDERS, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey, 'o_orderstatus': o_orderstatus}) FILTER(condition=o_orderstatus == 'P':string, columns={'o_custkey': o_custkey, 'o_orderdate': o_orderdate, 'o_orderkey': o_orderkey}) diff --git a/tests/test_plan_refsols/simple_cross_8.txt b/tests/test_plan_refsols/simple_cross_8.txt index a2fe5605d..69c2da28b 100644 --- a/tests/test_plan_refsols/simple_cross_8.txt +++ b/tests/test_plan_refsols/simple_cross_8.txt @@ -1,11 +1,11 @@ ROOT(columns=[('supplier_region', anything_r_name), ('customer_region', anything_customer_region), ('region_combinations', n_rows)], orderings=[]) AGGREGATE(keys={'key_2': key_2, 'r_regionkey': r_regionkey}, aggregations={'anything_customer_region': ANYTHING(customer_region), 'anything_r_name': ANYTHING(r_name), 'n_rows': COUNT()}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.r_name == t0.r_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'l_suppkey': t1.l_suppkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'customer_region': t0.customer_region, 'key_2': t0.key_2, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=t0.key_2 == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'customer_region': t1.r_name, 'key_2': t1.r_regionkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'l_suppkey': t1.l_suppkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'o_orderkey': t1.o_orderkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'customer_region': t0.customer_region, 'key_2': t0.key_2, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=t0.key_2 == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'customer_region': t0.customer_region, 'key_2': t0.key_2, 'n_nationkey': t1.n_nationkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'customer_region': t1.r_name, 'key_2': t1.r_regionkey, 'r_name': t0.r_name, 'r_regionkey': t0.r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/simple_cross_9.txt b/tests/test_plan_refsols/simple_cross_9.txt index 16505a1c3..caf88dc3f 100644 --- a/tests/test_plan_refsols/simple_cross_9.txt +++ b/tests/test_plan_refsols/simple_cross_9.txt @@ -1,7 +1,7 @@ ROOT(columns=[('n1', n_name), ('n2', name_9)], orderings=[(n_name):asc_first, (name_9):asc_first], limit=10:numeric) - JOIN(condition=t0.n_name != t1.n_name & t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'name_9': t1.n_name}) - JOIN(condition=t0.r_name == t1.r_name, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'r_regionkey': t1.r_regionkey}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) + JOIN(condition=t0.n_name != t1.n_name & t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'name_9': t1.n_name}) + JOIN(condition=t0.r_name == t1.r_name, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'r_regionkey': t1.r_regionkey}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/smoke_d.txt b/tests/test_plan_refsols/smoke_d.txt index 6423c59ff..ada7fa8a8 100644 --- a/tests/test_plan_refsols/smoke_d.txt +++ b/tests/test_plan_refsols/smoke_d.txt @@ -1,5 +1,5 @@ ROOT(columns=[('key', c_custkey), ('a', RANKING(args=[], partition=[], order=[(c_acctbal):asc_last, (c_custkey):asc_last])), ('b', RANKING(args=[], partition=[c_nationkey], order=[(c_acctbal):asc_last, (c_custkey):asc_last])), ('c', RANKING(args=[], partition=[], order=[(c_mktsegment):asc_last], allow_ties=True)), ('d', RANKING(args=[], partition=[], order=[(c_mktsegment):asc_last], allow_ties=True, dense=True)), ('e', PERCENTILE(args=[], partition=[], order=[(c_acctbal):asc_last, (c_custkey):asc_last])), ('f', PERCENTILE(args=[], partition=[c_nationkey], order=[(c_acctbal):asc_last, (c_custkey):asc_last], n_buckets=12)), ('g', PREV(args=[c_custkey], partition=[], order=[(c_custkey):asc_last])), ('h', PREV(args=[c_custkey], partition=[c_nationkey], order=[(c_custkey):asc_last], n=2, default=-1)), ('i', NEXT(args=[c_custkey], partition=[], order=[(c_custkey):asc_last])), ('j', NEXT(args=[c_custkey], partition=[c_nationkey], order=[(c_custkey):asc_last], n=6000)), ('k', RELSUM(args=[c_acctbal], partition=[c_nationkey], order=[])), ('l', RELSUM(args=[c_acctbal], partition=[], order=[(c_custkey):asc_last], cumulative=True)), ('m', ROUND(RELAVG(args=[c_acctbal], partition=[], order=[]), 2:numeric)), ('n', ROUND(RELAVG(args=[c_acctbal], partition=[c_nationkey], order=[(c_custkey):asc_last], frame=(None, -1)), 2:numeric)), ('o', RELCOUNT(args=[KEEP_IF(c_acctbal, c_acctbal > 0:numeric)], partition=[], order=[])), ('p', RELSIZE(args=[], partition=[], order=[]))], orderings=[(c_custkey):asc_first], limit=10:numeric) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_mktsegment': t1.c_mktsegment, 'c_nationkey': t1.c_nationkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'c_acctbal': t1.c_acctbal, 'c_custkey': t1.c_custkey, 'c_mktsegment': t1.c_mktsegment, 'c_nationkey': t1.c_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'ASIA':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/sqlite_udf_nval.txt b/tests/test_plan_refsols/sqlite_udf_nval.txt index 67f0c0f2f..4df1a1e33 100644 --- a/tests/test_plan_refsols/sqlite_udf_nval.txt +++ b/tests/test_plan_refsols/sqlite_udf_nval.txt @@ -1,4 +1,4 @@ ROOT(columns=[('rname', r_name), ('nname', n_name), ('v1', NVAL(args=[n_name, 3:numeric], partition=[], order=[(n_name):asc_last])), ('v2', NVAL(args=[n_name, 1:numeric], partition=[n_regionkey], order=[(n_name):asc_last])), ('v3', NVAL(args=[n_name, 2:numeric], partition=[n_regionkey], order=[(n_name):asc_last], frame=(1, None))), ('v4', NVAL(args=[n_name, 5:numeric], partition=[], order=[(n_name):asc_last], cumulative=True))], orderings=[(r_name):asc_first, (n_name):asc_first]) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_name': t1.n_name, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t1.n_name, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_regionkey': n_regionkey}) diff --git a/tests/test_plan_refsols/supplier_pct_national_qty.txt b/tests/test_plan_refsols/supplier_pct_national_qty.txt index d3a24fe65..ecd4090a0 100644 --- a/tests/test_plan_refsols/supplier_pct_national_qty.txt +++ b/tests/test_plan_refsols/supplier_pct_national_qty.txt @@ -1,7 +1,7 @@ ROOT(columns=[('supplier_name', anything_s_name), ('nation_name', anything_n_name), ('supplier_quantity', DEFAULT_TO(sum_l_quantity, 0:numeric)), ('national_qty_pct', 100.0:numeric * DEFAULT_TO(sum_l_quantity, 0:numeric) / RELSUM(args=[DEFAULT_TO(sum_l_quantity, 0:numeric)], partition=[anything_s_nationkey], order=[]))], orderings=[(100.0:numeric * DEFAULT_TO(sum_l_quantity, 0:numeric) / RELSUM(args=[DEFAULT_TO(sum_l_quantity, 0:numeric)], partition=[anything_s_nationkey], order=[])):desc_last], limit=5:numeric) AGGREGATE(keys={'l_suppkey': s_suppkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'anything_s_name': ANYTHING(s_name), 'anything_s_nationkey': ANYTHING(s_nationkey), 'sum_l_quantity': SUM(l_quantity)}) JOIN(condition=t0.s_suppkey == t1.l_suppkey, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_quantity': t1.l_quantity, 'n_name': t0.n_name, 's_name': t0.s_name, 's_nationkey': t0.s_nationkey, 's_suppkey': t0.s_suppkey}) - JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 's_name': t1.s_name, 's_nationkey': t1.s_nationkey, 's_suppkey': t1.s_suppkey}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 's_name': t1.s_name, 's_nationkey': t1.s_nationkey, 's_suppkey': t1.s_suppkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=SEMI, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'AFRICA':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/suppliers_bal_diffs.txt b/tests/test_plan_refsols/suppliers_bal_diffs.txt index 5257873f3..643edfc2e 100644 --- a/tests/test_plan_refsols/suppliers_bal_diffs.txt +++ b/tests/test_plan_refsols/suppliers_bal_diffs.txt @@ -1,6 +1,6 @@ ROOT(columns=[('name', s_name), ('region_name', r_name), ('acctbal_delta', s_acctbal - PREV(args=[s_acctbal], partition=[n_regionkey], order=[(s_acctbal):asc_last]))], orderings=[(s_acctbal - PREV(args=[s_acctbal], partition=[n_regionkey], order=[(s_acctbal):asc_last])):desc_last], limit=5:numeric) - JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'r_name': t0.r_name, 's_acctbal': t1.s_acctbal, 's_name': t1.s_name}) - JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_regionkey': t0.n_regionkey, 'r_name': t0.r_name, 's_acctbal': t1.s_acctbal, 's_name': t1.s_name}) + JOIN(condition=t0.r_regionkey == t1.n_regionkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'n_regionkey': t1.n_regionkey, 'r_name': t0.r_name}) SCAN(table=tpch.REGION, columns={'r_name': r_name, 'r_regionkey': r_regionkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) SCAN(table=tpch.SUPPLIER, columns={'s_acctbal': s_acctbal, 's_name': s_name, 's_nationkey': s_nationkey}) diff --git a/tests/test_plan_refsols/technograph_country_combination_analysis.txt b/tests/test_plan_refsols/technograph_country_combination_analysis.txt index 915f73bcc..12c122d30 100644 --- a/tests/test_plan_refsols/technograph_country_combination_analysis.txt +++ b/tests/test_plan_refsols/technograph_country_combination_analysis.txt @@ -6,7 +6,7 @@ ROOT(columns=[('factory_country', co_name), ('purchase_country', name_2), ('ir', AGGREGATE(keys={'anything__id_3': anything__id_3, 'anything_co_id': anything_co_id}, aggregations={'n_rows': COUNT(), 'sum_n_rows': SUM(KEEP_IF(count_in_device_id, count_in_device_id != 0:numeric))}) AGGREGATE(keys={'in_device_id': de_id}, aggregations={'anything__id_3': ANYTHING(_id_3), 'anything_co_id': ANYTHING(co_id), 'count_in_device_id': COUNT(in_device_id)}) JOIN(condition=t0.de_id == t1.in_device_id, type=LEFT, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'_id_3': t0._id_3, 'co_id': t0.co_id, 'de_id': t0.de_id, 'in_device_id': t1.in_device_id}) - JOIN(condition=t0._id_3 == t1.de_purchase_country_id & t1.de_production_country_id == t0.co_id, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'_id_3': t0._id_3, 'co_id': t0.co_id, 'de_id': t1.de_id}) + JOIN(condition=t0._id_3 == t1.de_purchase_country_id & t1.de_production_country_id == t0.co_id, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'_id_3': t0._id_3, 'co_id': t0.co_id, 'de_id': t1.de_id}) JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'_id_3': t1.co_id, 'co_id': t0.co_id}) SCAN(table=main.COUNTRIES, columns={'co_id': co_id}) SCAN(table=main.COUNTRIES, columns={'co_id': co_id}) diff --git a/tests/test_plan_refsols/technograph_hot_purchase_window.txt b/tests/test_plan_refsols/technograph_hot_purchase_window.txt index 8e8497536..dbbb9de24 100644 --- a/tests/test_plan_refsols/technograph_hot_purchase_window.txt +++ b/tests/test_plan_refsols/technograph_hot_purchase_window.txt @@ -1,6 +1,6 @@ ROOT(columns=[('start_of_period', ca_dt), ('n_purchases', n_rows)], orderings=[(n_rows):desc_last, (ca_dt):asc_first], limit=1:numeric) AGGREGATE(keys={'ca_dt': ca_dt}, aggregations={'n_rows': COUNT()}) - JOIN(condition=t0.calendar_day_1 == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t0.ca_dt}) + JOIN(condition=t0.calendar_day_1 == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt}) JOIN(condition=t1.ca_dt < DATETIME(t0.ca_dt, '+5 days':string) & t1.ca_dt >= t0.ca_dt, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt, 'calendar_day_1': t1.ca_dt}) FILTER(condition=YEAR(ca_dt) == 2024:numeric, columns={'ca_dt': ca_dt}) SCAN(table=main.CALENDAR, columns={'ca_dt': ca_dt}) diff --git a/tests/test_plan_refsols/technograph_monthly_incident_rate.txt b/tests/test_plan_refsols/technograph_monthly_incident_rate.txt index 9dc81f52d..8474f36a3 100644 --- a/tests/test_plan_refsols/technograph_monthly_incident_rate.txt +++ b/tests/test_plan_refsols/technograph_monthly_incident_rate.txt @@ -6,7 +6,7 @@ ROOT(columns=[('month', JOIN_STRINGS('-':string, year_ca_dt, LPAD(month_ca_dt, 2 SCAN(table=main.CALENDAR, columns={'ca_dt': ca_dt}) AGGREGATE(keys={'ca_dt': ca_dt}, aggregations={'n_rows': COUNT()}) JOIN(condition=t0.de_production_country_id == t1.co_id, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt}) - JOIN(condition=t0.calendar_day_1 == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'ca_dt': t0.ca_dt, 'de_production_country_id': t1.de_production_country_id}) + JOIN(condition=t0.calendar_day_1 == DATETIME(t1.de_purchase_ts, 'start of day':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt, 'de_production_country_id': t1.de_production_country_id}) JOIN(condition=t1.ca_dt >= DATETIME(t0.ca_dt, '-6 months':string), type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'ca_dt': t0.ca_dt, 'calendar_day_1': t1.ca_dt}) FILTER(condition=ISIN(YEAR(ca_dt), [2020, 2021]:array[unknown]), columns={'ca_dt': ca_dt}) SCAN(table=main.CALENDAR, columns={'ca_dt': ca_dt}) diff --git a/tests/test_plan_refsols/top_lineitems_info_2.txt b/tests/test_plan_refsols/top_lineitems_info_2.txt index aff71c57c..eaeeda877 100644 --- a/tests/test_plan_refsols/top_lineitems_info_2.txt +++ b/tests/test_plan_refsols/top_lineitems_info_2.txt @@ -1,9 +1,9 @@ ROOT(columns=[('order_key', l_orderkey), ('line_number', l_linenumber), ('part_size', p_size), ('supplier_nation', n_nationkey)], orderings=[(l_orderkey):asc_first, (l_linenumber):asc_first], limit=7:numeric) - JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.supplier_key_11 == t1.l_suppkey & t1.l_partkey == t0.p_partkey & t1.l_suppkey == t0.ps_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_linenumber': t1.l_linenumber, 'l_orderkey': t1.l_orderkey, 'n_nationkey': t0.n_nationkey, 'p_size': t0.p_size}) - JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_partkey': t1.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'supplier_key_11': t1.ps_suppkey}) - JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_suppkey': t0.ps_suppkey, 's_suppkey': t1.s_suppkey}) - JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_suppkey': t0.ps_suppkey}) - JOIN(condition=t0.p_partkey == t1.ps_partkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_ACCESS, columns={'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_suppkey': t1.ps_suppkey}) + JOIN(condition=t0.ps_partkey == t1.l_partkey & t0.supplier_key_11 == t1.l_suppkey & t1.l_partkey == t0.p_partkey & t1.l_suppkey == t0.ps_suppkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_linenumber': t1.l_linenumber, 'l_orderkey': t1.l_orderkey, 'n_nationkey': t0.n_nationkey, 'p_size': t0.p_size}) + JOIN(condition=t0.s_suppkey == t1.ps_suppkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_partkey': t1.ps_partkey, 'ps_suppkey': t0.ps_suppkey, 'supplier_key_11': t1.ps_suppkey}) + JOIN(condition=t0.n_nationkey == t1.s_nationkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t0.n_nationkey, 'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_suppkey': t0.ps_suppkey, 's_suppkey': t1.s_suppkey}) + JOIN(condition=True:bool, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'n_nationkey': t1.n_nationkey, 'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_suppkey': t0.ps_suppkey}) + JOIN(condition=t0.p_partkey == t1.ps_partkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_ACCESS, columns={'p_partkey': t0.p_partkey, 'p_size': t0.p_size, 'ps_suppkey': t1.ps_suppkey}) SCAN(table=tpch.PART, columns={'p_partkey': p_partkey, 'p_size': p_size}) SCAN(table=tpch.PARTSUPP, columns={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey}) SCAN(table=tpch.NATION, columns={'n_nationkey': n_nationkey}) diff --git a/tests/test_plan_refsols/tpch_q2.txt b/tests/test_plan_refsols/tpch_q2.txt index 5f3a777cd..047bd1b2f 100644 --- a/tests/test_plan_refsols/tpch_q2.txt +++ b/tests/test_plan_refsols/tpch_q2.txt @@ -1,7 +1,7 @@ ROOT(columns=[('S_ACCTBAL', s_acctbal), ('S_NAME', s_name), ('N_NAME', n_name), ('P_PARTKEY', p_partkey), ('P_MFGR', p_mfgr), ('S_ADDRESS', s_address), ('S_PHONE', s_phone), ('S_COMMENT', s_comment)], orderings=[(s_acctbal):desc_last, (n_name):asc_first, (s_name):asc_first, (p_partkey):asc_first], limit=10:numeric) FILTER(condition=RANKING(args=[], partition=[ps_partkey], order=[(ps_supplycost):asc_last], allow_ties=True) == 1:numeric, columns={'n_name': n_name, 'p_mfgr': p_mfgr, 'p_partkey': p_partkey, 's_acctbal': s_acctbal, 's_address': s_address, 's_comment': s_comment, 's_name': s_name, 's_phone': s_phone}) JOIN(condition=t0.ps_suppkey == t1.s_suppkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t1.n_name, 'p_mfgr': t0.p_mfgr, 'p_partkey': t0.p_partkey, 'ps_partkey': t0.ps_partkey, 'ps_supplycost': t0.ps_supplycost, 's_acctbal': t1.s_acctbal, 's_address': t1.s_address, 's_comment': t1.s_comment, 's_name': t1.s_name, 's_phone': t1.s_phone}) - JOIN(condition=t0.p_partkey == t1.ps_partkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'p_mfgr': t0.p_mfgr, 'p_partkey': t0.p_partkey, 'ps_partkey': t1.ps_partkey, 'ps_suppkey': t1.ps_suppkey, 'ps_supplycost': t1.ps_supplycost}) + JOIN(condition=t0.p_partkey == t1.ps_partkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'p_mfgr': t0.p_mfgr, 'p_partkey': t0.p_partkey, 'ps_partkey': t1.ps_partkey, 'ps_suppkey': t1.ps_suppkey, 'ps_supplycost': t1.ps_supplycost}) FILTER(condition=p_size == 15:numeric & ENDSWITH(p_type, 'BRASS':string), columns={'p_mfgr': p_mfgr, 'p_partkey': p_partkey}) SCAN(table=tpch.PART, columns={'p_mfgr': p_mfgr, 'p_partkey': p_partkey, 'p_size': p_size, 'p_type': p_type}) SCAN(table=tpch.PARTSUPP, columns={'ps_partkey': ps_partkey, 'ps_suppkey': ps_suppkey, 'ps_supplycost': ps_supplycost}) diff --git a/tests/test_plan_refsols/tpch_q21.txt b/tests/test_plan_refsols/tpch_q21.txt index e1b29a494..563763d12 100644 --- a/tests/test_plan_refsols/tpch_q21.txt +++ b/tests/test_plan_refsols/tpch_q21.txt @@ -8,13 +8,13 @@ ROOT(columns=[('S_NAME', anything_s_name), ('NUMWAIT', DEFAULT_TO(KEEP_IF(count_ JOIN(condition=t0.l_linenumber == t1.l_linenumber & t0.l_orderkey == t1.l_orderkey & t0.o_orderkey == t1.l_orderkey, type=ANTI, columns={'anything_l_suppkey': t0.anything_l_suppkey}) FILTER(condition=anything_o_orderstatus == 'F':string, columns={'anything_l_suppkey': anything_l_suppkey, 'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey, 'o_orderkey': o_orderkey}) AGGREGATE(keys={'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey, 'o_orderkey': o_orderkey}, aggregations={'anything_l_suppkey': ANYTHING(l_suppkey), 'anything_o_orderstatus': ANYTHING(o_orderstatus)}) - JOIN(condition=t1.l_suppkey != t0.l_suppkey & t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'l_suppkey': t0.l_suppkey, 'o_orderkey': t0.o_orderkey, 'o_orderstatus': t0.o_orderstatus}) + JOIN(condition=t1.l_suppkey != t0.l_suppkey & t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'l_suppkey': t0.l_suppkey, 'o_orderkey': t0.o_orderkey, 'o_orderstatus': t0.o_orderstatus}) JOIN(condition=t0.l_orderkey == t1.o_orderkey, type=INNER, cardinality=SINGULAR_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey, 'l_suppkey': t0.l_suppkey, 'o_orderkey': t1.o_orderkey, 'o_orderstatus': t1.o_orderstatus}) FILTER(condition=l_receiptdate > l_commitdate, columns={'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey, 'l_suppkey': l_suppkey}) SCAN(table=tpch.LINEITEM, columns={'l_commitdate': l_commitdate, 'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey, 'l_receiptdate': l_receiptdate, 'l_suppkey': l_suppkey}) SCAN(table=tpch.ORDERS, columns={'o_orderkey': o_orderkey, 'o_orderstatus': o_orderstatus}) SCAN(table=tpch.LINEITEM, columns={'l_orderkey': l_orderkey, 'l_suppkey': l_suppkey}) - JOIN(condition=t1.l_suppkey != t0.l_suppkey & t0.l_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey}) + JOIN(condition=t1.l_suppkey != t0.l_suppkey & t0.l_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_linenumber': t0.l_linenumber, 'l_orderkey': t0.l_orderkey}) FILTER(condition=l_receiptdate > l_commitdate, columns={'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey, 'l_suppkey': l_suppkey}) SCAN(table=tpch.LINEITEM, columns={'l_commitdate': l_commitdate, 'l_linenumber': l_linenumber, 'l_orderkey': l_orderkey, 'l_receiptdate': l_receiptdate, 'l_suppkey': l_suppkey}) FILTER(condition=l_receiptdate > l_commitdate, columns={'l_orderkey': l_orderkey, 'l_suppkey': l_suppkey}) diff --git a/tests/test_plan_refsols/tpch_q5.txt b/tests/test_plan_refsols/tpch_q5.txt index 6e4183624..cbd1080ac 100644 --- a/tests/test_plan_refsols/tpch_q5.txt +++ b/tests/test_plan_refsols/tpch_q5.txt @@ -1,9 +1,9 @@ ROOT(columns=[('N_NAME', anything_n_name), ('REVENUE', DEFAULT_TO(sum_value, 0:numeric))], orderings=[(DEFAULT_TO(sum_value, 0:numeric)):desc_last]) AGGREGATE(keys={'n_nationkey': n_nationkey}, aggregations={'anything_n_name': ANYTHING(n_name), 'sum_value': SUM(l_extendedprice * 1:numeric - l_discount)}) JOIN(condition=t0.l_suppkey == t1.s_suppkey & t1.n_name == t0.n_name, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t0.l_discount, 'l_extendedprice': t0.l_extendedprice, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=SINGULAR_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) - JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) - JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.o_orderkey == t1.l_orderkey, type=INNER, cardinality=PLURAL_ACCESS, reverse_cardinality=PLURAL_FILTER, columns={'l_discount': t1.l_discount, 'l_extendedprice': t1.l_extendedprice, 'l_suppkey': t1.l_suppkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) + JOIN(condition=t0.c_custkey == t1.o_custkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey, 'o_orderkey': t1.o_orderkey}) + JOIN(condition=t0.n_nationkey == t1.c_nationkey, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'c_custkey': t1.c_custkey, 'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) JOIN(condition=t0.n_regionkey == t1.r_regionkey, type=INNER, cardinality=SINGULAR_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'n_name': t0.n_name, 'n_nationkey': t0.n_nationkey}) SCAN(table=tpch.NATION, columns={'n_name': n_name, 'n_nationkey': n_nationkey, 'n_regionkey': n_regionkey}) FILTER(condition=r_name == 'ASIA':string, columns={'r_regionkey': r_regionkey}) diff --git a/tests/test_plan_refsols/wdi_albania_footnotes_1978.txt b/tests/test_plan_refsols/wdi_albania_footnotes_1978.txt index dd07a0abe..73c469be9 100644 --- a/tests/test_plan_refsols/wdi_albania_footnotes_1978.txt +++ b/tests/test_plan_refsols/wdi_albania_footnotes_1978.txt @@ -1,5 +1,5 @@ ROOT(columns=[('footnote_description', Description)], orderings=[]) - JOIN(condition=t0.CountryCode == t1.Countrycode, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=SINGULAR_FILTER, columns={'Description': t1.Description}) + JOIN(condition=t0.CountryCode == t1.Countrycode, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_FILTER, columns={'Description': t1.Description}) FILTER(condition=ShortName == 'Albania':string, columns={'CountryCode': CountryCode}) SCAN(table=main.Country, columns={'CountryCode': CountryCode, 'ShortName': ShortName}) FILTER(condition=Year == 'YR2012':string, columns={'Countrycode': Countrycode, 'Description': Description}) diff --git a/tests/test_plan_refsols/window_sliding_frame_relsize.txt b/tests/test_plan_refsols/window_sliding_frame_relsize.txt index 63846c131..40c172ad2 100644 --- a/tests/test_plan_refsols/window_sliding_frame_relsize.txt +++ b/tests/test_plan_refsols/window_sliding_frame_relsize.txt @@ -1,2 +1,4 @@ ROOT(columns=[('transaction_id', sbTxId), ('w1', RELSIZE(args=[], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(-4, 0))), ('w2', RELSIZE(args=[], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(-4, 0))), ('w3', RELSIZE(args=[], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(0, None))), ('w4', RELSIZE(args=[], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(0, None))), ('w5', RELSIZE(args=[], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(None, -1))), ('w6', RELSIZE(args=[], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(None, -1))), ('w7', RELSIZE(args=[], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(-3, 5))), ('w8', RELSIZE(args=[], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(-3, 5)))], orderings=[(sbTxDateTime):asc_first], limit=8:numeric) - SCAN(table=main.sbTransaction, columns={'sbTxCustId': sbTxCustId, 'sbTxDateTime': sbTxDateTime, 'sbTxId': sbTxId}) + JOIN(condition=t0.sbCustId == t1.sbTxCustId, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'sbTxCustId': t1.sbTxCustId, 'sbTxDateTime': t1.sbTxDateTime, 'sbTxId': t1.sbTxId}) + SCAN(table=main.sbCustomer, columns={'sbCustId': sbCustId}) + SCAN(table=main.sbTransaction, columns={'sbTxCustId': sbTxCustId, 'sbTxDateTime': sbTxDateTime, 'sbTxId': sbTxId}) diff --git a/tests/test_plan_refsols/window_sliding_frame_relsum.txt b/tests/test_plan_refsols/window_sliding_frame_relsum.txt index 967cacd49..303a5e496 100644 --- a/tests/test_plan_refsols/window_sliding_frame_relsum.txt +++ b/tests/test_plan_refsols/window_sliding_frame_relsum.txt @@ -1,2 +1,4 @@ ROOT(columns=[('transaction_id', sbTxId), ('w1', RELSUM(args=[sbTxShares], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(0, 4))), ('w2', RELSUM(args=[sbTxShares], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(0, 4))), ('w3', RELSUM(args=[sbTxShares], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(0, None))), ('w4', RELSUM(args=[sbTxShares], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(0, None))), ('w5', RELSUM(args=[sbTxShares], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(None, 1))), ('w6', RELSUM(args=[sbTxShares], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(None, 1))), ('w7', RELSUM(args=[sbTxShares], partition=[], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(-5, -1))), ('w8', RELSUM(args=[sbTxShares], partition=[sbTxCustId], order=[(sbTxDateTime):asc_last, (sbTxId):asc_last], frame=(-5, -1)))], orderings=[(sbTxDateTime):asc_first], limit=8:numeric) - SCAN(table=main.sbTransaction, columns={'sbTxCustId': sbTxCustId, 'sbTxDateTime': sbTxDateTime, 'sbTxId': sbTxId, 'sbTxShares': sbTxShares}) + JOIN(condition=t0.sbCustId == t1.sbTxCustId, type=INNER, cardinality=PLURAL_FILTER, reverse_cardinality=PLURAL_ACCESS, columns={'sbTxCustId': t1.sbTxCustId, 'sbTxDateTime': t1.sbTxDateTime, 'sbTxId': t1.sbTxId, 'sbTxShares': t1.sbTxShares}) + SCAN(table=main.sbCustomer, columns={'sbCustId': sbCustId}) + SCAN(table=main.sbTransaction, columns={'sbTxCustId': sbTxCustId, 'sbTxDateTime': sbTxDateTime, 'sbTxId': sbTxId, 'sbTxShares': sbTxShares}) diff --git a/tests/test_sql_refsols/window_functions_ansi.sql b/tests/test_sql_refsols/window_functions_ansi.sql index 10721b5f4..4b1b37292 100644 --- a/tests/test_sql_refsols/window_functions_ansi.sql +++ b/tests/test_sql_refsols/window_functions_ansi.sql @@ -8,6 +8,8 @@ SELECT customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal NULLS LAST ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, customer.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM tpch.nation AS nation +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey JOIN tpch.customer AS customer ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_functions_mysql.sql b/tests/test_sql_refsols/window_functions_mysql.sql index f51f418ee..62661daa7 100644 --- a/tests/test_sql_refsols/window_functions_mysql.sql +++ b/tests/test_sql_refsols/window_functions_mysql.sql @@ -8,6 +8,8 @@ SELECT CUSTOMER.c_acctbal / AVG(CUSTOMER.c_acctbal) OVER (ORDER BY CUSTOMER.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, CUSTOMER.c_acctbal / COUNT(CASE WHEN CUSTOMER.c_acctbal > 0.0 THEN CUSTOMER.c_acctbal ELSE NULL END) OVER () AS relcount_value, CUSTOMER.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM tpch.NATION AS NATION +FROM tpch.REGION AS REGION +JOIN tpch.NATION AS NATION + ON NATION.n_regionkey = REGION.r_regionkey JOIN tpch.CUSTOMER AS CUSTOMER ON CUSTOMER.c_nationkey = NATION.n_nationkey diff --git a/tests/test_sql_refsols/window_functions_postgres.sql b/tests/test_sql_refsols/window_functions_postgres.sql index a19298cc5..1dc35319b 100644 --- a/tests/test_sql_refsols/window_functions_postgres.sql +++ b/tests/test_sql_refsols/window_functions_postgres.sql @@ -8,6 +8,8 @@ SELECT CAST(customer.c_acctbal AS DOUBLE PRECISION) / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, CAST(customer.c_acctbal AS DOUBLE PRECISION) / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, CAST(customer.c_acctbal AS DOUBLE PRECISION) / COUNT(*) OVER () AS relsize_value -FROM tpch.nation AS nation +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey JOIN tpch.customer AS customer ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_functions_snowflake.sql b/tests/test_sql_refsols/window_functions_snowflake.sql index 98abf14a1..63535e1b4 100644 --- a/tests/test_sql_refsols/window_functions_snowflake.sql +++ b/tests/test_sql_refsols/window_functions_snowflake.sql @@ -8,6 +8,8 @@ SELECT customer.c_acctbal / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, customer.c_acctbal / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, customer.c_acctbal / COUNT(*) OVER () AS relsize_value -FROM tpch.nation AS nation +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey JOIN tpch.customer AS customer ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_functions_sqlite.sql b/tests/test_sql_refsols/window_functions_sqlite.sql index c60adccfd..7c648b070 100644 --- a/tests/test_sql_refsols/window_functions_sqlite.sql +++ b/tests/test_sql_refsols/window_functions_sqlite.sql @@ -8,6 +8,8 @@ SELECT CAST(customer.c_acctbal AS REAL) / AVG(customer.c_acctbal) OVER (ORDER BY customer.c_acctbal ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS relavg_value, CAST(customer.c_acctbal AS REAL) / COUNT(CASE WHEN customer.c_acctbal > 0.0 THEN customer.c_acctbal ELSE NULL END) OVER () AS relcount_value, CAST(customer.c_acctbal AS REAL) / COUNT(*) OVER () AS relsize_value -FROM tpch.nation AS nation +FROM tpch.region AS region +JOIN tpch.nation AS nation + ON nation.n_regionkey = region.r_regionkey JOIN tpch.customer AS customer ON customer.c_nationkey = nation.n_nationkey diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_ansi.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_ansi.sql index 4c8a3bb8b..093cb0ab5 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_ansi.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_ansi.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime + sbtransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql index 7fb2f5a2f..e3ecc2587 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_mysql.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbTransaction + sbTransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbCustomer AS sbCustomer +JOIN main.sbTransaction AS sbTransaction + ON sbCustomer.sbcustid = sbTransaction.sbtxcustid ORDER BY - sbtxdatetime + sbTransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_postgres.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_postgres.sql index 3a3e94a30..842523261 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_postgres.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_postgres.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql index 3a3e94a30..842523261 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_snowflake.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsize_sqlite.sql b/tests/test_sql_refsols/window_sliding_frame_relsize_sqlite.sql index a7babc7d7..57e3d18ed 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsize_sqlite.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsize_sqlite.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, - COUNT(*) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, - COUNT(*) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w1, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS w2, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w5, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS w6, + COUNT(*) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w7, + COUNT(*) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 3 PRECEDING AND 5 FOLLOWING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime + sbtransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_ansi.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_ansi.sql index 2db332255..1c4e4da48 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_ansi.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_ansi.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime NULLS LAST, sbtxid NULLS LAST ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime NULLS LAST, sbtransaction.sbtxid NULLS LAST ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime + sbtransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql index e6237d92e..ff2f29e69 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_mysql.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbTransaction + sbTransaction.sbtxid AS transaction_id, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbTransaction.sbtxshares) OVER (ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbTransaction.sbtxshares) OVER (PARTITION BY sbTransaction.sbtxcustid ORDER BY sbTransaction.sbtxdatetime, sbTransaction.sbtxid COLLATE utf8mb4_bin ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbCustomer AS sbCustomer +JOIN main.sbTransaction AS sbTransaction + ON sbCustomer.sbcustid = sbTransaction.sbtxcustid ORDER BY - sbtxdatetime + sbTransaction.sbtxdatetime LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_postgres.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_postgres.sql index cc7d2b368..449e8361d 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_postgres.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_postgres.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql index cc7d2b368..449e8361d 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_snowflake.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime NULLS FIRST + sbtransaction.sbtxdatetime NULLS FIRST LIMIT 8 diff --git a/tests/test_sql_refsols/window_sliding_frame_relsum_sqlite.sql b/tests/test_sql_refsols/window_sliding_frame_relsum_sqlite.sql index ed9b5c93b..af2442b96 100644 --- a/tests/test_sql_refsols/window_sliding_frame_relsum_sqlite.sql +++ b/tests/test_sql_refsols/window_sliding_frame_relsum_sqlite.sql @@ -1,14 +1,16 @@ SELECT - sbtxid AS transaction_id, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, - SUM(sbtxshares) OVER (ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, - SUM(sbtxshares) OVER (PARTITION BY sbtxcustid ORDER BY sbtxdatetime, sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 -FROM main.sbtransaction + sbtransaction.sbtxid AS transaction_id, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w1, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND 4 FOLLOWING) AS w2, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w3, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS w4, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w5, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN UNBOUNDED PRECEDING AND 1 FOLLOWING) AS w6, + SUM(sbtransaction.sbtxshares) OVER (ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w7, + SUM(sbtransaction.sbtxshares) OVER (PARTITION BY sbtransaction.sbtxcustid ORDER BY sbtransaction.sbtxdatetime, sbtransaction.sbtxid ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS w8 +FROM main.sbcustomer AS sbcustomer +JOIN main.sbtransaction AS sbtransaction + ON sbcustomer.sbcustid = sbtransaction.sbtxcustid ORDER BY - sbtxdatetime + sbtransaction.sbtxdatetime LIMIT 8