From ccb96d1393ae2c16620ea8e8dc749d9642b94e9b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 20 Feb 2024 10:38:01 +0100 Subject: Merging upstream version 21.1.2. Signed-off-by: Daniel Baumann --- tests/fixtures/optimizer/optimizer.sql | 76 +++++++++++++++++++++ tests/fixtures/optimizer/qualify_columns.sql | 9 ++- tests/fixtures/optimizer/tpc-ds/call_center.csv.gz | Bin 0 -> 421 bytes .../fixtures/optimizer/tpc-ds/catalog_page.csv.gz | Bin 0 -> 463753 bytes .../optimizer/tpc-ds/catalog_returns.csv.gz | Bin 0 -> 157676 bytes .../fixtures/optimizer/tpc-ds/catalog_sales.csv.gz | Bin 0 -> 1803802 bytes tests/fixtures/optimizer/tpc-ds/customer.csv.gz | Bin 0 -> 107615 bytes .../optimizer/tpc-ds/customer_address.csv.gz | Bin 0 -> 28336 bytes .../optimizer/tpc-ds/customer_demographics.csv.gz | Bin 0 -> 126457 bytes tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz | Bin 0 -> 1531293 bytes .../optimizer/tpc-ds/household_demographics.csv.gz | Bin 0 -> 23425 bytes tests/fixtures/optimizer/tpc-ds/income_band.csv.gz | Bin 0 -> 188 bytes tests/fixtures/optimizer/tpc-ds/inventory.csv.gz | Bin 0 -> 206882 bytes tests/fixtures/optimizer/tpc-ds/item.csv.gz | Bin 0 -> 31392 bytes tests/fixtures/optimizer/tpc-ds/promotion.csv.gz | Bin 0 -> 497 bytes tests/fixtures/optimizer/tpc-ds/reason.csv.gz | Bin 0 -> 81 bytes tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz | Bin 0 -> 617 bytes tests/fixtures/optimizer/tpc-ds/store.csv.gz | Bin 0 -> 396 bytes .../fixtures/optimizer/tpc-ds/store_returns.csv.gz | Bin 0 -> 254858 bytes tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz | Bin 0 -> 2417178 bytes tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz | Bin 0 -> 668972 bytes tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz | Bin 0 -> 218 bytes tests/fixtures/optimizer/tpc-ds/web_page.csv.gz | Bin 0 -> 208 bytes tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz | Bin 0 -> 67542 bytes tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz | Bin 0 -> 864379 bytes tests/fixtures/optimizer/tpc-ds/web_site.csv.gz | Bin 0 -> 404 bytes tests/fixtures/optimizer/unnest_subqueries.sql | 2 +- 27 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 tests/fixtures/optimizer/tpc-ds/call_center.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/customer.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/income_band.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/inventory.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/item.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/promotion.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/reason.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/store.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/web_page.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz create mode 100644 tests/fixtures/optimizer/tpc-ds/web_site.csv.gz (limited to 'tests/fixtures/optimizer') diff --git a/tests/fixtures/optimizer/optimizer.sql b/tests/fixtures/optimizer/optimizer.sql index 8f4a551..a33c81b 100644 --- a/tests/fixtures/optimizer/optimizer.sql +++ b/tests/fixtures/optimizer/optimizer.sql @@ -1311,3 +1311,79 @@ LEFT JOIN "_u_0" AS "_u_0" ON "C"."EMAIL_DOMAIN" = "_u_0"."DOMAIN" WHERE NOT "_u_0"."DOMAIN" IS NULL; + +# title: decorrelate subquery and transpile ArrayAny correctly when generating spark +# execute: false +# dialect: spark +SELECT + COUNT(DISTINCT cs1.cs_order_number) AS `order count`, + SUM(cs1.cs_ext_ship_cost) AS `total shipping cost`, + SUM(cs1.cs_net_profit) AS `total net profit` +FROM catalog_sales cs1, date_dim, customer_address, call_center +WHERE + date_dim.d_date BETWEEN '2002-02-01' AND (CAST('2002-02-01' AS DATE) + INTERVAL 60 days) + AND cs1.cs_ship_date_sk = date_dim.d_date_sk + AND cs1.cs_ship_addr_sk = customer_address.ca_address_sk + AND customer_address.ca_state = 'GA' + AND cs1.cs_call_center_sk = call_center.cc_call_center_sk + AND call_center.cc_county IN ( + 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County' + ) + AND EXISTS( + SELECT * + FROM catalog_sales cs2 + WHERE cs1.cs_order_number = cs2.cs_order_number + AND cs1.cs_warehouse_sk <> cs2.cs_warehouse_sk) + AND NOT EXISTS( + SELECT * + FROM catalog_returns cr1 + WHERE cs1.cs_order_number = cr1.cr_order_number + ) + ORDER BY COUNT(DISTINCT cs1.cs_order_number + ) +LIMIT 100; +WITH `_u_0` AS ( + SELECT + `cs2`.`cs_order_number` AS `_u_1`, + COLLECT_LIST(`cs2`.`cs_warehouse_sk`) AS `_u_2` + FROM `catalog_sales` AS `cs2` + GROUP BY + `cs2`.`cs_order_number` +), `_u_3` AS ( + SELECT + `cr1`.`cr_order_number` AS `_u_4` + FROM `catalog_returns` AS `cr1` + GROUP BY + `cr1`.`cr_order_number` +) +SELECT + COUNT(DISTINCT `cs1`.`cs_order_number`) AS `order count`, + SUM(`cs1`.`cs_ext_ship_cost`) AS `total shipping cost`, + SUM(`cs1`.`cs_net_profit`) AS `total net profit` +FROM `catalog_sales` AS `cs1` +LEFT JOIN `_u_0` AS `_u_0` + ON `_u_0`.`_u_1` = `cs1`.`cs_order_number` +LEFT JOIN `_u_3` AS `_u_3` + ON `_u_3`.`_u_4` = `cs1`.`cs_order_number` +JOIN `call_center` AS `call_center` + ON `call_center`.`cc_call_center_sk` = `cs1`.`cs_call_center_sk` + AND `call_center`.`cc_county` IN ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County') +JOIN `customer_address` AS `customer_address` + ON `cs1`.`cs_ship_addr_sk` = `customer_address`.`ca_address_sk` + AND `customer_address`.`ca_state` = 'GA' +JOIN `date_dim` AS `date_dim` + ON `cs1`.`cs_ship_date_sk` = `date_dim`.`d_date_sk` + AND `date_dim`.`d_date` <= ( + CAST(CAST('2002-02-01' AS DATE) AS TIMESTAMP) + INTERVAL '60' DAYS + ) + AND `date_dim`.`d_date` >= '2002-02-01' +WHERE + `_u_3`.`_u_4` IS NULL + AND NOT `_u_0`.`_u_1` IS NULL + AND ( + SIZE(`_u_0`.`_u_2`) = 0 + OR SIZE(FILTER(`_u_0`.`_u_2`, `_x` -> `cs1`.`cs_warehouse_sk` <> `_x`)) <> 0 + ) +ORDER BY + COUNT(DISTINCT `cs1`.`cs_order_number`) +LIMIT 100; diff --git a/tests/fixtures/optimizer/qualify_columns.sql b/tests/fixtures/optimizer/qualify_columns.sql index 4fdf33b..df8c1a5 100644 --- a/tests/fixtures/optimizer/qualify_columns.sql +++ b/tests/fixtures/optimizer/qualify_columns.sql @@ -354,10 +354,17 @@ SELECT x.b AS b, y.b AS b, y.c AS c FROM x AS x, y AS y; SELECT * EXCEPT(a) FROM x; SELECT x.b AS b FROM x AS x; +# execute: false +SELECT * EXCEPT(x.a) FROM x AS x; +SELECT x.b AS b FROM x AS x; + # execute: false # note: this query would fail in the engine level because there are 0 selected columns SELECT * EXCEPT (a, b) FROM x; -SELECT * EXCEPT (x.a, x.b) FROM x AS x; +SELECT * EXCEPT (a, b) FROM x AS x; + +SELECT x.a, * EXCEPT (a) FROM x AS x LEFT JOIN x AS y USING (a); +SELECT x.a AS a, x.b AS b, y.b AS b FROM x AS x LEFT JOIN x AS y ON x.a = y.a; SELECT COALESCE(CAST(t1.a AS VARCHAR), '') AS a, t2.* EXCEPT (a) FROM x AS t1, x AS t2; SELECT COALESCE(CAST(t1.a AS VARCHAR), '') AS a, t2.b AS b FROM x AS t1, x AS t2; diff --git a/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz b/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz new file mode 100644 index 0000000..f36e23b Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz b/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz new file mode 100644 index 0000000..702242c Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz b/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz new file mode 100644 index 0000000..e87a0ec Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz b/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz new file mode 100644 index 0000000..a40b0da Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/customer.csv.gz b/tests/fixtures/optimizer/tpc-ds/customer.csv.gz new file mode 100644 index 0000000..f4af4f7 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/customer.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz b/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz new file mode 100644 index 0000000..8698e39 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz b/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz new file mode 100644 index 0000000..c4b7b68 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz b/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz new file mode 100644 index 0000000..35be08f Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz b/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz new file mode 100644 index 0000000..b8addb7 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz b/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz new file mode 100644 index 0000000..d34d870 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz b/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz new file mode 100644 index 0000000..c6f0d47 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/item.csv.gz b/tests/fixtures/optimizer/tpc-ds/item.csv.gz new file mode 100644 index 0000000..4a316cd Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/item.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz b/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz new file mode 100644 index 0000000..339666c Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/reason.csv.gz b/tests/fixtures/optimizer/tpc-ds/reason.csv.gz new file mode 100644 index 0000000..0094849 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/reason.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz b/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz new file mode 100644 index 0000000..8dec386 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/store.csv.gz b/tests/fixtures/optimizer/tpc-ds/store.csv.gz new file mode 100644 index 0000000..b4e8de0 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/store.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz b/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz new file mode 100644 index 0000000..8469492 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz b/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz new file mode 100644 index 0000000..3dd22e1 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz b/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz new file mode 100644 index 0000000..bf4fcaf Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz b/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz new file mode 100644 index 0000000..1dd95a0 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz b/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz new file mode 100644 index 0000000..10a06a2 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz b/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz new file mode 100644 index 0000000..811e079 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz b/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz new file mode 100644 index 0000000..b1ac3b8 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz differ diff --git a/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz b/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz new file mode 100644 index 0000000..ccedce2 Binary files /dev/null and b/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz differ diff --git a/tests/fixtures/optimizer/unnest_subqueries.sql b/tests/fixtures/optimizer/unnest_subqueries.sql index 3d1e7ec..3caeef6 100644 --- a/tests/fixtures/optimizer/unnest_subqueries.sql +++ b/tests/fixtures/optimizer/unnest_subqueries.sql @@ -166,7 +166,7 @@ WHERE AND NOT x.a = _u_9.a AND ARRAY_ANY(_u_10.a, _x -> _x = x.a) AND ( - x.a < _u_12.a AND ARRAY_ANY(_u_12._u_14, "_x" -> _x <> x.d) + x.a < _u_12.a AND ARRAY_ANY(_u_12._u_14, _x -> _x <> x.d) ) AND NOT _u_15.a IS NULL AND x.a IN ( -- cgit v1.2.3