diff --git a/tests/unit/core/compile/sqlglot/tpch/conftest.py b/tests/unit/core/compile/sqlglot/tpch/conftest.py new file mode 100644 index 00000000000..c42f9a8ddf6 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/conftest.py @@ -0,0 +1,148 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import datetime +import unittest.mock as mock + +from google.cloud import bigquery +import pytest + +import bigframes.testing.mocks as mocks + +freezegun = pytest.importorskip("freezegun") + +TPCH_SCHEMAS = { + "LINEITEM": [ + bigquery.SchemaField("L_ORDERKEY", "INTEGER"), + bigquery.SchemaField("L_PARTKEY", "INTEGER"), + bigquery.SchemaField("L_SUPPKEY", "INTEGER"), + bigquery.SchemaField("L_LINENUMBER", "INTEGER"), + bigquery.SchemaField("L_QUANTITY", "FLOAT"), + bigquery.SchemaField("L_EXTENDEDPRICE", "FLOAT"), + bigquery.SchemaField("L_DISCOUNT", "FLOAT"), + bigquery.SchemaField("L_TAX", "FLOAT"), + bigquery.SchemaField("L_RETURNFLAG", "STRING"), + bigquery.SchemaField("L_LINESTATUS", "STRING"), + bigquery.SchemaField("L_SHIPDATE", "DATE"), + bigquery.SchemaField("L_COMMITDATE", "DATE"), + bigquery.SchemaField("L_RECEIPTDATE", "DATE"), + bigquery.SchemaField("L_SHIPINSTRUCT", "STRING"), + bigquery.SchemaField("L_SHIPMODE", "STRING"), + bigquery.SchemaField("L_COMMENT", "STRING"), + ], + "ORDERS": [ + bigquery.SchemaField("O_ORDERKEY", "INTEGER"), + bigquery.SchemaField("O_CUSTKEY", "INTEGER"), + bigquery.SchemaField("O_ORDERSTATUS", "STRING"), + bigquery.SchemaField("O_TOTALPRICE", "FLOAT"), + bigquery.SchemaField("O_ORDERDATE", "DATE"), + bigquery.SchemaField("O_ORDERPRIORITY", "STRING"), + bigquery.SchemaField("O_CLERK", "STRING"), + bigquery.SchemaField("O_SHIPPRIORITY", "INTEGER"), + bigquery.SchemaField("O_COMMENT", "STRING"), + ], + "PART": [ + bigquery.SchemaField("P_PARTKEY", "INTEGER"), + bigquery.SchemaField("P_NAME", "STRING"), + bigquery.SchemaField("P_MFGR", "STRING"), + bigquery.SchemaField("P_BRAND", "STRING"), + bigquery.SchemaField("P_TYPE", "STRING"), + bigquery.SchemaField("P_SIZE", "INTEGER"), + bigquery.SchemaField("P_CONTAINER", "STRING"), + bigquery.SchemaField("P_RETAILPRICE", "FLOAT"), + bigquery.SchemaField("P_COMMENT", "STRING"), + ], + "SUPPLIER": [ + bigquery.SchemaField("S_SUPPKEY", "INTEGER"), + bigquery.SchemaField("S_NAME", "STRING"), + bigquery.SchemaField("S_ADDRESS", "STRING"), + bigquery.SchemaField("S_NATIONKEY", "INTEGER"), + bigquery.SchemaField("S_PHONE", "STRING"), + bigquery.SchemaField("S_ACCTBAL", "FLOAT"), + bigquery.SchemaField("S_COMMENT", "STRING"), + ], + "PARTSUPP": [ + bigquery.SchemaField("PS_PARTKEY", "INTEGER"), + bigquery.SchemaField("PS_SUPPKEY", "INTEGER"), + bigquery.SchemaField("PS_AVAILQTY", "INTEGER"), + bigquery.SchemaField("PS_SUPPLYCOST", "FLOAT"), + bigquery.SchemaField("PS_COMMENT", "STRING"), + ], + "CUSTOMER": [ + bigquery.SchemaField("C_CUSTKEY", "INTEGER"), + bigquery.SchemaField("C_NAME", "STRING"), + bigquery.SchemaField("C_ADDRESS", "STRING"), + bigquery.SchemaField("C_NATIONKEY", "INTEGER"), + bigquery.SchemaField("C_PHONE", "STRING"), + bigquery.SchemaField("C_ACCTBAL", "FLOAT"), + bigquery.SchemaField("C_MKTSEGMENT", "STRING"), + bigquery.SchemaField("C_COMMENT", "STRING"), + ], + "NATION": [ + bigquery.SchemaField("N_NATIONKEY", "INTEGER"), + bigquery.SchemaField("N_NAME", "STRING"), + bigquery.SchemaField("N_REGIONKEY", "INTEGER"), + bigquery.SchemaField("N_COMMENT", "STRING"), + ], + "REGION": [ + bigquery.SchemaField("R_REGIONKEY", "INTEGER"), + bigquery.SchemaField("R_NAME", "STRING"), + bigquery.SchemaField("R_COMMENT", "STRING"), + ], +} + + +@pytest.fixture(scope="session") +def tpch_session(): + from bigframes.testing import compiler_session + + anonymous_dataset = bigquery.DatasetReference.from_string("bigframes-dev.tpch") + location = "us-central1" + + with freezegun.freeze_time("2026-03-10 18:00:00"): + session = mocks.create_bigquery_session( + anonymous_dataset=anonymous_dataset, + location=location, + ) + + def get_table_mock(table_ref): + if isinstance(table_ref, str): + table_ref = bigquery.TableReference.from_string(table_ref) + + table_id = table_ref.table_id + schema = TPCH_SCHEMAS.get(table_id, []) + + table = mock.create_autospec(bigquery.Table, instance=True) + table._properties = {} + # mocks.create_bigquery_session's CURRENT_TIMESTAMP() returns offset-naive datetime.now() + # So we should also use offset-naive here to avoid comparison errors. + now = datetime.datetime.now() + type(table).schema = mock.PropertyMock(return_value=schema) + type(table).project = table_ref.project + type(table).dataset_id = table_ref.dataset_id + type(table).table_id = table_id + type(table).num_rows = mock.PropertyMock(return_value=1000000) + type(table).num_bytes = mock.PropertyMock(return_value=1000000) + type(table).location = mock.PropertyMock(return_value=location) + type(table).table_type = mock.PropertyMock(return_value="TABLE") + type(table).created = mock.PropertyMock(return_value=now) + type(table).modified = mock.PropertyMock(return_value=now) + type(table).range_partitioning = mock.PropertyMock(return_value=None) + type(table).time_partitioning = mock.PropertyMock(return_value=None) + type(table).clustering_fields = mock.PropertyMock(return_value=None) + return table + + session.bqclient.get_table.side_effect = get_table_mock + session._executor = compiler_session.SQLCompilerExecutor() + return session diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/1/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/1/out.sql new file mode 100644 index 00000000000..1afccf820c1 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/1/out.sql @@ -0,0 +1,77 @@ +WITH `bfcte_0` AS ( + SELECT + `L_QUANTITY`, + `L_EXTENDEDPRICE`, + `L_DISCOUNT`, + `L_TAX`, + `L_RETURNFLAG`, + `L_LINESTATUS`, + `L_SHIPDATE`, + `L_QUANTITY` AS `bfcol_7`, + `L_EXTENDEDPRICE` AS `bfcol_8`, + `L_DISCOUNT` AS `bfcol_9`, + `L_TAX` AS `bfcol_10`, + `L_RETURNFLAG` AS `bfcol_11`, + `L_LINESTATUS` AS `bfcol_12`, + `L_SHIPDATE` <= CAST('1998-09-02' AS DATE) AS `bfcol_13`, + `L_QUANTITY` AS `bfcol_27`, + `L_EXTENDEDPRICE` AS `bfcol_28`, + `L_DISCOUNT` AS `bfcol_29`, + `L_TAX` AS `bfcol_30`, + `L_RETURNFLAG` AS `bfcol_31`, + `L_LINESTATUS` AS `bfcol_32`, + `L_EXTENDEDPRICE` * ( + 1.0 - `L_DISCOUNT` + ) AS `bfcol_33`, + `L_QUANTITY` AS `bfcol_41`, + `L_EXTENDEDPRICE` AS `bfcol_42`, + `L_DISCOUNT` AS `bfcol_43`, + `L_RETURNFLAG` AS `bfcol_44`, + `L_LINESTATUS` AS `bfcol_45`, + `L_EXTENDEDPRICE` * ( + 1.0 - `L_DISCOUNT` + ) AS `bfcol_46`, + ( + `L_EXTENDEDPRICE` * ( + 1.0 - `L_DISCOUNT` + ) + ) * ( + 1.0 + `L_TAX` + ) AS `bfcol_47` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `L_SHIPDATE` <= CAST('1998-09-02' AS DATE) +), `bfcte_1` AS ( + SELECT + `bfcol_44`, + `bfcol_45`, + COALESCE(SUM(`bfcol_41`), 0) AS `bfcol_55`, + COALESCE(SUM(`bfcol_42`), 0) AS `bfcol_56`, + COALESCE(SUM(`bfcol_46`), 0) AS `bfcol_57`, + COALESCE(SUM(`bfcol_47`), 0) AS `bfcol_58`, + AVG(`bfcol_41`) AS `bfcol_59`, + AVG(`bfcol_42`) AS `bfcol_60`, + AVG(`bfcol_43`) AS `bfcol_61`, + COUNT(`bfcol_41`) AS `bfcol_62` + FROM `bfcte_0` + WHERE + NOT `bfcol_44` IS NULL AND NOT `bfcol_45` IS NULL + GROUP BY + `bfcol_44`, + `bfcol_45` +) +SELECT + `bfcol_44` AS `L_RETURNFLAG`, + `bfcol_45` AS `L_LINESTATUS`, + `bfcol_55` AS `SUM_QTY`, + `bfcol_56` AS `SUM_BASE_PRICE`, + `bfcol_57` AS `SUM_DISC_PRICE`, + `bfcol_58` AS `SUM_CHARGE`, + `bfcol_59` AS `AVG_QTY`, + `bfcol_60` AS `AVG_PRICE`, + `bfcol_61` AS `AVG_DISC`, + `bfcol_62` AS `COUNT_ORDER` +FROM `bfcte_1` +ORDER BY + `bfcol_44` ASC NULLS LAST, + `bfcol_45` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/10/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/10/out.sql new file mode 100644 index 00000000000..8362d3afca1 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/10/out.sql @@ -0,0 +1,171 @@ +WITH `bfcte_0` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_0`, + `N_NAME` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_2`, + `L_EXTENDEDPRICE` AS `bfcol_3`, + `L_DISCOUNT` AS `bfcol_4`, + `L_RETURNFLAG` AS `bfcol_5` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_6`, + `O_CUSTKEY` AS `bfcol_7`, + `O_ORDERDATE` AS `bfcol_8` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_9`, + `C_NAME` AS `bfcol_10`, + `C_ADDRESS` AS `bfcol_11`, + `C_NATIONKEY` AS `bfcol_12`, + `C_PHONE` AS `bfcol_13`, + `C_ACCTBAL` AS `bfcol_14`, + `C_COMMENT` AS `bfcol_15` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `bfcol_9` AS `bfcol_16`, + `bfcol_10` AS `bfcol_17`, + `bfcol_11` AS `bfcol_18`, + `bfcol_12` AS `bfcol_19`, + `bfcol_13` AS `bfcol_20`, + `bfcol_14` AS `bfcol_21`, + `bfcol_15` AS `bfcol_22`, + `bfcol_6` AS `bfcol_23`, + `bfcol_8` AS `bfcol_24` + FROM `bfcte_3` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_9`, 0) = COALESCE(`bfcol_7`, 0) + AND COALESCE(`bfcol_9`, 1) = COALESCE(`bfcol_7`, 1) +), `bfcte_5` AS ( + SELECT + `bfcol_16` AS `bfcol_25`, + `bfcol_17` AS `bfcol_26`, + `bfcol_18` AS `bfcol_27`, + `bfcol_19` AS `bfcol_28`, + `bfcol_20` AS `bfcol_29`, + `bfcol_21` AS `bfcol_30`, + `bfcol_22` AS `bfcol_31`, + `bfcol_24` AS `bfcol_32`, + `bfcol_3` AS `bfcol_33`, + `bfcol_4` AS `bfcol_34`, + `bfcol_5` AS `bfcol_35` + FROM `bfcte_4` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_23`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_23`, 1) = COALESCE(`bfcol_2`, 1) +), `bfcte_6` AS ( + SELECT + `bfcol_25`, + `bfcol_26`, + `bfcol_27`, + `bfcol_28`, + `bfcol_29`, + `bfcol_30`, + `bfcol_31`, + `bfcol_32`, + `bfcol_33`, + `bfcol_34`, + `bfcol_35`, + `bfcol_0`, + `bfcol_1`, + `bfcol_25` AS `bfcol_47`, + `bfcol_26` AS `bfcol_48`, + `bfcol_27` AS `bfcol_49`, + `bfcol_29` AS `bfcol_50`, + `bfcol_30` AS `bfcol_51`, + `bfcol_31` AS `bfcol_52`, + `bfcol_33` AS `bfcol_53`, + `bfcol_34` AS `bfcol_54`, + `bfcol_1` AS `bfcol_55`, + ( + ( + `bfcol_32` >= CAST('1993-10-01' AS DATE) + ) + AND ( + `bfcol_32` < CAST('1994-01-01' AS DATE) + ) + ) + AND ( + `bfcol_35` = 'R' + ) AS `bfcol_56`, + `bfcol_25` AS `bfcol_76`, + `bfcol_26` AS `bfcol_77`, + `bfcol_27` AS `bfcol_78`, + `bfcol_29` AS `bfcol_79`, + `bfcol_30` AS `bfcol_80`, + `bfcol_31` AS `bfcol_81`, + `bfcol_1` AS `bfcol_82`, + ROUND(( + `bfcol_33` * ( + 1 - `bfcol_34` + ) + ), 2) AS `bfcol_83` + FROM `bfcte_5` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_28`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_28`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + ( + ( + `bfcol_32` >= CAST('1993-10-01' AS DATE) + ) + AND ( + `bfcol_32` < CAST('1994-01-01' AS DATE) + ) + ) + AND ( + `bfcol_35` = 'R' + ) +), `bfcte_7` AS ( + SELECT + `bfcol_76`, + `bfcol_77`, + `bfcol_80`, + `bfcol_79`, + `bfcol_82`, + `bfcol_78`, + `bfcol_81`, + COALESCE(SUM(`bfcol_83`), 0) AS `bfcol_92` + FROM `bfcte_6` + WHERE + NOT `bfcol_76` IS NULL + AND NOT `bfcol_77` IS NULL + AND NOT `bfcol_80` IS NULL + AND NOT `bfcol_79` IS NULL + AND NOT `bfcol_82` IS NULL + AND NOT `bfcol_78` IS NULL + AND NOT `bfcol_81` IS NULL + GROUP BY + `bfcol_76`, + `bfcol_77`, + `bfcol_80`, + `bfcol_79`, + `bfcol_82`, + `bfcol_78`, + `bfcol_81` +) +SELECT + `bfcol_76` AS `C_CUSTKEY`, + `bfcol_77` AS `C_NAME`, + `bfcol_92` AS `REVENUE`, + `bfcol_80` AS `C_ACCTBAL`, + `bfcol_82` AS `N_NAME`, + `bfcol_78` AS `C_ADDRESS`, + `bfcol_79` AS `C_PHONE`, + `bfcol_81` AS `C_COMMENT` +FROM `bfcte_7` +ORDER BY + `bfcol_92` DESC, + `bfcol_76` ASC NULLS LAST, + `bfcol_77` ASC NULLS LAST, + `bfcol_80` ASC NULLS LAST, + `bfcol_79` ASC NULLS LAST, + `bfcol_82` ASC NULLS LAST, + `bfcol_78` ASC NULLS LAST, + `bfcol_81` ASC NULLS LAST +LIMIT 20 \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/11/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/11/out.sql new file mode 100644 index 00000000000..2b296be7448 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/11/out.sql @@ -0,0 +1,122 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT(0.0, 0, 0)]) +), `bfcte_1` AS ( + SELECT + `PS_SUPPKEY` AS `bfcol_0`, + `PS_AVAILQTY` AS `bfcol_1`, + `PS_SUPPLYCOST` AS `bfcol_2` + FROM `bigframes-dev`.`tpch`.`PARTSUPP` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `PS_PARTKEY` AS `bfcol_10`, + `PS_SUPPKEY` AS `bfcol_11`, + `PS_AVAILQTY` AS `bfcol_12`, + `PS_SUPPLYCOST` AS `bfcol_13` + FROM `bigframes-dev`.`tpch`.`PARTSUPP` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_3`, + `S_NATIONKEY` AS `bfcol_4` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_18` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `N_NAME` = 'GERMANY' +), `bfcte_5` AS ( + SELECT + `bfcol_3` AS `bfcol_19` + FROM `bfcte_4` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_18`, 0) = COALESCE(`bfcol_4`, 0) + AND COALESCE(`bfcol_18`, 1) = COALESCE(`bfcol_4`, 1) +), `bfcte_6` AS ( + SELECT + `bfcol_19`, + `bfcol_0`, + `bfcol_1`, + `bfcol_2`, + `bfcol_1` AS `bfcol_25`, + `bfcol_2` AS `bfcol_26`, + `bfcol_2` AS `bfcol_33`, + `bfcol_1` AS `bfcol_34`, + `bfcol_2` * `bfcol_1` AS `bfcol_40` + FROM `bfcte_5` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_19`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_19`, 1) = COALESCE(`bfcol_0`, 1) +), `bfcte_7` AS ( + SELECT + `bfcol_19`, + `bfcol_10`, + `bfcol_11`, + `bfcol_12`, + `bfcol_13`, + `bfcol_10` AS `bfcol_27`, + `bfcol_13` * `bfcol_12` AS `bfcol_28` + FROM `bfcte_5` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_19`, 0) = COALESCE(`bfcol_11`, 0) + AND COALESCE(`bfcol_19`, 1) = COALESCE(`bfcol_11`, 1) +), `bfcte_8` AS ( + SELECT + COALESCE(SUM(`bfcol_40`), 0) AS `bfcol_44` + FROM `bfcte_6` +), `bfcte_9` AS ( + SELECT + `bfcol_27`, + COALESCE(SUM(`bfcol_28`), 0) AS `bfcol_35` + FROM `bfcte_7` + WHERE + NOT `bfcol_27` IS NULL + GROUP BY + `bfcol_27` +), `bfcte_10` AS ( + SELECT + `bfcol_44`, + 0 AS `bfcol_45` + FROM `bfcte_8` +), `bfcte_11` AS ( + SELECT + `bfcol_27` AS `bfcol_41`, + ROUND(`bfcol_35`, 2) AS `bfcol_42` + FROM `bfcte_9` +), `bfcte_12` AS ( + SELECT + `bfcol_7`, + `bfcol_8`, + `bfcol_9`, + `bfcol_44`, + `bfcol_45`, + CASE WHEN `bfcol_9` = 0 THEN `bfcol_44` END AS `bfcol_46`, + IF(`bfcol_45` = 0, CASE WHEN `bfcol_9` = 0 THEN `bfcol_44` END, NULL) AS `bfcol_51` + FROM `bfcte_0` + CROSS JOIN `bfcte_10` +), `bfcte_13` AS ( + SELECT + `bfcol_7`, + `bfcol_8`, + ANY_VALUE(`bfcol_51`) AS `bfcol_55` + FROM `bfcte_12` + WHERE + NOT `bfcol_7` IS NULL AND NOT `bfcol_8` IS NULL + GROUP BY + `bfcol_7`, + `bfcol_8` +), `bfcte_14` AS ( + SELECT + `bfcol_55` * 0.0001 AS `bfcol_58` + FROM `bfcte_13` +) +SELECT + `bfcol_41` AS `PS_PARTKEY`, + `bfcol_42` AS `VALUE` +FROM `bfcte_11` +CROSS JOIN `bfcte_14` +WHERE + `bfcol_42` > `bfcol_58` +ORDER BY + `bfcol_42` DESC \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/12/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/12/out.sql new file mode 100644 index 00000000000..4d91dcdac19 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/12/out.sql @@ -0,0 +1,93 @@ +WITH `bfcte_0` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_0`, + `L_SHIPDATE` AS `bfcol_1`, + `L_COMMITDATE` AS `bfcol_2`, + `L_RECEIPTDATE` AS `bfcol_3`, + `L_SHIPMODE` AS `bfcol_4` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_5`, + `O_ORDERPRIORITY` AS `bfcol_6` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `bfcol_5`, + `bfcol_6`, + `bfcol_0`, + `bfcol_1`, + `bfcol_2`, + `bfcol_3`, + `bfcol_4`, + `bfcol_6` AS `bfcol_12`, + `bfcol_4` AS `bfcol_13`, + ( + ( + ( + COALESCE(COALESCE(`bfcol_4` IN ('MAIL', 'SHIP'), FALSE), FALSE) + AND ( + `bfcol_2` < `bfcol_3` + ) + ) + AND ( + `bfcol_1` < `bfcol_2` + ) + ) + AND ( + `bfcol_3` >= CAST('1994-01-01' AS DATE) + ) + ) + AND ( + `bfcol_3` < CAST('1995-01-01' AS DATE) + ) AS `bfcol_14`, + `bfcol_6` AS `bfcol_20`, + `bfcol_4` AS `bfcol_21`, + CAST(COALESCE(COALESCE(`bfcol_6` IN ('1-URGENT', '2-HIGH'), FALSE), FALSE) AS INT64) AS `bfcol_22`, + `bfcol_4` AS `bfcol_26`, + CAST(COALESCE(COALESCE(`bfcol_6` IN ('1-URGENT', '2-HIGH'), FALSE), FALSE) AS INT64) AS `bfcol_27`, + CAST(NOT ( + COALESCE(COALESCE(`bfcol_6` IN ('1-URGENT', '2-HIGH'), FALSE), FALSE) + ) AS INT64) AS `bfcol_28` + FROM `bfcte_1` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_5`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_5`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + ( + ( + ( + COALESCE(COALESCE(`bfcol_4` IN ('MAIL', 'SHIP'), FALSE), FALSE) + AND ( + `bfcol_2` < `bfcol_3` + ) + ) + AND ( + `bfcol_1` < `bfcol_2` + ) + ) + AND ( + `bfcol_3` >= CAST('1994-01-01' AS DATE) + ) + ) + AND ( + `bfcol_3` < CAST('1995-01-01' AS DATE) + ) +), `bfcte_3` AS ( + SELECT + `bfcol_26`, + COALESCE(SUM(`bfcol_27`), 0) AS `bfcol_32`, + COALESCE(SUM(`bfcol_28`), 0) AS `bfcol_33` + FROM `bfcte_2` + WHERE + NOT `bfcol_26` IS NULL + GROUP BY + `bfcol_26` +) +SELECT + `bfcol_26` AS `L_SHIPMODE`, + `bfcol_32` AS `HIGH_LINE_COUNT`, + `bfcol_33` AS `LOW_LINE_COUNT` +FROM `bfcte_3` +ORDER BY + `bfcol_26` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/13/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/13/out.sql new file mode 100644 index 00000000000..728738a15e0 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/13/out.sql @@ -0,0 +1,42 @@ +WITH `bfcte_0` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_10`, + `O_CUSTKEY` AS `bfcol_11` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + NOT ( + REGEXP_CONTAINS(`O_COMMENT`, 'special.*requests') + ) +), `bfcte_1` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `bfcol_3`, + COUNT(`bfcol_10`) AS `bfcol_14` + FROM `bfcte_1` + LEFT JOIN `bfcte_0` + ON COALESCE(`bfcol_3`, 0) = COALESCE(`bfcol_11`, 0) + AND COALESCE(`bfcol_3`, 1) = COALESCE(`bfcol_11`, 1) + WHERE + NOT `bfcol_3` IS NULL + GROUP BY + `bfcol_3` +), `bfcte_3` AS ( + SELECT + `bfcol_14`, + COUNT(1) AS `bfcol_16` + FROM `bfcte_2` + WHERE + NOT `bfcol_14` IS NULL + GROUP BY + `bfcol_14` +) +SELECT + `bfcol_14` AS `C_COUNT`, + `bfcol_16` AS `CUSTDIST` +FROM `bfcte_3` +ORDER BY + `bfcol_16` DESC, + `bfcol_14` DESC \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/14/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/14/out.sql new file mode 100644 index 00000000000..a4644a86def --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/14/out.sql @@ -0,0 +1,170 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT('TEMP', 0, 0)]) +), `bfcte_1` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT('TEMP', 0, 0)]) +), `bfcte_2` AS ( + SELECT + `L_PARTKEY` AS `bfcol_0`, + `L_EXTENDEDPRICE` AS `bfcol_1`, + `L_DISCOUNT` AS `bfcol_2`, + `L_SHIPDATE` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `P_PARTKEY` AS `bfcol_4` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `P_PARTKEY` AS `bfcol_8`, + `P_TYPE` AS `bfcol_9` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `bfcol_4`, + `bfcol_0`, + `bfcol_1`, + `bfcol_2`, + `bfcol_3`, + `bfcol_1` AS `bfcol_20`, + `bfcol_2` AS `bfcol_21`, + ( + `bfcol_3` >= CAST('1995-09-01' AS DATE) + ) + AND ( + `bfcol_3` < CAST('1995-10-01' AS DATE) + ) AS `bfcol_22`, + `bfcol_1` AS `bfcol_39`, + `bfcol_2` AS `bfcol_40`, + `bfcol_1` AS `bfcol_45`, + 1 - `bfcol_2` AS `bfcol_46`, + `bfcol_1` * ( + 1 - `bfcol_2` + ) AS `bfcol_51` + FROM `bfcte_3` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_4`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_4`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + ( + `bfcol_3` >= CAST('1995-09-01' AS DATE) + ) + AND ( + `bfcol_3` < CAST('1995-10-01' AS DATE) + ) +), `bfcte_6` AS ( + SELECT + `bfcol_8`, + `bfcol_9`, + `bfcol_0`, + `bfcol_1`, + `bfcol_2`, + `bfcol_3`, + `bfcol_9` AS `bfcol_23`, + `bfcol_1` AS `bfcol_24`, + `bfcol_2` AS `bfcol_25`, + ( + `bfcol_3` >= CAST('1995-09-01' AS DATE) + ) + AND ( + `bfcol_3` < CAST('1995-10-01' AS DATE) + ) AS `bfcol_26`, + ( + `bfcol_1` * ( + 1 - `bfcol_2` + ) + ) * CAST(REGEXP_CONTAINS(`bfcol_9`, 'PROMO') AS INT64) AS `bfcol_41` + FROM `bfcte_4` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_8`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_8`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + ( + `bfcol_3` >= CAST('1995-09-01' AS DATE) + ) + AND ( + `bfcol_3` < CAST('1995-10-01' AS DATE) + ) +), `bfcte_7` AS ( + SELECT + COALESCE(SUM(`bfcol_51`), 0) AS `bfcol_54` + FROM `bfcte_5` +), `bfcte_8` AS ( + SELECT + COALESCE(SUM(`bfcol_41`), 0) AS `bfcol_47` + FROM `bfcte_6` +), `bfcte_9` AS ( + SELECT + `bfcol_54`, + 0 AS `bfcol_59` + FROM `bfcte_7` +), `bfcte_10` AS ( + SELECT + `bfcol_47`, + 0 AS `bfcol_50` + FROM `bfcte_8` +), `bfcte_11` AS ( + SELECT + `bfcol_5`, + `bfcol_6`, + `bfcol_7`, + `bfcol_54`, + `bfcol_59`, + CASE WHEN `bfcol_7` = 0 THEN `bfcol_54` END AS `bfcol_64`, + IF(`bfcol_59` = 0, CASE WHEN `bfcol_7` = 0 THEN `bfcol_54` END, NULL) AS `bfcol_72` + FROM `bfcte_0` + CROSS JOIN `bfcte_9` +), `bfcte_12` AS ( + SELECT + `bfcol_10`, + `bfcol_11`, + `bfcol_12`, + `bfcol_47`, + `bfcol_50`, + CASE WHEN `bfcol_12` = 0 THEN `bfcol_47` END AS `bfcol_53`, + IF(`bfcol_50` = 0, CASE WHEN `bfcol_12` = 0 THEN `bfcol_47` END, NULL) AS `bfcol_60` + FROM `bfcte_1` + CROSS JOIN `bfcte_10` +), `bfcte_13` AS ( + SELECT + `bfcol_5`, + `bfcol_6`, + ANY_VALUE(`bfcol_72`) AS `bfcol_79` + FROM `bfcte_11` + WHERE + NOT `bfcol_5` IS NULL AND NOT `bfcol_6` IS NULL + GROUP BY + `bfcol_5`, + `bfcol_6` +), `bfcte_14` AS ( + SELECT + `bfcol_10`, + `bfcol_11`, + ANY_VALUE(`bfcol_60`) AS `bfcol_65` + FROM `bfcte_12` + WHERE + NOT `bfcol_10` IS NULL AND NOT `bfcol_11` IS NULL + GROUP BY + `bfcol_10`, + `bfcol_11` +), `bfcte_15` AS ( + SELECT + `bfcol_5` AS `bfcol_80`, + `bfcol_79` AS `bfcol_81` + FROM `bfcte_13` +), `bfcte_16` AS ( + SELECT + `bfcol_10` AS `bfcol_77`, + 100.0 * `bfcol_65` AS `bfcol_78` + FROM `bfcte_14` +) +SELECT + ROUND(IEEE_DIVIDE(`bfcol_78`, `bfcol_81`), 2) AS `PROMO_REVENUE` +FROM `bfcte_16` +FULL OUTER JOIN `bfcte_15` + ON `bfcol_77` = `bfcol_80` +ORDER BY + COALESCE(`bfcol_77`, `bfcol_80`) ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/15/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/15/out.sql new file mode 100644 index 00000000000..929418a09b2 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/15/out.sql @@ -0,0 +1,116 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT('TOTAL_REVENUE', 0, 0)]) +), `bfcte_1` AS ( + SELECT + `L_SUPPKEY`, + `L_EXTENDEDPRICE`, + `L_DISCOUNT`, + `L_SHIPDATE`, + `L_SUPPKEY` AS `bfcol_12`, + `L_EXTENDEDPRICE` AS `bfcol_13`, + `L_DISCOUNT` AS `bfcol_14`, + ( + `L_SHIPDATE` >= CAST('1996-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` < CAST('1996-04-01' AS DATE) + ) AS `bfcol_15`, + `L_SUPPKEY` AS `bfcol_23`, + `L_EXTENDEDPRICE` * ( + 1 - `L_DISCOUNT` + ) AS `bfcol_24` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + ( + `L_SHIPDATE` >= CAST('1996-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` < CAST('1996-04-01' AS DATE) + ) +), `bfcte_2` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_4` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_8`, + `S_NAME` AS `bfcol_9`, + `S_ADDRESS` AS `bfcol_10`, + `S_PHONE` AS `bfcol_11` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `bfcol_23`, + COALESCE(SUM(`bfcol_24`), 0) AS `bfcol_27` + FROM `bfcte_1` + WHERE + NOT `bfcol_23` IS NULL + GROUP BY + `bfcol_23` +), `bfcte_5` AS ( + SELECT + `bfcol_23` AS `bfcol_30`, + ROUND(`bfcol_27`, 2) AS `bfcol_31` + FROM `bfcte_4` +), `bfcte_6` AS ( + SELECT + MAX(`bfcol_31`) AS `bfcol_38` + FROM `bfcte_2` + INNER JOIN `bfcte_5` + ON `bfcol_4` = `bfcol_30` +), `bfcte_7` AS ( + SELECT + `bfcol_8` AS `bfcol_33`, + `bfcol_9` AS `bfcol_34`, + `bfcol_10` AS `bfcol_35`, + `bfcol_11` AS `bfcol_36`, + `bfcol_31` AS `bfcol_37` + FROM `bfcte_3` + INNER JOIN `bfcte_5` + ON `bfcol_8` = `bfcol_30` +), `bfcte_8` AS ( + SELECT + `bfcol_38`, + 0 AS `bfcol_39` + FROM `bfcte_6` +), `bfcte_9` AS ( + SELECT + `bfcol_5`, + `bfcol_6`, + `bfcol_7`, + `bfcol_38`, + `bfcol_39`, + CASE WHEN `bfcol_7` = 0 THEN `bfcol_38` END AS `bfcol_40`, + IF(`bfcol_39` = 0, CASE WHEN `bfcol_7` = 0 THEN `bfcol_38` END, NULL) AS `bfcol_45` + FROM `bfcte_0` + CROSS JOIN `bfcte_8` +), `bfcte_10` AS ( + SELECT + `bfcol_5`, + `bfcol_6`, + ANY_VALUE(`bfcol_45`) AS `bfcol_49` + FROM `bfcte_9` + WHERE + NOT `bfcol_5` IS NULL AND NOT `bfcol_6` IS NULL + GROUP BY + `bfcol_5`, + `bfcol_6` +), `bfcte_11` AS ( + SELECT + `bfcol_49` AS `bfcol_50` + FROM `bfcte_10` +) +SELECT + `bfcol_33` AS `S_SUPPKEY`, + `bfcol_34` AS `S_NAME`, + `bfcol_35` AS `S_ADDRESS`, + `bfcol_36` AS `S_PHONE`, + `bfcol_37` AS `TOTAL_REVENUE` +FROM `bfcte_7` +CROSS JOIN `bfcte_11` +WHERE + `bfcol_37` = `bfcol_50` +ORDER BY + `bfcol_33` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/16/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/16/out.sql new file mode 100644 index 00000000000..bd637ec3063 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/16/out.sql @@ -0,0 +1,93 @@ +WITH `bfcte_0` AS ( + SELECT + `S_SUPPKEY`, + `S_COMMENT`, + `S_SUPPKEY` AS `bfcol_8`, + NOT ( + REGEXP_CONTAINS(`S_COMMENT`, 'Customer.*Complaints') + ) AS `bfcol_9` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + NOT ( + REGEXP_CONTAINS(`S_COMMENT`, 'Customer.*Complaints') + ) +), `bfcte_1` AS ( + SELECT + `PS_PARTKEY` AS `bfcol_2`, + `PS_SUPPKEY` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`PARTSUPP` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `P_PARTKEY` AS `bfcol_4`, + `P_BRAND` AS `bfcol_5`, + `P_TYPE` AS `bfcol_6`, + `P_SIZE` AS `bfcol_7` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `bfcol_8` + FROM `bfcte_0` + GROUP BY + `bfcol_8` +), `bfcte_4` AS ( + SELECT + `bfcol_5` AS `bfcol_55`, + `bfcol_6` AS `bfcol_56`, + `bfcol_7` AS `bfcol_57`, + `bfcol_3` AS `bfcol_58` + FROM `bfcte_2` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_4`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_4`, 1) = COALESCE(`bfcol_2`, 1) + WHERE + `bfcol_5` <> 'Brand#45' + AND NOT ( + REGEXP_CONTAINS(`bfcol_6`, 'MEDIUM POLISHED') + ) + AND COALESCE(COALESCE(`bfcol_7` IN (49, 14, 23, 45, 19, 3, 36, 9), FALSE), FALSE) +), `bfcte_5` AS ( + SELECT + `bfcol_8` AS `bfcol_21` + FROM `bfcte_3` +), `bfcte_6` AS ( + SELECT + *, + STRUCT(COALESCE(`bfcol_58`, 0) AS `bfpart1`, COALESCE(`bfcol_58`, 1) AS `bfpart2`) IN ( + ( + SELECT + STRUCT(COALESCE(`bfcol_21`, 0) AS `bfpart1`, COALESCE(`bfcol_21`, 1) AS `bfpart2`) + FROM `bfcte_5` + ) + ) AS `bfcol_59` + FROM `bfcte_4` +), `bfcte_7` AS ( + SELECT + * + FROM `bfcte_6` + WHERE + `bfcol_59` +), `bfcte_8` AS ( + SELECT + `bfcol_55`, + `bfcol_56`, + `bfcol_57`, + COUNT(DISTINCT `bfcol_58`) AS `bfcol_69` + FROM `bfcte_7` + WHERE + NOT `bfcol_55` IS NULL AND NOT `bfcol_56` IS NULL AND NOT `bfcol_57` IS NULL + GROUP BY + `bfcol_55`, + `bfcol_56`, + `bfcol_57` +) +SELECT + `bfcol_55` AS `P_BRAND`, + `bfcol_56` AS `P_TYPE`, + `bfcol_57` AS `P_SIZE`, + `bfcol_69` AS `SUPPLIER_CNT` +FROM `bfcte_8` +ORDER BY + `bfcol_69` DESC, + `bfcol_55` ASC NULLS LAST, + `bfcol_56` ASC NULLS LAST, + `bfcol_57` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/17/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/17/out.sql new file mode 100644 index 00000000000..b9816ff0bf7 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/17/out.sql @@ -0,0 +1,103 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT('L_EXTENDEDPRICE', 0, 0)]) +), `bfcte_1` AS ( + SELECT + `P_PARTKEY` AS `bfcol_15` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + ( + `P_BRAND` = 'Brand#23' + ) AND ( + `P_CONTAINER` = 'MED BOX' + ) +), `bfcte_2` AS ( + SELECT + `L_PARTKEY` AS `bfcol_3`, + `L_QUANTITY` AS `bfcol_4`, + `L_EXTENDEDPRICE` AS `bfcol_5` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `L_PARTKEY` AS `bfcol_6`, + `L_QUANTITY` AS `bfcol_7` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `bfcol_4` AS `bfcol_16`, + `bfcol_5` AS `bfcol_17`, + `bfcol_15` AS `bfcol_18` + FROM `bfcte_2` + RIGHT JOIN `bfcte_1` + ON COALESCE(`bfcol_3`, 0) = COALESCE(`bfcol_15`, 0) + AND COALESCE(`bfcol_3`, 1) = COALESCE(`bfcol_15`, 1) +), `bfcte_5` AS ( + SELECT + `bfcol_15`, + AVG(`bfcol_7`) AS `bfcol_21` + FROM `bfcte_3` + RIGHT JOIN `bfcte_1` + ON COALESCE(`bfcol_6`, 0) = COALESCE(`bfcol_15`, 0) + AND COALESCE(`bfcol_6`, 1) = COALESCE(`bfcol_15`, 1) + WHERE + NOT `bfcol_15` IS NULL + GROUP BY + `bfcol_15` +), `bfcte_6` AS ( + SELECT + `bfcol_15` AS `bfcol_24`, + `bfcol_21` * 0.2 AS `bfcol_25` + FROM `bfcte_5` +), `bfcte_7` AS ( + SELECT + `bfcol_24`, + `bfcol_25`, + `bfcol_16`, + `bfcol_17`, + `bfcol_18`, + `bfcol_17` AS `bfcol_29`, + `bfcol_16` < `bfcol_25` AS `bfcol_30` + FROM `bfcte_6` + INNER JOIN `bfcte_4` + ON `bfcol_24` = `bfcol_18` + WHERE + `bfcol_16` < `bfcol_25` +), `bfcte_8` AS ( + SELECT + COALESCE(SUM(`bfcol_29`), 0) AS `bfcol_34` + FROM `bfcte_7` +), `bfcte_9` AS ( + SELECT + `bfcol_34`, + 0 AS `bfcol_35` + FROM `bfcte_8` +), `bfcte_10` AS ( + SELECT + `bfcol_8`, + `bfcol_9`, + `bfcol_10`, + `bfcol_34`, + `bfcol_35`, + CASE WHEN `bfcol_10` = 0 THEN `bfcol_34` END AS `bfcol_36`, + IF(`bfcol_35` = 0, CASE WHEN `bfcol_10` = 0 THEN `bfcol_34` END, NULL) AS `bfcol_41` + FROM `bfcte_0` + CROSS JOIN `bfcte_9` +), `bfcte_11` AS ( + SELECT + `bfcol_8`, + `bfcol_9`, + ANY_VALUE(`bfcol_41`) AS `bfcol_45` + FROM `bfcte_10` + WHERE + NOT `bfcol_8` IS NULL AND NOT `bfcol_9` IS NULL + GROUP BY + `bfcol_8`, + `bfcol_9` +) +SELECT + ROUND(IEEE_DIVIDE(`bfcol_45`, 7.0), 2) AS `AVG_YEARLY` +FROM `bfcte_11` +ORDER BY + `bfcol_9` ASC NULLS LAST, + `bfcol_8` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/18/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/18/out.sql new file mode 100644 index 00000000000..b5720bc932a --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/18/out.sql @@ -0,0 +1,116 @@ +WITH `bfcte_0` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_0`, + `C_NAME` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_2`, + `L_QUANTITY` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_4`, + `O_CUSTKEY` AS `bfcol_5`, + `O_TOTALPRICE` AS `bfcol_6`, + `O_ORDERDATE` AS `bfcol_7` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `bfcol_2`, + COALESCE(SUM(`bfcol_3`), 0) AS `bfcol_8` + FROM `bfcte_1` + WHERE + NOT `bfcol_2` IS NULL + GROUP BY + `bfcol_2` +), `bfcte_4` AS ( + SELECT + `bfcol_2`, + `bfcol_8`, + `bfcol_2` AS `bfcol_9`, + `bfcol_8` > 300 AS `bfcol_10` + FROM `bfcte_3` + WHERE + `bfcol_8` > 300 +), `bfcte_5` AS ( + SELECT + `bfcol_9` + FROM `bfcte_4` + GROUP BY + `bfcol_9` +), `bfcte_6` AS ( + SELECT + `bfcol_9` AS `bfcol_13` + FROM `bfcte_5` +), `bfcte_7` AS ( + SELECT + *, + STRUCT(COALESCE(`bfcol_4`, 0) AS `bfpart1`, COALESCE(`bfcol_4`, 1) AS `bfpart2`) IN ( + ( + SELECT + STRUCT(COALESCE(`bfcol_13`, 0) AS `bfpart1`, COALESCE(`bfcol_13`, 1) AS `bfpart2`) + FROM `bfcte_6` + ) + ) AS `bfcol_14` + FROM `bfcte_2` +), `bfcte_8` AS ( + SELECT + `bfcol_4` AS `bfcol_20`, + `bfcol_5` AS `bfcol_21`, + `bfcol_6` AS `bfcol_22`, + `bfcol_7` AS `bfcol_23` + FROM `bfcte_7` + WHERE + `bfcol_14` +), `bfcte_9` AS ( + SELECT + `bfcol_20` AS `bfcol_24`, + `bfcol_21` AS `bfcol_25`, + `bfcol_22` AS `bfcol_26`, + `bfcol_23` AS `bfcol_27`, + `bfcol_3` AS `bfcol_28` + FROM `bfcte_8` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_20`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_20`, 1) = COALESCE(`bfcol_2`, 1) +), `bfcte_10` AS ( + SELECT + `bfcol_1`, + `bfcol_0`, + `bfcol_24`, + `bfcol_27`, + `bfcol_26`, + COALESCE(SUM(`bfcol_28`), 0) AS `bfcol_35` + FROM `bfcte_9` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_25`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_25`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + NOT `bfcol_1` IS NULL + AND NOT `bfcol_0` IS NULL + AND NOT `bfcol_24` IS NULL + AND NOT `bfcol_27` IS NULL + AND NOT `bfcol_26` IS NULL + GROUP BY + `bfcol_1`, + `bfcol_0`, + `bfcol_24`, + `bfcol_27`, + `bfcol_26` +) +SELECT + `bfcol_1` AS `C_NAME`, + `bfcol_0` AS `C_CUSTKEY`, + `bfcol_24` AS `O_ORDERKEY`, + `bfcol_27` AS `O_ORDERDAT`, + `bfcol_26` AS `O_TOTALPRICE`, + `bfcol_35` AS `COL6` +FROM `bfcte_10` +ORDER BY + `bfcol_26` DESC, + `bfcol_27` ASC NULLS LAST, + `bfcol_1` ASC NULLS LAST, + `bfcol_0` ASC NULLS LAST, + `bfcol_24` ASC NULLS LAST +LIMIT 100 \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/19/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/19/out.sql new file mode 100644 index 00000000000..9672739d645 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/19/out.sql @@ -0,0 +1,227 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT(0)]) +), `bfcte_1` AS ( + SELECT + `L_PARTKEY` AS `bfcol_1`, + `L_QUANTITY` AS `bfcol_2`, + `L_EXTENDEDPRICE` AS `bfcol_3`, + `L_DISCOUNT` AS `bfcol_4`, + `L_SHIPINSTRUCT` AS `bfcol_5`, + `L_SHIPMODE` AS `bfcol_6` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `P_PARTKEY` AS `bfcol_7`, + `P_BRAND` AS `bfcol_8`, + `P_SIZE` AS `bfcol_9`, + `P_CONTAINER` AS `bfcol_10` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `bfcol_7`, + `bfcol_8`, + `bfcol_9`, + `bfcol_10`, + `bfcol_1`, + `bfcol_2`, + `bfcol_3`, + `bfcol_4`, + `bfcol_5`, + `bfcol_6`, + `bfcol_3` AS `bfcol_19`, + `bfcol_4` AS `bfcol_20`, + ( + COALESCE(COALESCE(`bfcol_6` IN ('AIR', 'AIR REG'), FALSE), FALSE) + AND ( + `bfcol_5` = 'DELIVER IN PERSON' + ) + ) + AND ( + ( + ( + ( + ( + ( + `bfcol_8` = 'Brand#12' + ) + AND COALESCE(COALESCE(`bfcol_10` IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG'), FALSE), FALSE) + ) + AND ( + ( + `bfcol_2` >= 1 + ) AND ( + `bfcol_2` <= 11 + ) + ) + ) + AND ( + ( + `bfcol_9` >= 1 + ) AND ( + `bfcol_9` <= 5 + ) + ) + ) + OR ( + ( + ( + ( + `bfcol_8` = 'Brand#23' + ) + AND COALESCE( + COALESCE(`bfcol_10` IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK'), FALSE), + FALSE + ) + ) + AND ( + ( + `bfcol_2` >= 10 + ) AND ( + `bfcol_2` <= 20 + ) + ) + ) + AND ( + ( + `bfcol_9` >= 1 + ) AND ( + `bfcol_9` <= 10 + ) + ) + ) + ) + OR ( + ( + ( + ( + `bfcol_8` = 'Brand#34' + ) + AND COALESCE(COALESCE(`bfcol_10` IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG'), FALSE), FALSE) + ) + AND ( + ( + `bfcol_2` >= 20 + ) AND ( + `bfcol_2` <= 30 + ) + ) + ) + AND ( + ( + `bfcol_9` >= 1 + ) AND ( + `bfcol_9` <= 15 + ) + ) + ) + ) AS `bfcol_21`, + `bfcol_3` AS `bfcol_27`, + 1 - `bfcol_4` AS `bfcol_28`, + `bfcol_3` * ( + 1 - `bfcol_4` + ) AS `bfcol_31` + FROM `bfcte_2` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_7`, 0) = COALESCE(`bfcol_1`, 0) + AND COALESCE(`bfcol_7`, 1) = COALESCE(`bfcol_1`, 1) + WHERE + ( + COALESCE(COALESCE(`bfcol_6` IN ('AIR', 'AIR REG'), FALSE), FALSE) + AND ( + `bfcol_5` = 'DELIVER IN PERSON' + ) + ) + AND ( + ( + ( + ( + ( + ( + `bfcol_8` = 'Brand#12' + ) + AND COALESCE(COALESCE(`bfcol_10` IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG'), FALSE), FALSE) + ) + AND ( + ( + `bfcol_2` >= 1 + ) AND ( + `bfcol_2` <= 11 + ) + ) + ) + AND ( + ( + `bfcol_9` >= 1 + ) AND ( + `bfcol_9` <= 5 + ) + ) + ) + OR ( + ( + ( + ( + `bfcol_8` = 'Brand#23' + ) + AND COALESCE( + COALESCE(`bfcol_10` IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK'), FALSE), + FALSE + ) + ) + AND ( + ( + `bfcol_2` >= 10 + ) AND ( + `bfcol_2` <= 20 + ) + ) + ) + AND ( + ( + `bfcol_9` >= 1 + ) AND ( + `bfcol_9` <= 10 + ) + ) + ) + ) + OR ( + ( + ( + ( + `bfcol_8` = 'Brand#34' + ) + AND COALESCE(COALESCE(`bfcol_10` IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG'), FALSE), FALSE) + ) + AND ( + ( + `bfcol_2` >= 20 + ) AND ( + `bfcol_2` <= 30 + ) + ) + ) + AND ( + ( + `bfcol_9` >= 1 + ) AND ( + `bfcol_9` <= 15 + ) + ) + ) + ) +), `bfcte_4` AS ( + SELECT + COALESCE(SUM(`bfcol_31`), 0) AS `bfcol_33` + FROM `bfcte_3` +), `bfcte_5` AS ( + SELECT + * + FROM `bfcte_4` +) +SELECT + CASE WHEN `bfcol_0` = 0 THEN `bfcol_33` END AS `REVENUE` +FROM `bfcte_5` +CROSS JOIN `bfcte_0` \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/2/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/2/out.sql new file mode 100644 index 00000000000..9130dc95fce --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/2/out.sql @@ -0,0 +1,210 @@ +WITH `bfcte_0` AS ( + SELECT + `R_REGIONKEY` AS `bfcol_0`, + `R_NAME` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`REGION` AS `bft_4` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_2`, + `N_NAME` AS `bfcol_3`, + `N_REGIONKEY` AS `bfcol_4` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_19`, + `N_REGIONKEY` AS `bfcol_20` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_5`, + `S_NAME` AS `bfcol_6`, + `S_ADDRESS` AS `bfcol_7`, + `S_NATIONKEY` AS `bfcol_8`, + `S_PHONE` AS `bfcol_9`, + `S_ACCTBAL` AS `bfcol_10`, + `S_COMMENT` AS `bfcol_11` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_21`, + `S_NATIONKEY` AS `bfcol_22` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `PS_PARTKEY` AS `bfcol_12`, + `PS_SUPPKEY` AS `bfcol_13`, + `PS_SUPPLYCOST` AS `bfcol_14` + FROM `bigframes-dev`.`tpch`.`PARTSUPP` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_6` AS ( + SELECT + `P_PARTKEY` AS `bfcol_15`, + `P_MFGR` AS `bfcol_16`, + `P_TYPE` AS `bfcol_17`, + `P_SIZE` AS `bfcol_18` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_7` AS ( + SELECT + `P_PARTKEY` AS `bfcol_23`, + `P_TYPE` AS `bfcol_24`, + `P_SIZE` AS `bfcol_25` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_8` AS ( + SELECT + `bfcol_15` AS `bfcol_26`, + `bfcol_16` AS `bfcol_27`, + `bfcol_17` AS `bfcol_28`, + `bfcol_18` AS `bfcol_29`, + `bfcol_13` AS `bfcol_30`, + `bfcol_14` AS `bfcol_31` + FROM `bfcte_6` + INNER JOIN `bfcte_5` + ON COALESCE(`bfcol_15`, 0) = COALESCE(`bfcol_12`, 0) + AND COALESCE(`bfcol_15`, 1) = COALESCE(`bfcol_12`, 1) +), `bfcte_9` AS ( + SELECT + `bfcol_23` AS `bfcol_32`, + `bfcol_24` AS `bfcol_33`, + `bfcol_25` AS `bfcol_34`, + `bfcol_13` AS `bfcol_35`, + `bfcol_14` AS `bfcol_36` + FROM `bfcte_7` + INNER JOIN `bfcte_5` + ON COALESCE(`bfcol_23`, 0) = COALESCE(`bfcol_12`, 0) + AND COALESCE(`bfcol_23`, 1) = COALESCE(`bfcol_12`, 1) +), `bfcte_10` AS ( + SELECT + `bfcol_26` AS `bfcol_37`, + `bfcol_27` AS `bfcol_38`, + `bfcol_28` AS `bfcol_39`, + `bfcol_29` AS `bfcol_40`, + `bfcol_31` AS `bfcol_41`, + `bfcol_6` AS `bfcol_42`, + `bfcol_7` AS `bfcol_43`, + `bfcol_8` AS `bfcol_44`, + `bfcol_9` AS `bfcol_45`, + `bfcol_10` AS `bfcol_46`, + `bfcol_11` AS `bfcol_47` + FROM `bfcte_8` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_30`, 0) = COALESCE(`bfcol_5`, 0) + AND COALESCE(`bfcol_30`, 1) = COALESCE(`bfcol_5`, 1) +), `bfcte_11` AS ( + SELECT + `bfcol_32` AS `bfcol_48`, + `bfcol_33` AS `bfcol_49`, + `bfcol_34` AS `bfcol_50`, + `bfcol_36` AS `bfcol_51`, + `bfcol_22` AS `bfcol_52` + FROM `bfcte_9` + INNER JOIN `bfcte_4` + ON COALESCE(`bfcol_35`, 0) = COALESCE(`bfcol_21`, 0) + AND COALESCE(`bfcol_35`, 1) = COALESCE(`bfcol_21`, 1) +), `bfcte_12` AS ( + SELECT + `bfcol_37` AS `bfcol_53`, + `bfcol_38` AS `bfcol_54`, + `bfcol_39` AS `bfcol_55`, + `bfcol_40` AS `bfcol_56`, + `bfcol_41` AS `bfcol_57`, + `bfcol_42` AS `bfcol_58`, + `bfcol_43` AS `bfcol_59`, + `bfcol_45` AS `bfcol_60`, + `bfcol_46` AS `bfcol_61`, + `bfcol_47` AS `bfcol_62`, + `bfcol_3` AS `bfcol_63`, + `bfcol_4` AS `bfcol_64` + FROM `bfcte_10` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_44`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_44`, 1) = COALESCE(`bfcol_2`, 1) +), `bfcte_13` AS ( + SELECT + `bfcol_48` AS `bfcol_65`, + `bfcol_49` AS `bfcol_66`, + `bfcol_50` AS `bfcol_67`, + `bfcol_51` AS `bfcol_68`, + `bfcol_20` AS `bfcol_69` + FROM `bfcte_11` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_52`, 0) = COALESCE(`bfcol_19`, 0) + AND COALESCE(`bfcol_52`, 1) = COALESCE(`bfcol_19`, 1) +), `bfcte_14` AS ( + SELECT + `bfcol_53` AS `bfcol_205`, + `bfcol_54` AS `bfcol_206`, + `bfcol_57` AS `bfcol_207`, + `bfcol_58` AS `bfcol_208`, + `bfcol_59` AS `bfcol_209`, + `bfcol_60` AS `bfcol_210`, + `bfcol_61` AS `bfcol_211`, + `bfcol_62` AS `bfcol_212`, + `bfcol_63` AS `bfcol_213` + FROM `bfcte_12` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_64`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_64`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + `bfcol_56` = 15 AND ENDS_WITH(`bfcol_55`, 'BRASS') AND `bfcol_1` = 'EUROPE' +), `bfcte_15` AS ( + SELECT + `bfcol_65`, + `bfcol_66`, + `bfcol_67`, + `bfcol_68`, + `bfcol_69`, + `bfcol_0`, + `bfcol_1`, + `bfcol_65` AS `bfcol_99`, + `bfcol_66` AS `bfcol_100`, + `bfcol_68` AS `bfcol_101`, + `bfcol_1` AS `bfcol_102`, + `bfcol_67` = 15 AS `bfcol_103`, + `bfcol_65` AS `bfcol_147`, + `bfcol_68` AS `bfcol_148`, + `bfcol_1` AS `bfcol_149`, + ENDS_WITH(`bfcol_66`, 'BRASS') AS `bfcol_150`, + `bfcol_65` AS `bfcol_189`, + `bfcol_68` AS `bfcol_190`, + `bfcol_1` = 'EUROPE' AS `bfcol_191` + FROM `bfcte_13` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_69`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_69`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + `bfcol_67` = 15 AND ENDS_WITH(`bfcol_66`, 'BRASS') AND `bfcol_1` = 'EUROPE' +), `bfcte_16` AS ( + SELECT + `bfcol_189`, + MIN(`bfcol_190`) AS `bfcol_216` + FROM `bfcte_15` + WHERE + NOT `bfcol_189` IS NULL + GROUP BY + `bfcol_189` +), `bfcte_17` AS ( + SELECT + `bfcol_189` AS `bfcol_214`, + `bfcol_216` + FROM `bfcte_16` +) +SELECT + `bfcol_211` AS `S_ACCTBAL`, + `bfcol_208` AS `S_NAME`, + `bfcol_213` AS `N_NAME`, + `bfcol_214` AS `P_PARTKEY`, + `bfcol_206` AS `P_MFGR`, + `bfcol_209` AS `S_ADDRESS`, + `bfcol_210` AS `S_PHONE`, + `bfcol_212` AS `S_COMMENT` +FROM `bfcte_17` +INNER JOIN `bfcte_14` + ON COALESCE(`bfcol_214`, 0) = COALESCE(`bfcol_205`, 0) + AND COALESCE(`bfcol_214`, 1) = COALESCE(`bfcol_205`, 1) + AND IF(IS_NAN(`bfcol_216`), 2.0, COALESCE(`bfcol_216`, 0.0)) = IF(IS_NAN(`bfcol_207`), 2.0, COALESCE(`bfcol_207`, 0.0)) + AND IF(IS_NAN(`bfcol_216`), 3, COALESCE(`bfcol_216`, 1.0)) = IF(IS_NAN(`bfcol_207`), 3, COALESCE(`bfcol_207`, 1.0)) +ORDER BY + `bfcol_211` DESC, + `bfcol_213` ASC NULLS LAST, + `bfcol_208` ASC NULLS LAST, + `bfcol_214` ASC NULLS LAST +LIMIT 100 \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/20/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/20/out.sql new file mode 100644 index 00000000000..8c9cd9bb763 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/20/out.sql @@ -0,0 +1,151 @@ +WITH `bfcte_0` AS ( + SELECT + `P_PARTKEY`, + `P_NAME`, + `P_PARTKEY` AS `bfcol_15`, + STARTS_WITH(`P_NAME`, 'forest') AS `bfcol_16` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_4` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + STARTS_WITH(`P_NAME`, 'forest') +), `bfcte_1` AS ( + SELECT + `PS_PARTKEY` AS `bfcol_2`, + `PS_SUPPKEY` AS `bfcol_3`, + `PS_AVAILQTY` AS `bfcol_4` + FROM `bigframes-dev`.`tpch`.`PARTSUPP` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `L_PARTKEY`, + `L_SUPPKEY`, + `L_QUANTITY`, + `L_SHIPDATE`, + `L_PARTKEY` AS `bfcol_17`, + `L_SUPPKEY` AS `bfcol_18`, + `L_QUANTITY` AS `bfcol_19`, + ( + `L_SHIPDATE` >= CAST('1994-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` < CAST('1995-01-01' AS DATE) + ) AS `bfcol_20` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + ( + `L_SHIPDATE` >= CAST('1994-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` < CAST('1995-01-01' AS DATE) + ) +), `bfcte_3` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_35` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `N_NAME` = 'CANADA' +), `bfcte_4` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_11`, + `S_NAME` AS `bfcol_12`, + `S_ADDRESS` AS `bfcol_13`, + `S_NATIONKEY` AS `bfcol_14` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `bfcol_15` + FROM `bfcte_0` + GROUP BY + `bfcol_15` +), `bfcte_6` AS ( + SELECT + `bfcol_17`, + `bfcol_18`, + COALESCE(SUM(`bfcol_19`), 0) AS `bfcol_36` + FROM `bfcte_2` + WHERE + NOT `bfcol_17` IS NULL AND NOT `bfcol_18` IS NULL + GROUP BY + `bfcol_17`, + `bfcol_18` +), `bfcte_7` AS ( + SELECT + `bfcol_11` AS `bfcol_41`, + `bfcol_12` AS `bfcol_42`, + `bfcol_13` AS `bfcol_43` + FROM `bfcte_4` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_14`, 0) = COALESCE(`bfcol_35`, 0) + AND COALESCE(`bfcol_14`, 1) = COALESCE(`bfcol_35`, 1) +), `bfcte_8` AS ( + SELECT + `bfcol_15` AS `bfcol_31` + FROM `bfcte_5` +), `bfcte_9` AS ( + SELECT + `bfcol_17` AS `bfcol_48`, + `bfcol_18` AS `bfcol_49`, + `bfcol_36` * 0.5 AS `bfcol_50` + FROM `bfcte_6` +), `bfcte_10` AS ( + SELECT + *, + STRUCT(COALESCE(`bfcol_2`, 0) AS `bfpart1`, COALESCE(`bfcol_2`, 1) AS `bfpart2`) IN ( + ( + SELECT + STRUCT(COALESCE(`bfcol_31`, 0) AS `bfpart1`, COALESCE(`bfcol_31`, 1) AS `bfpart2`) + FROM `bfcte_8` + ) + ) AS `bfcol_37` + FROM `bfcte_1` +), `bfcte_11` AS ( + SELECT + `bfcol_2` AS `bfcol_51`, + `bfcol_3` AS `bfcol_52`, + `bfcol_4` AS `bfcol_53` + FROM `bfcte_10` + WHERE + `bfcol_37` +), `bfcte_12` AS ( + SELECT + `bfcol_48`, + `bfcol_49`, + `bfcol_50`, + `bfcol_51`, + `bfcol_52`, + `bfcol_53`, + `bfcol_52` AS `bfcol_57`, + `bfcol_53` > `bfcol_50` AS `bfcol_58` + FROM `bfcte_9` + INNER JOIN `bfcte_11` + ON `bfcol_49` = `bfcol_52` AND `bfcol_48` = `bfcol_51` + WHERE + `bfcol_53` > `bfcol_50` +), `bfcte_13` AS ( + SELECT + `bfcol_57` + FROM `bfcte_12` + GROUP BY + `bfcol_57` +), `bfcte_14` AS ( + SELECT + `bfcol_57` AS `bfcol_61` + FROM `bfcte_13` +), `bfcte_15` AS ( + SELECT + *, + STRUCT(COALESCE(`bfcol_41`, 0) AS `bfpart1`, COALESCE(`bfcol_41`, 1) AS `bfpart2`) IN ( + ( + SELECT + STRUCT(COALESCE(`bfcol_61`, 0) AS `bfpart1`, COALESCE(`bfcol_61`, 1) AS `bfpart2`) + FROM `bfcte_14` + ) + ) AS `bfcol_62` + FROM `bfcte_7` +) +SELECT + `bfcol_42` AS `S_NAME`, + `bfcol_43` AS `S_ADDRESS` +FROM `bfcte_15` +WHERE + `bfcol_62` +ORDER BY + `bfcol_42` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/21/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/21/out.sql new file mode 100644 index 00000000000..93a44e529d9 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/21/out.sql @@ -0,0 +1,148 @@ +WITH `bfcte_0` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_0`, + `O_ORDERSTATUS` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_2`, + `N_NAME` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_4`, + `S_NAME` AS `bfcol_5`, + `S_NATIONKEY` AS `bfcol_6` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_30`, + `L_SUPPKEY` AS `bfcol_31` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `L_RECEIPTDATE` > `L_COMMITDATE` +), `bfcte_4` AS ( + SELECT + `L_ORDERKEY` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_32` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `L_RECEIPTDATE` > `L_COMMITDATE` +), `bfcte_6` AS ( + SELECT + `L_ORDERKEY`, + COUNT(1) AS `bfcol_18` + FROM `bfcte_4` + WHERE + NOT `L_ORDERKEY` IS NULL + GROUP BY + `L_ORDERKEY` +), `bfcte_7` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_33` + FROM `bfcte_6` + WHERE + `bfcol_18` > 1 +), `bfcte_8` AS ( + SELECT + `bfcol_33` AS `bfcol_34`, + `bfcol_31` AS `bfcol_35` + FROM `bfcte_7` + INNER JOIN `bfcte_3` + ON `bfcol_33` = `bfcol_30` +), `bfcte_9` AS ( + SELECT + `bfcol_33`, + COUNT(1) AS `bfcol_37` + FROM `bfcte_7` + INNER JOIN `bfcte_5` + ON `bfcol_33` = `bfcol_32` + GROUP BY + `bfcol_33` +), `bfcte_10` AS ( + SELECT + `bfcol_33` AS `bfcol_36`, + `bfcol_37` + FROM `bfcte_9` +), `bfcte_11` AS ( + SELECT + `bfcol_36` AS `bfcol_38`, + `bfcol_37` AS `bfcol_39`, + `bfcol_35` AS `bfcol_40` + FROM `bfcte_10` + INNER JOIN `bfcte_8` + ON `bfcol_36` = `bfcol_34` +), `bfcte_12` AS ( + SELECT + `bfcol_38` AS `bfcol_41`, + `bfcol_39` AS `bfcol_42`, + `bfcol_5` AS `bfcol_43`, + `bfcol_6` AS `bfcol_44` + FROM `bfcte_11` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_40`, 0) = COALESCE(`bfcol_4`, 0) + AND COALESCE(`bfcol_40`, 1) = COALESCE(`bfcol_4`, 1) +), `bfcte_13` AS ( + SELECT + `bfcol_41` AS `bfcol_45`, + `bfcol_42` AS `bfcol_46`, + `bfcol_43` AS `bfcol_47`, + `bfcol_3` AS `bfcol_48` + FROM `bfcte_12` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_44`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_44`, 1) = COALESCE(`bfcol_2`, 1) +), `bfcte_14` AS ( + SELECT + `bfcol_45`, + `bfcol_46`, + `bfcol_47`, + `bfcol_48`, + `bfcol_0`, + `bfcol_1`, + `bfcol_47` AS `bfcol_53`, + ( + ( + `bfcol_46` = 1 + ) AND ( + `bfcol_48` = 'SAUDI ARABIA' + ) + ) + AND ( + `bfcol_1` = 'F' + ) AS `bfcol_54` + FROM `bfcte_13` + INNER JOIN `bfcte_0` + ON `bfcol_45` = `bfcol_0` + WHERE + ( + ( + `bfcol_46` = 1 + ) AND ( + `bfcol_48` = 'SAUDI ARABIA' + ) + ) + AND ( + `bfcol_1` = 'F' + ) +), `bfcte_15` AS ( + SELECT + `bfcol_53`, + COUNT(1) AS `bfcol_58` + FROM `bfcte_14` + WHERE + NOT `bfcol_53` IS NULL + GROUP BY + `bfcol_53` +) +SELECT + `bfcol_53` AS `S_NAME`, + `bfcol_58` AS `NUMWAIT` +FROM `bfcte_15` +ORDER BY + `bfcol_58` DESC, + `bfcol_53` ASC NULLS LAST +LIMIT 100 \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/22/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/22/out.sql new file mode 100644 index 00000000000..87ca2d8d5e0 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/22/out.sql @@ -0,0 +1,136 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT('C_ACCTBAL', 0, 0)]) +), `bfcte_1` AS ( + SELECT + `O_CUSTKEY` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `C_PHONE`, + `C_ACCTBAL`, + `C_ACCTBAL` AS `bfcol_9`, + SUBSTRING(`C_PHONE`, 1, 2) AS `bfcol_10`, + `C_ACCTBAL` AS `bfcol_19`, + COALESCE( + COALESCE(SUBSTRING(`C_PHONE`, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17'), FALSE), + FALSE + ) AS `bfcol_20`, + `C_ACCTBAL` AS `bfcol_35`, + `C_ACCTBAL` > 0.0 AS `bfcol_36` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + COALESCE( + COALESCE(SUBSTRING(`C_PHONE`, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17'), FALSE), + FALSE + ) + AND `C_ACCTBAL` > 0.0 +), `bfcte_3` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_32`, + `C_ACCTBAL` AS `bfcol_33`, + SUBSTRING(`C_PHONE`, 1, 2) AS `bfcol_34` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + COALESCE( + COALESCE(SUBSTRING(`C_PHONE`, 1, 2) IN ('13', '31', '23', '29', '30', '18', '17'), FALSE), + FALSE + ) +), `bfcte_4` AS ( + SELECT + `O_CUSTKEY` + FROM `bfcte_1` + GROUP BY + `O_CUSTKEY` +), `bfcte_5` AS ( + SELECT + AVG(`bfcol_35`) AS `bfcol_40` + FROM `bfcte_2` +), `bfcte_6` AS ( + SELECT + `O_CUSTKEY` AS `bfcol_0` + FROM `bfcte_4` +), `bfcte_7` AS ( + SELECT + `bfcol_40`, + 0 AS `bfcol_41` + FROM `bfcte_5` +), `bfcte_8` AS ( + SELECT + `bfcol_3`, + `bfcol_4`, + `bfcol_5`, + `bfcol_40`, + `bfcol_41`, + CASE WHEN `bfcol_5` = 0 THEN `bfcol_40` END AS `bfcol_42`, + IF(`bfcol_41` = 0, CASE WHEN `bfcol_5` = 0 THEN `bfcol_40` END, NULL) AS `bfcol_47` + FROM `bfcte_0` + CROSS JOIN `bfcte_7` +), `bfcte_9` AS ( + SELECT + `bfcol_3`, + `bfcol_4`, + ANY_VALUE(`bfcol_47`) AS `bfcol_51` + FROM `bfcte_8` + WHERE + NOT `bfcol_3` IS NULL AND NOT `bfcol_4` IS NULL + GROUP BY + `bfcol_3`, + `bfcol_4` +), `bfcte_10` AS ( + SELECT + `bfcol_51` AS `bfcol_52` + FROM `bfcte_9` +), `bfcte_11` AS ( + SELECT + `bfcol_32` AS `bfcol_61`, + `bfcol_33` AS `bfcol_62`, + `bfcol_34` AS `bfcol_63` + FROM `bfcte_3` + CROSS JOIN `bfcte_10` + WHERE + `bfcol_33` > `bfcol_52` +), `bfcte_12` AS ( + SELECT + *, + STRUCT(COALESCE(`bfcol_61`, 0) AS `bfpart1`, COALESCE(`bfcol_61`, 1) AS `bfpart2`) IN ( + ( + SELECT + STRUCT(COALESCE(`bfcol_0`, 0) AS `bfpart1`, COALESCE(`bfcol_0`, 1) AS `bfpart2`) + FROM `bfcte_6` + ) + ) AS `bfcol_64` + FROM `bfcte_11` +), `bfcte_13` AS ( + SELECT + `bfcol_61`, + `bfcol_62`, + `bfcol_63`, + `bfcol_64`, + NOT ( + `bfcol_64` + ) AS `bfcol_65` + FROM `bfcte_12` + WHERE + NOT ( + `bfcol_64` + ) +), `bfcte_14` AS ( + SELECT + `bfcol_63`, + COUNT(`bfcol_61`) AS `bfcol_73`, + COALESCE(SUM(`bfcol_62`), 0) AS `bfcol_74` + FROM `bfcte_13` + WHERE + NOT `bfcol_63` IS NULL + GROUP BY + `bfcol_63` +) +SELECT + `bfcol_63` AS `CNTRYCODE`, + `bfcol_73` AS `NUMCUST`, + `bfcol_74` AS `TOTACCTBAL` +FROM `bfcte_14` +ORDER BY + `bfcol_63` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/3/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/3/out.sql new file mode 100644 index 00000000000..0d1365d76d1 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/3/out.sql @@ -0,0 +1,80 @@ +WITH `bfcte_0` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_32`, + `O_CUSTKEY` AS `bfcol_33`, + `O_ORDERDATE` AS `bfcol_34`, + `O_SHIPPRIORITY` AS `bfcol_35` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `O_ORDERDATE` < CAST('1995-03-15' AS DATE) +), `bfcte_1` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_36`, + `L_EXTENDEDPRICE` AS `bfcol_37`, + `L_DISCOUNT` AS `bfcol_38` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `L_SHIPDATE` > CAST('1995-03-15' AS DATE) +), `bfcte_2` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_39` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `C_MKTSEGMENT` = 'BUILDING' +), `bfcte_3` AS ( + SELECT + `bfcol_37` AS `bfcol_40`, + `bfcol_38` AS `bfcol_41`, + `bfcol_32` AS `bfcol_42`, + `bfcol_33` AS `bfcol_43`, + `bfcol_34` AS `bfcol_44`, + `bfcol_35` AS `bfcol_45` + FROM `bfcte_1` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_36`, 0) = COALESCE(`bfcol_32`, 0) + AND COALESCE(`bfcol_36`, 1) = COALESCE(`bfcol_32`, 1) +), `bfcte_4` AS ( + SELECT + `bfcol_39`, + `bfcol_40`, + `bfcol_41`, + `bfcol_42`, + `bfcol_43`, + `bfcol_44`, + `bfcol_45`, + `bfcol_42` AS `bfcol_51`, + `bfcol_44` AS `bfcol_52`, + `bfcol_45` AS `bfcol_53`, + `bfcol_40` * ( + 1 - `bfcol_41` + ) AS `bfcol_54` + FROM `bfcte_2` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_39`, 0) = COALESCE(`bfcol_43`, 0) + AND COALESCE(`bfcol_39`, 1) = COALESCE(`bfcol_43`, 1) +), `bfcte_5` AS ( + SELECT + `bfcol_51`, + `bfcol_52`, + `bfcol_53`, + COALESCE(SUM(`bfcol_54`), 0) AS `bfcol_59` + FROM `bfcte_4` + WHERE + NOT `bfcol_51` IS NULL AND NOT `bfcol_52` IS NULL AND NOT `bfcol_53` IS NULL + GROUP BY + `bfcol_51`, + `bfcol_52`, + `bfcol_53` +) +SELECT + `bfcol_51` AS `L_ORDERKEY`, + `bfcol_59` AS `REVENUE`, + `bfcol_52` AS `O_ORDERDATE`, + `bfcol_53` AS `O_SHIPPRIORITY` +FROM `bfcte_5` +ORDER BY + `bfcol_59` DESC, + `bfcol_52` ASC NULLS LAST, + `bfcol_51` ASC NULLS LAST, + `bfcol_53` ASC NULLS LAST +LIMIT 10 \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/4/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/4/out.sql new file mode 100644 index 00000000000..9eb0259be50 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/4/out.sql @@ -0,0 +1,70 @@ +WITH `bfcte_0` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_0`, + `O_ORDERDATE` AS `bfcol_1`, + `O_ORDERPRIORITY` AS `bfcol_2` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_3`, + `L_COMMITDATE` AS `bfcol_4`, + `L_RECEIPTDATE` AS `bfcol_5` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `bfcol_3`, + `bfcol_4`, + `bfcol_5`, + `bfcol_0`, + `bfcol_1`, + `bfcol_2`, + `bfcol_3` AS `bfcol_11`, + `bfcol_4` AS `bfcol_12`, + `bfcol_5` AS `bfcol_13`, + `bfcol_2` AS `bfcol_14`, + ( + `bfcol_1` >= CAST('1993-07-01' AS DATE) + ) + AND ( + `bfcol_1` < CAST('1993-10-01' AS DATE) + ) AS `bfcol_15`, + `bfcol_3` AS `bfcol_25`, + `bfcol_2` AS `bfcol_26`, + `bfcol_4` < `bfcol_5` AS `bfcol_27` + FROM `bfcte_1` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_3`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_3`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + ( + `bfcol_1` >= CAST('1993-07-01' AS DATE) + ) + AND ( + `bfcol_1` < CAST('1993-10-01' AS DATE) + ) + AND `bfcol_4` < `bfcol_5` +), `bfcte_3` AS ( + SELECT + `bfcol_26`, + `bfcol_25`, + COUNT(1) AS `bfcol_33` + FROM `bfcte_2` + WHERE + NOT `bfcol_26` IS NULL AND NOT `bfcol_25` IS NULL + GROUP BY + `bfcol_26`, + `bfcol_25` +), `bfcte_4` AS ( + SELECT + `bfcol_26`, + COUNT(`bfcol_25`) AS `bfcol_36` + FROM `bfcte_3` + GROUP BY + `bfcol_26` +) +SELECT + `bfcol_26` AS `O_ORDERPRIORITY`, + `bfcol_36` AS `ORDER_COUNT` +FROM `bfcte_4` +ORDER BY + `bfcol_26` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/5/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/5/out.sql new file mode 100644 index 00000000000..34974b36d8f --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/5/out.sql @@ -0,0 +1,100 @@ +WITH `bfcte_0` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_0`, + `S_NATIONKEY` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_5` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_2`, + `C_NATIONKEY` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_4` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_4`, + `N_NAME` AS `bfcol_5`, + `N_REGIONKEY` AS `bfcol_6` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `R_REGIONKEY` AS `bfcol_32` + FROM `bigframes-dev`.`tpch`.`REGION` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + `R_NAME` = 'ASIA' +), `bfcte_4` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_33`, + `O_CUSTKEY` AS `bfcol_34` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + ( + `O_ORDERDATE` >= CAST('1994-01-01' AS DATE) + ) + AND ( + `O_ORDERDATE` < CAST('1995-01-01' AS DATE) + ) +), `bfcte_5` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_29`, + `L_SUPPKEY` AS `bfcol_30`, + `L_EXTENDEDPRICE` * ( + 1.0 - `L_DISCOUNT` + ) AS `bfcol_31` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_6` AS ( + SELECT + `bfcol_4` AS `bfcol_35`, + `bfcol_5` AS `bfcol_36` + FROM `bfcte_3` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_32`, 0) = COALESCE(`bfcol_6`, 0) + AND COALESCE(`bfcol_32`, 1) = COALESCE(`bfcol_6`, 1) +), `bfcte_7` AS ( + SELECT + `bfcol_35` AS `bfcol_37`, + `bfcol_36` AS `bfcol_38`, + `bfcol_2` AS `bfcol_39` + FROM `bfcte_6` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_35`, 0) = COALESCE(`bfcol_3`, 0) + AND COALESCE(`bfcol_35`, 1) = COALESCE(`bfcol_3`, 1) +), `bfcte_8` AS ( + SELECT + `bfcol_33` AS `bfcol_40`, + `bfcol_37` AS `bfcol_41`, + `bfcol_38` AS `bfcol_42` + FROM `bfcte_4` + INNER JOIN `bfcte_7` + ON COALESCE(`bfcol_34`, 0) = COALESCE(`bfcol_39`, 0) + AND COALESCE(`bfcol_34`, 1) = COALESCE(`bfcol_39`, 1) +), `bfcte_9` AS ( + SELECT + `bfcol_30` AS `bfcol_43`, + `bfcol_31` AS `bfcol_44`, + `bfcol_41` AS `bfcol_45`, + `bfcol_42` AS `bfcol_46` + FROM `bfcte_5` + INNER JOIN `bfcte_8` + ON COALESCE(`bfcol_29`, 0) = COALESCE(`bfcol_40`, 0) + AND COALESCE(`bfcol_29`, 1) = COALESCE(`bfcol_40`, 1) +), `bfcte_10` AS ( + SELECT + `bfcol_46`, + COALESCE(SUM(`bfcol_44`), 0) AS `bfcol_49` + FROM `bfcte_9` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_43`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_43`, 1) = COALESCE(`bfcol_0`, 1) + AND COALESCE(`bfcol_45`, 0) = COALESCE(`bfcol_1`, 0) + AND COALESCE(`bfcol_45`, 1) = COALESCE(`bfcol_1`, 1) + WHERE + NOT `bfcol_46` IS NULL + GROUP BY + `bfcol_46` +) +SELECT + `bfcol_46` AS `N_NAME`, + `bfcol_49` AS `REVENUE` +FROM `bfcte_10` +ORDER BY + `bfcol_49` DESC, + `bfcol_46` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/6/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/6/out.sql new file mode 100644 index 00000000000..110f3f9736f --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/6/out.sql @@ -0,0 +1,61 @@ +WITH `bfcte_0` AS ( + SELECT + * + FROM UNNEST(ARRAY>[STRUCT(0)]) +), `bfcte_1` AS ( + SELECT + `L_QUANTITY`, + `L_EXTENDEDPRICE`, + `L_DISCOUNT`, + `L_SHIPDATE`, + `L_QUANTITY` AS `bfcol_5`, + `L_EXTENDEDPRICE` AS `bfcol_6`, + `L_DISCOUNT` AS `bfcol_7`, + ( + `L_SHIPDATE` >= CAST('1994-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` < CAST('1995-01-01' AS DATE) + ) AS `bfcol_8`, + `L_QUANTITY` AS `bfcol_16`, + `L_EXTENDEDPRICE` AS `bfcol_17`, + `L_DISCOUNT` AS `bfcol_18`, + ( + `L_DISCOUNT` >= 0.05 + ) AND ( + `L_DISCOUNT` <= 0.07 + ) AS `bfcol_19`, + `L_EXTENDEDPRICE` AS `bfcol_27`, + `L_DISCOUNT` AS `bfcol_28`, + `L_QUANTITY` < 24 AS `bfcol_29`, + `L_EXTENDEDPRICE` AS `bfcol_35`, + `L_DISCOUNT` AS `bfcol_36`, + `L_EXTENDEDPRICE` * `L_DISCOUNT` AS `bfcol_39` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + ( + `L_SHIPDATE` >= CAST('1994-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` < CAST('1995-01-01' AS DATE) + ) + AND ( + `L_DISCOUNT` >= 0.05 + ) + AND ( + `L_DISCOUNT` <= 0.07 + ) + AND `L_QUANTITY` < 24 +), `bfcte_2` AS ( + SELECT + COALESCE(SUM(`bfcol_39`), 0) AS `bfcol_41` + FROM `bfcte_1` +), `bfcte_3` AS ( + SELECT + * + FROM `bfcte_2` +) +SELECT + CASE WHEN `bfcol_0` = 0 THEN `bfcol_41` END AS `REVENUE` +FROM `bfcte_3` +CROSS JOIN `bfcte_0` \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/7/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/7/out.sql new file mode 100644 index 00000000000..3d82a905e8b --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/7/out.sql @@ -0,0 +1,143 @@ +WITH `bfcte_0` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_22`, + `N_NAME` AS `bfcol_23`, + COALESCE(COALESCE(`N_NAME` IN ('FRANCE', 'GERMANY'), FALSE), FALSE) AS `bfcol_24` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_4` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + COALESCE(COALESCE(`N_NAME` IN ('FRANCE', 'GERMANY'), FALSE), FALSE) +), `bfcte_1` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_2`, + `S_NATIONKEY` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_31`, + `L_SUPPKEY` AS `bfcol_32`, + `L_EXTENDEDPRICE` AS `bfcol_33`, + `L_DISCOUNT` AS `bfcol_34`, + `L_SHIPDATE` AS `bfcol_35` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' + WHERE + ( + `L_SHIPDATE` >= CAST('1995-01-01' AS DATE) + ) + AND ( + `L_SHIPDATE` <= CAST('1996-12-31' AS DATE) + ) +), `bfcte_3` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_9`, + `O_CUSTKEY` AS `bfcol_10` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_11`, + `C_NATIONKEY` AS `bfcol_12` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `bfcol_22` AS `bfcol_36`, + `bfcol_23` AS `bfcol_37` + FROM `bfcte_0` +), `bfcte_6` AS ( + SELECT + `bfcol_22` AS `bfcol_38`, + `bfcol_23` AS `bfcol_39` + FROM `bfcte_0` +), `bfcte_7` AS ( + SELECT + `bfcol_11` AS `bfcol_40`, + `bfcol_39` AS `bfcol_41` + FROM `bfcte_4` + INNER JOIN `bfcte_6` + ON COALESCE(`bfcol_12`, 0) = COALESCE(`bfcol_38`, 0) + AND COALESCE(`bfcol_12`, 1) = COALESCE(`bfcol_38`, 1) +), `bfcte_8` AS ( + SELECT + `bfcol_41` AS `bfcol_42`, + `bfcol_9` AS `bfcol_43` + FROM `bfcte_7` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_40`, 0) = COALESCE(`bfcol_10`, 0) + AND COALESCE(`bfcol_40`, 1) = COALESCE(`bfcol_10`, 1) +), `bfcte_9` AS ( + SELECT + `bfcol_42` AS `bfcol_44`, + `bfcol_32` AS `bfcol_45`, + `bfcol_33` AS `bfcol_46`, + `bfcol_34` AS `bfcol_47`, + `bfcol_35` AS `bfcol_48` + FROM `bfcte_8` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_43`, 0) = COALESCE(`bfcol_31`, 0) + AND COALESCE(`bfcol_43`, 1) = COALESCE(`bfcol_31`, 1) +), `bfcte_10` AS ( + SELECT + `bfcol_44` AS `bfcol_49`, + `bfcol_46` AS `bfcol_50`, + `bfcol_47` AS `bfcol_51`, + `bfcol_48` AS `bfcol_52`, + `bfcol_3` AS `bfcol_53` + FROM `bfcte_9` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_45`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_45`, 1) = COALESCE(`bfcol_2`, 1) +), `bfcte_11` AS ( + SELECT + `bfcol_49`, + `bfcol_50`, + `bfcol_51`, + `bfcol_52`, + `bfcol_53`, + `bfcol_36`, + `bfcol_37`, + `bfcol_49` AS `bfcol_59`, + `bfcol_50` AS `bfcol_60`, + `bfcol_51` AS `bfcol_61`, + `bfcol_52` AS `bfcol_62`, + `bfcol_37` AS `bfcol_63`, + `bfcol_49` <> `bfcol_37` AS `bfcol_64`, + `bfcol_49` AS `bfcol_76`, + `bfcol_52` AS `bfcol_77`, + `bfcol_37` AS `bfcol_78`, + `bfcol_50` * ( + 1.0 - `bfcol_51` + ) AS `bfcol_79`, + `bfcol_49` AS `bfcol_84`, + `bfcol_37` AS `bfcol_85`, + `bfcol_50` * ( + 1.0 - `bfcol_51` + ) AS `bfcol_86`, + EXTRACT(YEAR FROM `bfcol_52`) AS `bfcol_87` + FROM `bfcte_10` + INNER JOIN `bfcte_5` + ON COALESCE(`bfcol_53`, 0) = COALESCE(`bfcol_36`, 0) + AND COALESCE(`bfcol_53`, 1) = COALESCE(`bfcol_36`, 1) + WHERE + `bfcol_49` <> `bfcol_37` +), `bfcte_12` AS ( + SELECT + `bfcol_85`, + `bfcol_84`, + `bfcol_87`, + COALESCE(SUM(`bfcol_86`), 0) AS `bfcol_92` + FROM `bfcte_11` + WHERE + NOT `bfcol_85` IS NULL AND NOT `bfcol_84` IS NULL AND NOT `bfcol_87` IS NULL + GROUP BY + `bfcol_85`, + `bfcol_84`, + `bfcol_87` +) +SELECT + `bfcol_85` AS `SUPP_NATION`, + `bfcol_84` AS `CUST_NATION`, + `bfcol_87` AS `L_YEAR`, + `bfcol_92` AS `REVENUE` +FROM `bfcte_12` +ORDER BY + `bfcol_85` ASC NULLS LAST, + `bfcol_84` ASC NULLS LAST, + `bfcol_87` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/8/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/8/out.sql new file mode 100644 index 00000000000..b2fa2971caf --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/8/out.sql @@ -0,0 +1,193 @@ +WITH `bfcte_0` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_0`, + `N_NAME` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_6` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_4`, + `N_REGIONKEY` AS `bfcol_5` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_6` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `R_REGIONKEY` AS `bfcol_2`, + `R_NAME` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`REGION` AS `bft_5` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `C_CUSTKEY` AS `bfcol_6`, + `C_NATIONKEY` AS `bfcol_7` + FROM `bigframes-dev`.`tpch`.`CUSTOMER` AS `bft_4` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_8`, + `O_CUSTKEY` AS `bfcol_9`, + `O_ORDERDATE` AS `bfcol_10` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_11`, + `S_NATIONKEY` AS `bfcol_12` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_6` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_13`, + `L_PARTKEY` AS `bfcol_14`, + `L_SUPPKEY` AS `bfcol_15`, + `L_EXTENDEDPRICE` AS `bfcol_16`, + `L_DISCOUNT` AS `bfcol_17` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_7` AS ( + SELECT + `P_PARTKEY` AS `bfcol_18`, + `P_TYPE` AS `bfcol_19` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_8` AS ( + SELECT + `bfcol_19` AS `bfcol_20`, + `bfcol_13` AS `bfcol_21`, + `bfcol_15` AS `bfcol_22`, + `bfcol_16` AS `bfcol_23`, + `bfcol_17` AS `bfcol_24` + FROM `bfcte_7` + INNER JOIN `bfcte_6` + ON COALESCE(`bfcol_18`, 0) = COALESCE(`bfcol_14`, 0) + AND COALESCE(`bfcol_18`, 1) = COALESCE(`bfcol_14`, 1) +), `bfcte_9` AS ( + SELECT + `bfcol_20` AS `bfcol_25`, + `bfcol_21` AS `bfcol_26`, + `bfcol_23` AS `bfcol_27`, + `bfcol_24` AS `bfcol_28`, + `bfcol_12` AS `bfcol_29` + FROM `bfcte_8` + INNER JOIN `bfcte_5` + ON COALESCE(`bfcol_22`, 0) = COALESCE(`bfcol_11`, 0) + AND COALESCE(`bfcol_22`, 1) = COALESCE(`bfcol_11`, 1) +), `bfcte_10` AS ( + SELECT + `bfcol_25` AS `bfcol_30`, + `bfcol_27` AS `bfcol_31`, + `bfcol_28` AS `bfcol_32`, + `bfcol_29` AS `bfcol_33`, + `bfcol_9` AS `bfcol_34`, + `bfcol_10` AS `bfcol_35` + FROM `bfcte_9` + INNER JOIN `bfcte_4` + ON COALESCE(`bfcol_26`, 0) = COALESCE(`bfcol_8`, 0) + AND COALESCE(`bfcol_26`, 1) = COALESCE(`bfcol_8`, 1) +), `bfcte_11` AS ( + SELECT + `bfcol_30` AS `bfcol_36`, + `bfcol_31` AS `bfcol_37`, + `bfcol_32` AS `bfcol_38`, + `bfcol_33` AS `bfcol_39`, + `bfcol_35` AS `bfcol_40`, + `bfcol_7` AS `bfcol_41` + FROM `bfcte_10` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_34`, 0) = COALESCE(`bfcol_6`, 0) + AND COALESCE(`bfcol_34`, 1) = COALESCE(`bfcol_6`, 1) +), `bfcte_12` AS ( + SELECT + `bfcol_36` AS `bfcol_42`, + `bfcol_37` AS `bfcol_43`, + `bfcol_38` AS `bfcol_44`, + `bfcol_39` AS `bfcol_45`, + `bfcol_40` AS `bfcol_46`, + `bfcol_5` AS `bfcol_47` + FROM `bfcte_11` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_41`, 0) = COALESCE(`bfcol_4`, 0) + AND COALESCE(`bfcol_41`, 1) = COALESCE(`bfcol_4`, 1) +), `bfcte_13` AS ( + SELECT + `bfcol_42` AS `bfcol_66`, + `bfcol_43` AS `bfcol_67`, + `bfcol_44` AS `bfcol_68`, + `bfcol_45` AS `bfcol_69`, + `bfcol_46` AS `bfcol_70` + FROM `bfcte_12` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_47`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_47`, 1) = COALESCE(`bfcol_2`, 1) + WHERE + `bfcol_3` = 'AMERICA' +), `bfcte_14` AS ( + SELECT + `bfcol_66`, + `bfcol_67`, + `bfcol_68`, + `bfcol_69`, + `bfcol_70`, + `bfcol_0`, + `bfcol_1`, + `bfcol_66` AS `bfcol_76`, + `bfcol_67` AS `bfcol_77`, + `bfcol_68` AS `bfcol_78`, + `bfcol_70` AS `bfcol_79`, + `bfcol_1` AS `bfcol_80`, + ( + `bfcol_70` >= CAST('1995-01-01' AS DATE) + ) + AND ( + `bfcol_70` <= CAST('1996-12-31' AS DATE) + ) AS `bfcol_81`, + `bfcol_67` AS `bfcol_93`, + `bfcol_68` AS `bfcol_94`, + `bfcol_70` AS `bfcol_95`, + `bfcol_1` AS `bfcol_96`, + `bfcol_66` = 'ECONOMY ANODIZED STEEL' AS `bfcol_97`, + `bfcol_67` AS `bfcol_107`, + `bfcol_68` AS `bfcol_108`, + `bfcol_1` AS `bfcol_109`, + EXTRACT(YEAR FROM `bfcol_70`) AS `bfcol_110`, + `bfcol_1` AS `bfcol_115`, + EXTRACT(YEAR FROM `bfcol_70`) AS `bfcol_116`, + `bfcol_67` * ( + 1.0 - `bfcol_68` + ) AS `bfcol_117`, + EXTRACT(YEAR FROM `bfcol_70`) AS `bfcol_121`, + `bfcol_67` * ( + 1.0 - `bfcol_68` + ) AS `bfcol_122`, + IF(`bfcol_1` = 'BRAZIL', `bfcol_67` * ( + 1.0 - `bfcol_68` + ), 0) AS `bfcol_123`, + EXTRACT(YEAR FROM `bfcol_70`) AS `bfcol_127`, + IF(`bfcol_1` = 'BRAZIL', `bfcol_67` * ( + 1.0 - `bfcol_68` + ), 0) AS `bfcol_128`, + `bfcol_67` * ( + 1.0 - `bfcol_68` + ) AS `bfcol_129` + FROM `bfcte_13` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_69`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_69`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + ( + `bfcol_70` >= CAST('1995-01-01' AS DATE) + ) + AND ( + `bfcol_70` <= CAST('1996-12-31' AS DATE) + ) + AND `bfcol_66` = 'ECONOMY ANODIZED STEEL' +), `bfcte_15` AS ( + SELECT + `bfcol_127`, + COALESCE(SUM(`bfcol_128`), 0) AS `bfcol_133`, + COALESCE(SUM(`bfcol_129`), 0) AS `bfcol_134` + FROM `bfcte_14` + WHERE + NOT `bfcol_127` IS NULL + GROUP BY + `bfcol_127` +) +SELECT + `bfcol_127` AS `O_YEAR`, + ROUND(IEEE_DIVIDE(`bfcol_133`, `bfcol_134`), 2) AS `MKT_SHARE` +FROM `bfcte_15` +ORDER BY + `bfcol_127` ASC NULLS LAST, + `bfcol_127` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/9/out.sql b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/9/out.sql new file mode 100644 index 00000000000..7f886aa7ce5 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/snapshots/test_tpch/test_tpch_query/9/out.sql @@ -0,0 +1,150 @@ +WITH `bfcte_0` AS ( + SELECT + `N_NATIONKEY` AS `bfcol_0`, + `N_NAME` AS `bfcol_1` + FROM `bigframes-dev`.`tpch`.`NATION` AS `bft_5` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_1` AS ( + SELECT + `O_ORDERKEY` AS `bfcol_2`, + `O_ORDERDATE` AS `bfcol_3` + FROM `bigframes-dev`.`tpch`.`ORDERS` AS `bft_4` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_2` AS ( + SELECT + `S_SUPPKEY` AS `bfcol_4`, + `S_NATIONKEY` AS `bfcol_5` + FROM `bigframes-dev`.`tpch`.`SUPPLIER` AS `bft_3` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_3` AS ( + SELECT + `PS_PARTKEY` AS `bfcol_6`, + `PS_SUPPKEY` AS `bfcol_7`, + `PS_SUPPLYCOST` AS `bfcol_8` + FROM `bigframes-dev`.`tpch`.`PARTSUPP` AS `bft_2` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_4` AS ( + SELECT + `L_ORDERKEY` AS `bfcol_9`, + `L_PARTKEY` AS `bfcol_10`, + `L_SUPPKEY` AS `bfcol_11`, + `L_QUANTITY` AS `bfcol_12`, + `L_EXTENDEDPRICE` AS `bfcol_13`, + `L_DISCOUNT` AS `bfcol_14` + FROM `bigframes-dev`.`tpch`.`LINEITEM` AS `bft_1` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_5` AS ( + SELECT + `P_PARTKEY` AS `bfcol_15`, + `P_NAME` AS `bfcol_16` + FROM `bigframes-dev`.`tpch`.`PART` AS `bft_0` FOR SYSTEM_TIME AS OF '2026-03-10T18:00:00' +), `bfcte_6` AS ( + SELECT + `bfcol_16` AS `bfcol_17`, + `bfcol_9` AS `bfcol_18`, + `bfcol_10` AS `bfcol_19`, + `bfcol_11` AS `bfcol_20`, + `bfcol_12` AS `bfcol_21`, + `bfcol_13` AS `bfcol_22`, + `bfcol_14` AS `bfcol_23` + FROM `bfcte_5` + INNER JOIN `bfcte_4` + ON COALESCE(`bfcol_15`, 0) = COALESCE(`bfcol_10`, 0) + AND COALESCE(`bfcol_15`, 1) = COALESCE(`bfcol_10`, 1) +), `bfcte_7` AS ( + SELECT + `bfcol_17` AS `bfcol_24`, + `bfcol_18` AS `bfcol_25`, + `bfcol_20` AS `bfcol_26`, + `bfcol_21` AS `bfcol_27`, + `bfcol_22` AS `bfcol_28`, + `bfcol_23` AS `bfcol_29`, + `bfcol_8` AS `bfcol_30` + FROM `bfcte_6` + INNER JOIN `bfcte_3` + ON COALESCE(`bfcol_20`, 0) = COALESCE(`bfcol_7`, 0) + AND COALESCE(`bfcol_20`, 1) = COALESCE(`bfcol_7`, 1) + AND COALESCE(`bfcol_19`, 0) = COALESCE(`bfcol_6`, 0) + AND COALESCE(`bfcol_19`, 1) = COALESCE(`bfcol_6`, 1) +), `bfcte_8` AS ( + SELECT + `bfcol_24` AS `bfcol_31`, + `bfcol_25` AS `bfcol_32`, + `bfcol_27` AS `bfcol_33`, + `bfcol_28` AS `bfcol_34`, + `bfcol_29` AS `bfcol_35`, + `bfcol_30` AS `bfcol_36`, + `bfcol_5` AS `bfcol_37` + FROM `bfcte_7` + INNER JOIN `bfcte_2` + ON COALESCE(`bfcol_26`, 0) = COALESCE(`bfcol_4`, 0) + AND COALESCE(`bfcol_26`, 1) = COALESCE(`bfcol_4`, 1) +), `bfcte_9` AS ( + SELECT + `bfcol_31` AS `bfcol_38`, + `bfcol_33` AS `bfcol_39`, + `bfcol_34` AS `bfcol_40`, + `bfcol_35` AS `bfcol_41`, + `bfcol_36` AS `bfcol_42`, + `bfcol_37` AS `bfcol_43`, + `bfcol_3` AS `bfcol_44` + FROM `bfcte_8` + INNER JOIN `bfcte_1` + ON COALESCE(`bfcol_32`, 0) = COALESCE(`bfcol_2`, 0) + AND COALESCE(`bfcol_32`, 1) = COALESCE(`bfcol_2`, 1) +), `bfcte_10` AS ( + SELECT + `bfcol_38`, + `bfcol_39`, + `bfcol_40`, + `bfcol_41`, + `bfcol_42`, + `bfcol_43`, + `bfcol_44`, + `bfcol_0`, + `bfcol_1`, + `bfcol_39` AS `bfcol_52`, + `bfcol_40` AS `bfcol_53`, + `bfcol_41` AS `bfcol_54`, + `bfcol_42` AS `bfcol_55`, + `bfcol_44` AS `bfcol_56`, + `bfcol_1` AS `bfcol_57`, + REGEXP_CONTAINS(`bfcol_38`, 'green') AS `bfcol_58`, + `bfcol_39` AS `bfcol_72`, + `bfcol_40` AS `bfcol_73`, + `bfcol_41` AS `bfcol_74`, + `bfcol_42` AS `bfcol_75`, + `bfcol_1` AS `bfcol_76`, + EXTRACT(YEAR FROM `bfcol_44`) AS `bfcol_77`, + `bfcol_1` AS `bfcol_84`, + EXTRACT(YEAR FROM `bfcol_44`) AS `bfcol_85`, + ( + `bfcol_40` * ( + 1 - `bfcol_41` + ) + ) - ( + `bfcol_42` * `bfcol_39` + ) AS `bfcol_86` + FROM `bfcte_9` + INNER JOIN `bfcte_0` + ON COALESCE(`bfcol_43`, 0) = COALESCE(`bfcol_0`, 0) + AND COALESCE(`bfcol_43`, 1) = COALESCE(`bfcol_0`, 1) + WHERE + REGEXP_CONTAINS(`bfcol_38`, 'green') +), `bfcte_11` AS ( + SELECT + `bfcol_84`, + `bfcol_85`, + COALESCE(SUM(`bfcol_86`), 0) AS `bfcol_90` + FROM `bfcte_10` + WHERE + NOT `bfcol_84` IS NULL AND NOT `bfcol_85` IS NULL + GROUP BY + `bfcol_84`, + `bfcol_85` +) +SELECT + `bfcol_84` AS `NATION`, + `bfcol_85` AS `O_YEAR`, + ROUND(`bfcol_90`, 2) AS `SUM_PROFIT` +FROM `bfcte_11` +ORDER BY + `bfcol_84` ASC NULLS LAST, + `bfcol_85` DESC, + `bfcol_84` ASC NULLS LAST, + `bfcol_85` ASC NULLS LAST \ No newline at end of file diff --git a/tests/unit/core/compile/sqlglot/tpch/test_tpch.py b/tests/unit/core/compile/sqlglot/tpch/test_tpch.py new file mode 100644 index 00000000000..042d8d55d40 --- /dev/null +++ b/tests/unit/core/compile/sqlglot/tpch/test_tpch.py @@ -0,0 +1,50 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import re + +import pytest + +freezegun = pytest.importorskip("freezegun") +pytest.importorskip("pytest_snapshot") + + +@pytest.mark.parametrize("query_num", range(1, 23)) +def test_tpch_query(tpch_session, query_num, snapshot): + project_id = "bigframes-dev" + dataset_id = "tpch" + + query_file_path = f"third_party/bigframes_vendored/tpch/queries/q{query_num}.py" + + with open(query_file_path, "r") as f: + query_code = f.read() + + # We want to capture the result dataframe instead of running next(result.to_pandas_batches(...)) + modified_code = re.sub( + r"next\((\w+)\.to_pandas_batches\((.*?)\)\)", + r"return \1", + query_code, + ) + + exec_globals = {} # type: ignore[var-annotated] + exec(modified_code, exec_globals) + q_func = exec_globals["q"] + + with freezegun.freeze_time("2026-03-10 18:00:00"): + result = q_func(project_id, dataset_id, tpch_session) + + # result should be a DataFrame + sql = result.sql + + snapshot.assert_match(sql, "out.sql") diff --git a/third_party/bigframes_vendored/tpch/queries/q19.py b/third_party/bigframes_vendored/tpch/queries/q19.py index 1371af53fc0..a217db3dc32 100644 --- a/third_party/bigframes_vendored/tpch/queries/q19.py +++ b/third_party/bigframes_vendored/tpch/queries/q19.py @@ -53,5 +53,11 @@ def q(project_id: str, dataset_id: str, session: bigframes.Session): ) ] - revenue = (filtered["L_EXTENDEDPRICE"] * (1 - filtered["L_DISCOUNT"])).sum() - _ = round(revenue, 2) + result_df = ( + (filtered["L_EXTENDEDPRICE"] * (1 - filtered["L_DISCOUNT"])) + .agg(["sum"]) + .rename("REVENUE") + .to_frame() + ) + + next(result_df.to_pandas_batches(max_results=1500))