diff --git a/vortex-sqllogictest/README.md b/vortex-sqllogictest/README.md index 6189ceef1e8..29ab664302d 100644 --- a/vortex-sqllogictest/README.md +++ b/vortex-sqllogictest/README.md @@ -10,9 +10,9 @@ sequentially for one engine. Each test is named `slt::::` ## Running tests -Some tests use TPC-H data at scale factor 0.1 and one shard of the partitioned ClickBench -dataset (about one million rows of `hits`). Generate both first, then run the suite with -`cargo nextest`: +Some tests use TPC-H and TPC-DS data at scale factor 0.1 and one shard of the partitioned +ClickBench dataset (about one million rows of `hits`). Generate them first, then run the suite +with `cargo nextest`: ```shell ./vortex-sqllogictest/slt/generate_data.sh @@ -22,35 +22,39 @@ cargo test -p vortex-sqllogictest --test sqllogictests ``` `generate_data.sh` accepts dataset names to generate only some of the fixtures, for example -`./vortex-sqllogictest/slt/generate_data.sh tpch` or `... clickbench`. Run it with `--help` to list -the datasets. It runs each dataset's own script, `slt/tpch/generate_data.sh` or -`slt/clickbench/generate_data.sh`, which can also be run directly. - -The generated Vortex and Parquet data lives under `slt/tpch/data/` and `slt/clickbench/data/` -(git-ignored). Both formats are required; regenerate older fixtures if they only contain Vortex -files. If either format is missing, that suite's tests are reported as **ignored**, so the rest of -the suite still runs. These `.slt` files load their tables through paths relative to the crate -root, so run the tests via `cargo nextest`/`cargo test`, which set the working directory -accordingly. - -TPC-H scripts live under `slt/tpch/datafusion/` and `slt/tpch/duckdb/`, ClickBench scripts under +`./vortex-sqllogictest/slt/generate_data.sh tpch`, `... tpcds` or `... clickbench`. Run it with +`--help` to list the datasets. It runs each dataset's own script, `slt/tpch/generate_data.sh`, +`slt/tpcds/generate_data.sh` or `slt/clickbench/generate_data.sh`, which can also be run directly. +TPC-DS is generated by DuckDB's `tpcds` extension through `uvx`. + +The generated Vortex and Parquet data lives under `slt/tpch/data/`, `slt/tpcds/data/` and +`slt/clickbench/data/` (git-ignored). Both formats are required; regenerate older fixtures if they +only contain Vortex files. If either format is missing, that suite's tests are reported as +**ignored**, so the rest of the suite still runs. These `.slt` files load their tables through +paths relative to the crate root, so run the tests via `cargo nextest`/`cargo test`, which set the +working directory accordingly. + +TPC-H scripts live under `slt/tpch/datafusion/` and `slt/tpch/duckdb/`, TPC-DS scripts under +`slt/tpcds/datafusion/` and `slt/tpcds/duckdb/`, ClickBench scripts under `slt/clickbench/datafusion/` and `slt/clickbench/duckdb/`. Each engine has its own -`create.slt.no`, `results/q*.slt.no` (`q1` to `q22` for TPC-H, `q0` to `q42` for ClickBench, -matching the upstream numbering), and `drop.slt.no`. Its `tpch.slt`/`clickbench.slt` runs these -against Vortex and asserts EXPLAIN output from the matching `plans/q*.slt.no`. Its `parquet.slt` -runs the same queries against the original Parquet fixtures and checks the same expected results. +`create.slt.no`, `results/q*.slt.no` (`q1` to `q22` for TPC-H, `q1` to `q99` for TPC-DS, `q0` to +`q42` for ClickBench, matching the upstream numbering), and `drop.slt.no`. Its +`tpch.slt`/`tpcds.slt`/`clickbench.slt` runs these against Vortex and asserts EXPLAIN output from +the matching `plans/q*.slt.no`. Its `parquet.slt` runs the same queries against the original +Parquet fixtures and checks the same expected results. DataFusion uses external tables; DuckDB uses views over files. The `FILE_FORMAT` substitution variable selects the format in each engine's table setup. ClickBench plans explain the upstream queries unchanged. Where an upstream query leaves the order of tied rows unspecified, its result record adds tie-breaking `ORDER BY` columns so both formats -and repeated runs produce the same rows. The ClickBench generator also runs -`slt/clickbench/duckdb/parity.slt` right after converting the shard; it reads both files through -DuckDB and fails if the Parquet and Vortex data differ. After completing ClickBench DataFusion -plans, replace the byte ranges in `file_groups` with ``, as the TPC-H plans do: +and repeated runs produce the same rows. The ClickBench and TPC-DS generators also run +`slt/clickbench/duckdb/parity.slt` and `slt/tpcds/duckdb/parity.slt` right after converting their +fixtures; they read both formats through DuckDB and fail if the Parquet and Vortex data differ. +After completing ClickBench or TPC-DS DataFusion plans, replace the byte ranges in `file_groups` +with ``, as the TPC-H plans do: ```shell -sed -i -E 's/hits\.vortex:[0-9]+\.\.[0-9]+/hits.vortex:/g' vortex-sqllogictest/slt/clickbench/datafusion/plans/*.slt.no +sed -i -E 's/\.vortex:[0-9]+\.\.[0-9]+/.vortex:/g' vortex-sqllogictest/slt/{clickbench,tpcds}/datafusion/plans/*.slt.no ``` Because the harness is `libtest-mimic`-based, the standard test flags work, including @@ -123,7 +127,7 @@ engine currently produces, instead of comparing against it. This is useful after change to query results or plan formatting. ```shell -# Complete every file (generate TPC-H and ClickBench data first if you want their result files updated): +# Complete every file (generate the TPC-H, TPC-DS and ClickBench data first if you want their result files updated): cargo test -p vortex-sqllogictest --test sqllogictests -- --complete # Complete only the files whose name matches a substring: cargo test -p vortex-sqllogictest --test sqllogictests -- --complete strings diff --git a/vortex-sqllogictest/bin/sqllogictests-runner.rs b/vortex-sqllogictest/bin/sqllogictests-runner.rs index 6327473203b..743d286bd65 100644 --- a/vortex-sqllogictest/bin/sqllogictests-runner.rs +++ b/vortex-sqllogictest/bin/sqllogictests-runner.rs @@ -170,6 +170,7 @@ fn engines_for(path: &Path) -> (bool, bool) { /// Vortex and Parquet versions both have to exist for the suite to run. const GENERATED_DATASETS: &[(&str, &str)] = &[ ("tpch", "tpch/data/lineitem"), + ("tpcds", "tpcds/data/store_sales"), ("clickbench", "clickbench/data/hits"), ]; @@ -242,9 +243,9 @@ fn main() -> anyhow::Result { let mut trials = Vec::new(); for path in files { let (run_datafusion, run_duckdb) = engines_for(&path); - // TPC-H and ClickBench trials are ignored (rather than removed) when the - // generated data is absent, so `--list` and the run summary still - // account for them. + // Generated-data trials (TPC-H, TPC-DS, ClickBench) are ignored (rather + // than removed) when the data is absent, so `--list` and the run summary + // still account for them. let ignored = missing_generated_data(&path); let name = path .strip_prefix(SLT_ROOT.as_path()) diff --git a/vortex-sqllogictest/slt/generate_data.sh b/vortex-sqllogictest/slt/generate_data.sh index 7db8dda441b..9660f5634ae 100755 --- a/vortex-sqllogictest/slt/generate_data.sh +++ b/vortex-sqllogictest/slt/generate_data.sh @@ -10,6 +10,7 @@ # # Datasets: # tpch TPC-H at scale factor 0.1. +# tpcds TPC-DS at scale factor 0.1 from DuckDB's tpcds extension. # clickbench One shard (~1M rows) of the partitioned ClickBench `hits` table. # # With no arguments every dataset is generated. @@ -17,7 +18,7 @@ set -e -o pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -ALL_DATASETS=(tpch clickbench) +ALL_DATASETS=(tpch tpcds clickbench) usage() { echo "Usage: $(basename "${BASH_SOURCE[0]}") [DATASET...]" @@ -32,7 +33,7 @@ for arg in "$@"; do usage exit 0 ;; - tpch|clickbench) + tpch|tpcds|clickbench) datasets+=("${arg}") ;; *) diff --git a/vortex-sqllogictest/slt/tpcds/.gitignore b/vortex-sqllogictest/slt/tpcds/.gitignore new file mode 100644 index 00000000000..3af0ccb687b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/.gitignore @@ -0,0 +1 @@ +/data diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/create.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/create.slt.no new file mode 100644 index 00000000000..d568efd2297 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/create.slt.no @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +# Keep fixture paths under WORK_DIR so EXPLAIN output can normalize them. +# Plans ignore byte ranges because they depend on the generated fixture sizes. +system ok +cp slt/tpcds/data/*.$FILE_FORMAT "$WORK_DIR/" + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS call_center +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/call_center.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS catalog_page +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/catalog_page.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS catalog_returns +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/catalog_returns.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS catalog_sales +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/catalog_sales.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS customer +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/customer.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS customer_address +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/customer_address.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS customer_demographics +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/customer_demographics.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS date_dim +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/date_dim.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS household_demographics +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/household_demographics.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS income_band +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/income_band.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS inventory +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/inventory.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS item +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/item.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS promotion +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/promotion.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS reason +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/reason.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS ship_mode +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/ship_mode.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS store +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/store.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS store_returns +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/store_returns.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS store_sales +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/store_sales.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS time_dim +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/time_dim.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS warehouse +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/warehouse.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS web_page +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/web_page.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS web_returns +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/web_returns.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS web_sales +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/web_sales.${FILE_FORMAT}'; + +statement ok +CREATE EXTERNAL TABLE IF NOT EXISTS web_site +STORED AS ${FILE_FORMAT} +LOCATION '${WORK_DIR}/web_site.${FILE_FORMAT}'; diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/drop.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/drop.slt.no new file mode 100644 index 00000000000..e65f9b56442 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/drop.slt.no @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +statement ok +DROP TABLE web_site; + +statement ok +DROP TABLE web_sales; + +statement ok +DROP TABLE web_returns; + +statement ok +DROP TABLE web_page; + +statement ok +DROP TABLE warehouse; + +statement ok +DROP TABLE time_dim; + +statement ok +DROP TABLE store_sales; + +statement ok +DROP TABLE store_returns; + +statement ok +DROP TABLE store; + +statement ok +DROP TABLE ship_mode; + +statement ok +DROP TABLE reason; + +statement ok +DROP TABLE promotion; + +statement ok +DROP TABLE item; + +statement ok +DROP TABLE inventory; + +statement ok +DROP TABLE income_band; + +statement ok +DROP TABLE household_demographics; + +statement ok +DROP TABLE date_dim; + +statement ok +DROP TABLE customer_demographics; + +statement ok +DROP TABLE customer_address; + +statement ok +DROP TABLE customer; + +statement ok +DROP TABLE catalog_sales; + +statement ok +DROP TABLE catalog_returns; + +statement ok +DROP TABLE catalog_page; + +statement ok +DROP TABLE call_center; diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/parquet.slt b/vortex-sqllogictest/slt/tpcds/datafusion/parquet.slt new file mode 100644 index 00000000000..e02dc31fe45 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/parquet.slt @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +include ../../setup.slt.no + +let FILE_FORMAT +SELECT 'parquet'; + +include ./create.slt.no +include ./results/*.slt.no +include ./drop.slt.no diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q1.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q1.slt.no new file mode 100644 index 00000000000..f21d55b4c0b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q1.slt.no @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH customer_total_return AS + (SELECT sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + sum(sr_return_amt) AS ctr_total_return + FROM store_returns, + date_dim + WHERE sr_returned_date_sk = d_date_sk + AND d_year = 2000 + GROUP BY sr_customer_sk, + sr_store_sk) +SELECT c_customer_id +FROM customer_total_return ctr1, + store, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100; +---- +logical_plan +01)Sort: customer.c_customer_id ASC NULLS LAST, fetch=100 +02)--Projection: customer.c_customer_id +03)----LeftSemi Join: ctr1.ctr_store_sk = __scalar_sq_1.ctr_store_sk Filter: CAST(ctr1.ctr_total_return AS Decimal128(30, 15)) > __scalar_sq_1.avg(ctr2.ctr_total_return) * Float64(1.2) +04)------Projection: ctr1.ctr_store_sk, ctr1.ctr_total_return, customer.c_customer_id +05)--------Inner Join: ctr1.ctr_customer_sk = customer.c_customer_sk +06)----------Projection: ctr1.ctr_customer_sk, ctr1.ctr_store_sk, ctr1.ctr_total_return +07)------------Inner Join: ctr1.ctr_store_sk = store.s_store_sk +08)--------------SubqueryAlias: ctr1 +09)----------------SubqueryAlias: customer_total_return +10)------------------Projection: store_returns.sr_customer_sk AS ctr_customer_sk, store_returns.sr_store_sk AS ctr_store_sk, sum(store_returns.sr_return_amt) AS ctr_total_return +11)--------------------Aggregate: groupBy=[[store_returns.sr_customer_sk, store_returns.sr_store_sk]], aggr=[[sum(store_returns.sr_return_amt)]] +12)----------------------Projection: store_returns.sr_customer_sk, store_returns.sr_store_sk, store_returns.sr_return_amt +13)------------------------Inner Join: store_returns.sr_returned_date_sk = date_dim.d_date_sk +14)--------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_customer_sk, sr_store_sk, sr_return_amt] +15)--------------------------Projection: date_dim.d_date_sk +16)----------------------------Filter: date_dim.d_year = Int64(2000) +17)------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +18)--------------Projection: store.s_store_sk +19)----------------Filter: store.s_state = Utf8View("TN") +20)------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +21)----------TableScan: customer projection=[c_customer_sk, c_customer_id] +22)------SubqueryAlias: __scalar_sq_1 +23)--------Projection: CAST(CAST(avg(ctr2.ctr_total_return) AS Float64) * Float64(1.2) AS Decimal128(30, 15)), ctr2.ctr_store_sk +24)----------Aggregate: groupBy=[[ctr2.ctr_store_sk]], aggr=[[avg(ctr2.ctr_total_return)]] +25)------------SubqueryAlias: ctr2 +26)--------------SubqueryAlias: customer_total_return +27)----------------Projection: store_returns.sr_store_sk AS ctr_store_sk, sum(store_returns.sr_return_amt) AS ctr_total_return +28)------------------Aggregate: groupBy=[[store_returns.sr_customer_sk, store_returns.sr_store_sk]], aggr=[[sum(store_returns.sr_return_amt)]] +29)--------------------Projection: store_returns.sr_customer_sk, store_returns.sr_store_sk, store_returns.sr_return_amt +30)----------------------Inner Join: store_returns.sr_returned_date_sk = date_dim.d_date_sk +31)------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_customer_sk, sr_store_sk, sr_return_amt] +32)------------------------Projection: date_dim.d_date_sk +33)--------------------------Filter: date_dim.d_year = Int64(2000) +34)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +physical_plan +01)SortPreservingMergeExec: [c_customer_id@0 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_customer_id@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ctr_store_sk@0, ctr_store_sk@1)], filter=CAST(ctr_total_return@0 AS Decimal128(30, 15)) > avg(ctr2.ctr_total_return) * Float64(1.2)@1, projection=[c_customer_id@2] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ctr_customer_sk@0, c_customer_sk@0)], projection=[ctr_store_sk@1, ctr_total_return@2, c_customer_id@4] +06)----------CoalescePartitionsExec +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ctr_store_sk@1)], projection=[ctr_customer_sk@1, ctr_store_sk@2, ctr_total_return@3] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_state@24 = TN +09)--------------ProjectionExec: expr=[sr_customer_sk@0 as ctr_customer_sk, sr_store_sk@1 as ctr_store_sk, sum(store_returns.sr_return_amt)@2 as ctr_total_return] +10)----------------AggregateExec: mode=FinalPartitioned, gby=[sr_customer_sk@0 as sr_customer_sk, sr_store_sk@1 as sr_store_sk], aggr=[sum(store_returns.sr_return_amt)] +11)------------------RepartitionExec: partitioning=Hash([sr_customer_sk@0, sr_store_sk@1], 4), input_partitions=4 +12)--------------------AggregateExec: mode=Partial, gby=[sr_customer_sk@0 as sr_customer_sk, sr_store_sk@1 as sr_store_sk], aggr=[sum(store_returns.sr_return_amt)] +13)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@0)], projection=[sr_customer_sk@2, sr_store_sk@3, sr_return_amt@4] +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +15)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_customer_sk, sr_store_sk, sr_return_amt], file_type=vortex +16)----------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +17)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id], file_type=vortex +18)------ProjectionExec: expr=[CAST(CAST(avg(ctr2.ctr_total_return)@1 AS Float64) * 1.2 AS Decimal128(30, 15)) as avg(ctr2.ctr_total_return) * Float64(1.2), ctr_store_sk@0 as ctr_store_sk] +19)--------AggregateExec: mode=FinalPartitioned, gby=[ctr_store_sk@0 as ctr_store_sk], aggr=[avg(ctr2.ctr_total_return)] +20)----------RepartitionExec: partitioning=Hash([ctr_store_sk@0], 4), input_partitions=4 +21)------------AggregateExec: mode=Partial, gby=[ctr_store_sk@0 as ctr_store_sk], aggr=[avg(ctr2.ctr_total_return)] +22)--------------ProjectionExec: expr=[sr_store_sk@1 as ctr_store_sk, sum(store_returns.sr_return_amt)@2 as ctr_total_return] +23)----------------AggregateExec: mode=FinalPartitioned, gby=[sr_customer_sk@0 as sr_customer_sk, sr_store_sk@1 as sr_store_sk], aggr=[sum(store_returns.sr_return_amt)] +24)------------------RepartitionExec: partitioning=Hash([sr_customer_sk@0, sr_store_sk@1], 4), input_partitions=4 +25)--------------------AggregateExec: mode=Partial, gby=[sr_customer_sk@0 as sr_customer_sk, sr_store_sk@1 as sr_store_sk], aggr=[sum(store_returns.sr_return_amt)] +26)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@0)], projection=[sr_customer_sk@2, sr_store_sk@3, sr_return_amt@4] +27)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +28)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_customer_sk, sr_store_sk, sr_return_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q10.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q10.slt.no new file mode 100644 index 00000000000..09a7a2f7fe1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q10.slt.no @@ -0,0 +1,144 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3, + cd_dep_count, + count(*) cnt4, + cd_dep_employed_count, + count(*) cnt5, + cd_dep_college_count, + count(*) cnt6 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ('Rush County', + 'Toole County', + 'Jefferson County', + 'Dona Ana County', + 'La Porte County') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100; +---- +logical_plan +01)Sort: customer_demographics.cd_gender ASC NULLS LAST, customer_demographics.cd_marital_status ASC NULLS LAST, customer_demographics.cd_education_status ASC NULLS LAST, customer_demographics.cd_purchase_estimate ASC NULLS LAST, customer_demographics.cd_credit_rating ASC NULLS LAST, customer_demographics.cd_dep_count ASC NULLS LAST, customer_demographics.cd_dep_employed_count ASC NULLS LAST, customer_demographics.cd_dep_college_count ASC NULLS LAST, fetch=100 +02)--Projection: customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, count(Int64(1)) AS count(*) AS cnt1, customer_demographics.cd_purchase_estimate, count(Int64(1)) AS count(*) AS cnt2, customer_demographics.cd_credit_rating, count(Int64(1)) AS count(*) AS cnt3, customer_demographics.cd_dep_count, count(Int64(1)) AS count(*) AS cnt4, customer_demographics.cd_dep_employed_count, count(Int64(1)) AS count(*) AS cnt5, customer_demographics.cd_dep_college_count, count(Int64(1)) AS count(*) AS cnt6 +03)----Aggregate: groupBy=[[customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count]], aggr=[[count(Int64(1))]] +04)------Projection: customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count +05)--------Filter: __correlated_sq_2.mark OR __correlated_sq_3.mark +06)----------Projection: customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count, __correlated_sq_2.mark, __correlated_sq_3.mark +07)------------LeftMark Join: c.c_customer_sk = __correlated_sq_3.cs_ship_customer_sk +08)--------------LeftMark Join: c.c_customer_sk = __correlated_sq_2.ws_bill_customer_sk +09)----------------LeftSemi Join: c.c_customer_sk = __correlated_sq_1.ss_customer_sk +10)------------------Projection: c.c_customer_sk, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count +11)--------------------Inner Join: c.c_current_cdemo_sk = customer_demographics.cd_demo_sk +12)----------------------Projection: c.c_customer_sk, c.c_current_cdemo_sk +13)------------------------Inner Join: c.c_current_addr_sk = ca.ca_address_sk +14)--------------------------SubqueryAlias: c +15)----------------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk] +16)--------------------------SubqueryAlias: ca +17)----------------------------Projection: customer_address.ca_address_sk +18)------------------------------Filter: customer_address.ca_county IN ([Utf8View("Rush County"), Utf8View("Toole County"), Utf8View("Jefferson County"), Utf8View("Dona Ana County"), Utf8View("La Porte County")]) +19)--------------------------------TableScan: customer_address projection=[ca_address_sk, ca_county], partial_filters=[customer_address.ca_county IN ([Utf8View("Rush County"), Utf8View("Toole County"), Utf8View("Jefferson County"), Utf8View("Dona Ana County"), Utf8View("La Porte County")])] +20)----------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status, cd_purchase_estimate, cd_credit_rating, cd_dep_count, cd_dep_employed_count, cd_dep_college_count] +21)------------------SubqueryAlias: __correlated_sq_1 +22)--------------------Projection: store_sales.ss_customer_sk +23)----------------------LeftSemi Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +24)------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk] +25)------------------------Projection: date_dim.d_date_sk +26)--------------------------Filter: date_dim.d_year = Int64(2002) AND date_dim.d_moy >= Int64(1) AND date_dim.d_moy <= Int64(4) +27)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2002), date_dim.d_moy >= Int64(1), date_dim.d_moy <= Int64(4)] +28)----------------SubqueryAlias: __correlated_sq_2 +29)------------------Projection: web_sales.ws_bill_customer_sk +30)--------------------LeftSemi Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +31)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk] +32)----------------------Projection: date_dim.d_date_sk +33)------------------------Filter: date_dim.d_year = Int64(2002) AND date_dim.d_moy >= Int64(1) AND date_dim.d_moy <= Int64(4) +34)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2002), date_dim.d_moy >= Int64(1), date_dim.d_moy <= Int64(4)] +35)--------------SubqueryAlias: __correlated_sq_3 +36)----------------Projection: catalog_sales.cs_ship_customer_sk +37)------------------LeftSemi Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +38)--------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ship_customer_sk] +39)--------------------Projection: date_dim.d_date_sk +40)----------------------Filter: date_dim.d_year = Int64(2002) AND date_dim.d_moy >= Int64(1) AND date_dim.d_moy <= Int64(4) +41)------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2002), date_dim.d_moy >= Int64(1), date_dim.d_moy <= Int64(4)] +physical_plan +01)SortPreservingMergeExec: [cd_gender@0 ASC NULLS LAST, cd_marital_status@1 ASC NULLS LAST, cd_education_status@2 ASC NULLS LAST, cd_purchase_estimate@4 ASC NULLS LAST, cd_credit_rating@6 ASC NULLS LAST, cd_dep_count@8 ASC NULLS LAST, cd_dep_employed_count@10 ASC NULLS LAST, cd_dep_college_count@12 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[cd_gender@0 as cd_gender, cd_marital_status@1 as cd_marital_status, cd_education_status@2 as cd_education_status, count(Int64(1))@8 as cnt1, cd_purchase_estimate@3 as cd_purchase_estimate, count(Int64(1))@8 as cnt2, cd_credit_rating@4 as cd_credit_rating, count(Int64(1))@8 as cnt3, cd_dep_count@5 as cd_dep_count, count(Int64(1))@8 as cnt4, cd_dep_employed_count@6 as cd_dep_employed_count, count(Int64(1))@8 as cnt5, cd_dep_college_count@7 as cd_dep_college_count, count(Int64(1))@8 as cnt6] +03)----SortExec: TopK(fetch=100), expr=[cd_gender@0 ASC NULLS LAST, cd_marital_status@1 ASC NULLS LAST, cd_education_status@2 ASC NULLS LAST, cd_purchase_estimate@3 ASC NULLS LAST, cd_credit_rating@4 ASC NULLS LAST, cd_dep_count@5 ASC NULLS LAST, cd_dep_employed_count@6 ASC NULLS LAST, cd_dep_college_count@7 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[cd_gender@0 as cd_gender, cd_marital_status@1 as cd_marital_status, cd_education_status@2 as cd_education_status, cd_purchase_estimate@3 as cd_purchase_estimate, cd_credit_rating@4 as cd_credit_rating, cd_dep_count@5 as cd_dep_count, cd_dep_employed_count@6 as cd_dep_employed_count, cd_dep_college_count@7 as cd_dep_college_count], aggr=[count(Int64(1))] +05)--------RepartitionExec: partitioning=Hash([cd_gender@0, cd_marital_status@1, cd_education_status@2, cd_purchase_estimate@3, cd_credit_rating@4, cd_dep_count@5, cd_dep_employed_count@6, cd_dep_college_count@7], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[cd_gender@0 as cd_gender, cd_marital_status@1 as cd_marital_status, cd_education_status@2 as cd_education_status, cd_purchase_estimate@3 as cd_purchase_estimate, cd_credit_rating@4 as cd_credit_rating, cd_dep_count@5 as cd_dep_count, cd_dep_employed_count@6 as cd_dep_employed_count, cd_dep_college_count@7 as cd_dep_college_count], aggr=[count(Int64(1))] +07)------------FilterExec: mark@8 OR mark@9, projection=[cd_gender@0, cd_marital_status@1, cd_education_status@2, cd_purchase_estimate@3, cd_credit_rating@4, cd_dep_count@5, cd_dep_employed_count@6, cd_dep_college_count@7] +08)--------------HashJoinExec: mode=CollectLeft, join_type=LeftMark, on=[(c_customer_sk@0, cs_ship_customer_sk@0)], projection=[cd_gender@1, cd_marital_status@2, cd_education_status@3, cd_purchase_estimate@4, cd_credit_rating@5, cd_dep_count@6, cd_dep_employed_count@7, cd_dep_college_count@8, mark@9, mark@10] +09)----------------CoalescePartitionsExec +10)------------------HashJoinExec: mode=CollectLeft, join_type=LeftMark, on=[(c_customer_sk@0, ws_bill_customer_sk@0)] +11)--------------------CoalescePartitionsExec +12)----------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(c_customer_sk@0, ss_customer_sk@0)] +13)------------------------CoalescePartitionsExec +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@1, cd_demo_sk@0)], projection=[c_customer_sk@0, cd_gender@3, cd_marital_status@4, cd_education_status@5, cd_purchase_estimate@6, cd_credit_rating@7, cd_dep_count@8, cd_dep_employed_count@9, cd_dep_college_count@10] +15)----------------------------CoalescePartitionsExec +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@2)], projection=[c_customer_sk@1, c_current_cdemo_sk@2] +17)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_county@7 IN (SET) ([Rush County, Toole County, Jefferson County, Dona Ana County, La Porte County]) +18)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +19)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk], file_type=vortex +20)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +21)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status, cd_purchase_estimate, cd_credit_rating, cd_dep_count, cd_dep_employed_count, cd_dep_college_count], file_type=vortex +22)------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@1] +23)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 AND d_moy@8 >= 1 AND d_moy@8 <= 4 +24)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk], file_type=vortex +25)--------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_customer_sk@1] +26)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 AND d_moy@8 >= 1 AND d_moy@8 <= 4 +27)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk], file_type=vortex +28)----------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ship_customer_sk@1] +29)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 AND d_moy@8 >= 1 AND d_moy@8 <= 4 +30)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_ship_customer_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q11.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q11.slt.no new file mode 100644 index 00000000000..54a14ec8406 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q11.slt.no @@ -0,0 +1,194 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ss_ext_list_price-ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ws_ext_list_price-ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN (t_w_secyear.year_total*1.0000) / t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN (t_s_secyear.year_total*1.0000) / t_s_firstyear.year_total + ELSE 0.0 + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: t_s_secyear.customer_id ASC NULLS FIRST, t_s_secyear.customer_first_name ASC NULLS FIRST, t_s_secyear.customer_last_name ASC NULLS FIRST, t_s_secyear.customer_preferred_cust_flag ASC NULLS FIRST, fetch=100 +02)--Projection: t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.customer_preferred_cust_flag +03)----Inner Join: t_s_firstyear.customer_id = t_w_secyear.customer_id Filter: CASE WHEN t_w_firstyear.year_total > Decimal128(0.00,18,2) THEN CAST(t_w_secyear.year_total AS Float64) / CAST(t_w_firstyear.year_total AS Float64) ELSE Float64(0) END > CASE WHEN t_s_firstyear.year_total > Decimal128(0.00,18,2) THEN CAST(t_s_secyear.year_total AS Float64) / CAST(t_s_firstyear.year_total AS Float64) ELSE Float64(0) END +04)------Projection: t_s_firstyear.customer_id, t_s_firstyear.year_total, t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.customer_preferred_cust_flag, t_s_secyear.year_total, t_w_firstyear.year_total +05)--------Inner Join: t_s_firstyear.customer_id = t_w_firstyear.customer_id +06)----------Inner Join: t_s_firstyear.customer_id = t_s_secyear.customer_id +07)------------SubqueryAlias: t_s_firstyear +08)--------------SubqueryAlias: year_total +09)----------------Projection: customer.c_customer_id AS customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt) AS year_total +10)------------------Filter: sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt) > Decimal128(0.00,18,2) +11)--------------------Projection: customer.c_customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt) +12)----------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)]] +13)------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_ext_discount_amt, store_sales.ss_ext_list_price, date_dim.d_year +14)--------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +15)----------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_sold_date_sk, store_sales.ss_ext_discount_amt, store_sales.ss_ext_list_price +16)------------------------------Inner Join: customer.c_customer_sk = store_sales.ss_customer_sk +17)--------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +18)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_list_price] +19)----------------------------Filter: date_dim.d_year = Int64(2001) +20)------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +21)------------SubqueryAlias: t_s_secyear +22)--------------SubqueryAlias: year_total +23)----------------Projection: customer.c_customer_id AS customer_id, customer.c_first_name AS customer_first_name, customer.c_last_name AS customer_last_name, customer.c_preferred_cust_flag AS customer_preferred_cust_flag, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt) AS year_total +24)------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)]] +25)--------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_ext_discount_amt, store_sales.ss_ext_list_price, date_dim.d_year +26)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +27)------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_sold_date_sk, store_sales.ss_ext_discount_amt, store_sales.ss_ext_list_price +28)--------------------------Inner Join: customer.c_customer_sk = store_sales.ss_customer_sk +29)----------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +30)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_list_price] +31)------------------------Filter: date_dim.d_year = Int64(2002) +32)--------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +33)----------SubqueryAlias: t_w_firstyear +34)------------SubqueryAlias: year_total +35)--------------Projection: customer.c_customer_id AS customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt) AS year_total +36)----------------Filter: sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt) > Decimal128(0.00,18,2) +37)------------------Projection: customer.c_customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt) +38)--------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)]] +39)----------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_ext_discount_amt, web_sales.ws_ext_list_price, date_dim.d_year +40)------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +41)--------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_sold_date_sk, web_sales.ws_ext_discount_amt, web_sales.ws_ext_list_price +42)----------------------------Inner Join: customer.c_customer_sk = web_sales.ws_bill_customer_sk +43)------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +44)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_list_price] +45)--------------------------Filter: date_dim.d_year = Int64(2001) +46)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +47)------SubqueryAlias: t_w_secyear +48)--------SubqueryAlias: year_total +49)----------Projection: customer.c_customer_id AS customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt) AS year_total +50)------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)]] +51)--------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_ext_discount_amt, web_sales.ws_ext_list_price, date_dim.d_year +52)----------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +53)------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_sold_date_sk, web_sales.ws_ext_discount_amt, web_sales.ws_ext_list_price +54)--------------------Inner Join: customer.c_customer_sk = web_sales.ws_bill_customer_sk +55)----------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +56)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_list_price] +57)------------------Filter: date_dim.d_year = Int64(2002) +58)--------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +physical_plan +01)SortPreservingMergeExec: [customer_id@0 ASC, customer_first_name@1 ASC, customer_last_name@2 ASC, customer_preferred_cust_flag@3 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[customer_id@0 ASC, customer_first_name@1 ASC, customer_last_name@2 ASC, customer_preferred_cust_flag@3 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], filter=CASE WHEN year_total@2 > 0.00 THEN CAST(year_total@3 AS Float64) / CAST(year_total@2 AS Float64) ELSE 0 END > CASE WHEN year_total@0 > 0.00 THEN CAST(year_total@1 AS Float64) / CAST(year_total@0 AS Float64) ELSE 0 END, projection=[customer_id@2, customer_first_name@3, customer_last_name@4, customer_preferred_cust_flag@5] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], projection=[customer_id@2, year_total@3, customer_id@4, customer_first_name@5, customer_last_name@6, customer_preferred_cust_flag@7, year_total@8, year_total@1] +06)----------CoalescePartitionsExec +07)------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)@1 as year_total] +08)--------------FilterExec: sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)@1 > 0.00 +09)----------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)@8 as sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)] +10)------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +11)--------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +12)----------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@9 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ws_ext_discount_amt@10, ws_ext_list_price@11, d_year@1] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ws_sold_date_sk@8, ws_ext_discount_amt@10, ws_ext_list_price@11] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_list_price], file_type=vortex +18)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)] +19)------------CoalescePartitionsExec +20)--------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)@1 as year_total] +21)----------------FilterExec: sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)@1 > 0.00 +22)------------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)@8 as sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)] +23)--------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +24)----------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +25)------------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@9 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +26)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ss_ext_discount_amt@10, ss_ext_list_price@11, d_year@1] +27)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +28)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ss_sold_date_sk@8, ss_ext_discount_amt@10, ss_ext_list_price@11] +29)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +30)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_list_price], file_type=vortex +31)------------ProjectionExec: expr=[c_customer_id@0 as customer_id, c_first_name@1 as customer_first_name, c_last_name@2 as customer_last_name, c_preferred_cust_flag@3 as customer_preferred_cust_flag, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)@8 as year_total] +32)--------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +33)----------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +34)------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@9 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +35)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ss_ext_discount_amt@10, ss_ext_list_price@11, d_year@1] +36)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +37)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ss_sold_date_sk@8, ss_ext_discount_amt@10, ss_ext_list_price@11] +38)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +39)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_list_price], file_type=vortex +40)------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)@8 as year_total] +41)--------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +42)----------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +43)------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@9 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_discount_amt)], ordering_mode=PartiallySorted([7]) +44)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ws_ext_discount_amt@10, ws_ext_list_price@11, d_year@1] +45)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +46)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ws_sold_date_sk@8, ws_ext_discount_amt@10, ws_ext_list_price@11] +47)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +48)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_list_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q12.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q12.slt.no new file mode 100644 index 00000000000..bc3a093dbe9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q12.slt.no @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ws_ext_sales_price) AS itemrevenue, + sum(ws_ext_sales_price)*100.0000/sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM web_sales, + item, + date_dim +WHERE ws_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price +ORDER BY i_category, + i_class, + i_item_id, + i_item_desc, + revenueratio +LIMIT 100; +---- +logical_plan +01)Sort: item.i_category ASC NULLS LAST, item.i_class ASC NULLS LAST, item.i_item_id ASC NULLS LAST, item.i_item_desc ASC NULLS LAST, revenueratio ASC NULLS LAST, fetch=100 +02)--Projection: item.i_item_id, item.i_item_desc, item.i_category, item.i_class, item.i_current_price, sum(web_sales.ws_ext_sales_price) AS itemrevenue, CAST(sum(web_sales.ws_ext_sales_price) AS Float64) * Float64(100) / CAST(sum(sum(web_sales.ws_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS Float64) AS revenueratio +03)----WindowAggr: windowExpr=[[sum(sum(web_sales.ws_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +04)------Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, item.i_category, item.i_class, item.i_current_price]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +05)--------Projection: web_sales.ws_ext_sales_price, item.i_item_id, item.i_item_desc, item.i_current_price, item.i_class, item.i_category +06)----------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +07)------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ext_sales_price, item.i_item_id, item.i_item_desc, item.i_current_price, item.i_class, item.i_category +08)--------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +09)----------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_ext_sales_price] +10)----------------Filter: item.i_category = Utf8View("Sports") OR item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Home") +11)------------------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_class, i_category], partial_filters=[item.i_category = Utf8View("Sports") OR item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Home")] +12)------------Projection: date_dim.d_date_sk +13)--------------Filter: date_dim.d_date >= Date32("1999-02-22") AND date_dim.d_date <= Date32("1999-03-24") +14)----------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("1999-02-22"), date_dim.d_date <= Date32("1999-03-24")] +physical_plan +01)SortPreservingMergeExec: [i_category@2 ASC NULLS LAST, i_class@3 ASC NULLS LAST, i_item_id@0 ASC NULLS LAST, i_item_desc@1 ASC NULLS LAST, revenueratio@6 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_category@2 ASC NULLS LAST, i_class@3 ASC NULLS LAST, i_item_id@0 ASC NULLS LAST, i_item_desc@1 ASC NULLS LAST, revenueratio@6 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_category@2 as i_category, i_class@3 as i_class, i_current_price@4 as i_current_price, sum(web_sales.ws_ext_sales_price)@5 as itemrevenue, CAST(sum(web_sales.ws_ext_sales_price)@5 AS Float64) * 100 / CAST(sum(sum(web_sales.ws_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@6 AS Float64) as revenueratio] +04)------WindowAggExec: wdw=[sum(sum(web_sales.ws_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "sum(sum(web_sales.ws_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(27, 2), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +05)--------SortExec: expr=[i_class@3 ASC NULLS LAST], preserve_partitioning=[true] +06)----------RepartitionExec: partitioning=Hash([i_class@3], 4), input_partitions=4 +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_category@2 as i_category, i_class@3 as i_class, i_current_price@4 as i_current_price], aggr=[sum(web_sales.ws_ext_sales_price)] +08)--------------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, i_category@2, i_class@3, i_current_price@4], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id, i_item_desc@2 as i_item_desc, i_category@5 as i_category, i_class@4 as i_class, i_current_price@3 as i_current_price], aggr=[sum(web_sales.ws_ext_sales_price)] +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_ext_sales_price@2, i_item_id@3, i_item_desc@4, i_current_price@5, i_class@6, i_category@7] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 1999-02-22 AND d_date@2 <= 1999-03-24 +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@6, ws_ext_sales_price@8, i_item_id@1, i_item_desc@2, i_current_price@3, i_class@4, i_category@5] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_class, i_category], file_type=vortex, predicate: i_category@12 = Sports OR i_category@12 = Books OR i_category@12 = Home +14)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q13.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q13.slt.no new file mode 100644 index 00000000000..7963eef3183 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q13.slt.no @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT avg(ss_quantity) avg1, + avg(ss_ext_sales_price) avg2, + avg(ss_ext_wholesale_cost) avg3, + sum(ss_ext_wholesale_cost) +FROM store_sales , + store , + customer_demographics , + household_demographics , + customer_address , + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 and((ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 ) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1)) and((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('TX', 'OH', 'TX') + AND ss_net_profit BETWEEN 100 AND 200) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'NM', 'KY') + AND ss_net_profit BETWEEN 150 AND 300) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'TX', 'MS') + AND ss_net_profit BETWEEN 50 AND 250)) ; +---- +logical_plan +01)Projection: avg(store_sales.ss_quantity) AS avg1, avg(store_sales.ss_ext_sales_price) AS avg2, avg(store_sales.ss_ext_wholesale_cost) AS avg3, sum(store_sales.ss_ext_wholesale_cost) +02)--Aggregate: groupBy=[[]], aggr=[[avg(CAST(store_sales.ss_quantity AS Float64)), avg(store_sales.ss_ext_sales_price), avg(store_sales.ss_ext_wholesale_cost), sum(store_sales.ss_ext_wholesale_cost)]] +03)----Projection: store_sales.ss_quantity, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost +04)------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +05)--------Projection: store_sales.ss_sold_date_sk, store_sales.ss_quantity, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost +06)----------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk Filter: (customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("OH")) AND store_sales.ss_net_profit >= Decimal128(100.00,7,2) AND store_sales.ss_net_profit <= Decimal128(200.00,7,2) OR (customer_address.ca_state = Utf8View("OR") OR customer_address.ca_state = Utf8View("NM") OR customer_address.ca_state = Utf8View("KY")) AND store_sales.ss_net_profit >= Decimal128(150.00,7,2) AND store_sales.ss_net_profit <= Decimal128(300.00,7,2) OR (customer_address.ca_state = Utf8View("VA") OR customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("MS")) AND store_sales.ss_net_profit >= Decimal128(50.00,7,2) AND store_sales.ss_net_profit <= Decimal128(250.00,7,2) +07)------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_addr_sk, store_sales.ss_quantity, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_net_profit +08)--------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") AND store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) AND household_demographics.hd_dep_count = Int64(3) OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") AND store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) AND household_demographics.hd_dep_count = Int64(1) OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") AND store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2) AND household_demographics.hd_dep_count = Int64(1) +09)----------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_quantity, store_sales.ss_sales_price, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_net_profit, customer_demographics.cd_marital_status, customer_demographics.cd_education_status +10)------------------Inner Join: store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") AND store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") AND store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") AND store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2) +11)--------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_quantity, store_sales.ss_sales_price, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_net_profit +12)----------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +13)------------------------Filter: (store_sales.ss_net_profit >= Decimal128(100.00,7,2) AND store_sales.ss_net_profit <= Decimal128(200.00,7,2) OR store_sales.ss_net_profit >= Decimal128(150.00,7,2) AND store_sales.ss_net_profit <= Decimal128(300.00,7,2) OR store_sales.ss_net_profit >= Decimal128(50.00,7,2) AND store_sales.ss_net_profit <= Decimal128(250.00,7,2)) AND (store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) OR store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) OR store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2)) +14)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_cdemo_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_quantity, ss_sales_price, ss_ext_sales_price, ss_ext_wholesale_cost, ss_net_profit], partial_filters=[store_sales.ss_net_profit >= Decimal128(100.00,7,2) AND store_sales.ss_net_profit <= Decimal128(200.00,7,2) OR store_sales.ss_net_profit >= Decimal128(150.00,7,2) AND store_sales.ss_net_profit <= Decimal128(300.00,7,2) OR store_sales.ss_net_profit >= Decimal128(50.00,7,2) AND store_sales.ss_net_profit <= Decimal128(250.00,7,2), store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) OR store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) OR store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2)] +15)------------------------TableScan: store projection=[s_store_sk] +16)--------------------Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") +17)----------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree")] +18)----------------Projection: household_demographics.hd_demo_sk, household_demographics.hd_dep_count +19)------------------Filter: __common_expr_2 AND (__common_expr_2 OR household_demographics.hd_dep_count = Int64(1)) +20)--------------------Projection: household_demographics.hd_dep_count = Int64(3) OR household_demographics.hd_dep_count = Int64(1) AS __common_expr_2, household_demographics.hd_demo_sk, household_demographics.hd_dep_count +21)----------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count], partial_filters=[household_demographics.hd_dep_count = Int64(3) OR household_demographics.hd_dep_count = Int64(1), household_demographics.hd_dep_count = Int64(3) OR household_demographics.hd_dep_count = Int64(1) OR household_demographics.hd_dep_count = Int64(1)] +22)------------Projection: customer_address.ca_address_sk, customer_address.ca_state +23)--------------Filter: customer_address.ca_country = Utf8View("United States") AND customer_address.ca_state IN ([Utf8View("TX"), Utf8View("OH"), Utf8View("OR"), Utf8View("NM"), Utf8View("KY"), Utf8View("VA"), Utf8View("MS")]) AND (customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("OR") OR customer_address.ca_state = Utf8View("NM") OR customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("VA") OR customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("MS")) +24)----------------TableScan: customer_address projection=[ca_address_sk, ca_state, ca_country], partial_filters=[customer_address.ca_country = Utf8View("United States"), customer_address.ca_state IN ([Utf8View("TX"), Utf8View("OH"), Utf8View("OR"), Utf8View("NM"), Utf8View("KY"), Utf8View("VA"), Utf8View("MS")]), customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("OR") OR customer_address.ca_state = Utf8View("NM") OR customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("VA") OR customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("MS")] +25)--------Projection: date_dim.d_date_sk +26)----------Filter: date_dim.d_year = Int64(2001) +27)------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +physical_plan +01)ProjectionExec: expr=[avg(store_sales.ss_quantity)@0 as avg1, avg(store_sales.ss_ext_sales_price)@1 as avg2, avg(store_sales.ss_ext_wholesale_cost)@2 as avg3, sum(store_sales.ss_ext_wholesale_cost)@3 as sum(store_sales.ss_ext_wholesale_cost)] +02)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_quantity), avg(store_sales.ss_ext_sales_price), avg(store_sales.ss_ext_wholesale_cost), sum(store_sales.ss_ext_wholesale_cost)] +03)----CoalescePartitionsExec +04)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_quantity), avg(store_sales.ss_ext_sales_price), avg(store_sales.ss_ext_wholesale_cost), sum(store_sales.ss_ext_wholesale_cost)] +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_quantity@2, ss_ext_sales_price@3, ss_ext_wholesale_cost@4] +06)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 +07)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], filter=(ca_state@1 = TX OR ca_state@1 = OH) AND ss_net_profit@0 >= 100.00 AND ss_net_profit@0 <= 200.00 OR (ca_state@1 = OR OR ca_state@1 = NM OR ca_state@1 = KY) AND ss_net_profit@0 >= 150.00 AND ss_net_profit@0 <= 300.00 OR (ca_state@1 = VA OR ca_state@1 = TX OR ca_state@1 = MS) AND ss_net_profit@0 >= 50.00 AND ss_net_profit@0 <= 250.00, projection=[ss_sold_date_sk@2, ss_quantity@4, ss_ext_sales_price@5, ss_ext_wholesale_cost@6] +08)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex, predicate: ca_country@10 = United States AND ca_state@8 IN (SET) ([TX, OH, OR, NM, KY, VA, MS]) AND (ca_state@8 = TX OR ca_state@8 = OH OR ca_state@8 = OR OR ca_state@8 = NM OR ca_state@8 = KY OR ca_state@8 = VA OR ca_state@8 = TX OR ca_state@8 = MS) +09)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], filter=cd_marital_status@1 = M AND cd_education_status@2 = Advanced Degree AND ss_sales_price@0 >= 100.00 AND ss_sales_price@0 <= 150.00 AND hd_dep_count@3 = 3 OR cd_marital_status@1 = S AND cd_education_status@2 = College AND ss_sales_price@0 >= 50.00 AND ss_sales_price@0 <= 100.00 AND hd_dep_count@3 = 1 OR cd_marital_status@1 = W AND cd_education_status@2 = 2 yr Degree AND ss_sales_price@0 >= 150.00 AND ss_sales_price@0 <= 200.00 AND hd_dep_count@3 = 1, projection=[ss_sold_date_sk@2, ss_addr_sk@4, ss_quantity@5, ss_ext_sales_price@7, ss_ext_wholesale_cost@8, ss_net_profit@9] +10)--------------CoalescePartitionsExec +11)----------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk, hd_dep_count], file_type=vortex, predicate: (hd_dep_count@3 = 3 OR hd_dep_count@3 = 1) AND (hd_dep_count@3 = 3 OR hd_dep_count@3 = 1 OR hd_dep_count@3 = 1) +13)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, ss_cdemo_sk@1)], filter=cd_marital_status@1 = M AND cd_education_status@2 = Advanced Degree AND ss_sales_price@0 >= 100.00 AND ss_sales_price@0 <= 150.00 OR cd_marital_status@1 = S AND cd_education_status@2 = College AND ss_sales_price@0 >= 50.00 AND ss_sales_price@0 <= 100.00 OR cd_marital_status@1 = W AND cd_education_status@2 = 2 yr Degree AND ss_sales_price@0 >= 150.00 AND ss_sales_price@0 <= 200.00, projection=[ss_sold_date_sk@3, ss_hdemo_sk@5, ss_addr_sk@6, ss_quantity@7, ss_sales_price@8, ss_ext_sales_price@9, ss_ext_wholesale_cost@10, ss_net_profit@11, cd_marital_status@1, cd_education_status@2] +14)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status, cd_education_status], file_type=vortex, predicate: cd_marital_status@2 = M AND cd_education_status@3 = Advanced Degree OR cd_marital_status@2 = S AND cd_education_status@3 = College OR cd_marital_status@2 = W AND cd_education_status@3 = 2 yr Degree +15)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@4)], projection=[ss_sold_date_sk@1, ss_cdemo_sk@2, ss_hdemo_sk@3, ss_addr_sk@4, ss_quantity@6, ss_sales_price@7, ss_ext_sales_price@8, ss_ext_wholesale_cost@9, ss_net_profit@10] +16)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex +17)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_cdemo_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_quantity, ss_sales_price, ss_ext_sales_price, ss_ext_wholesale_cost, ss_net_profit], file_type=vortex, predicate: (ss_net_profit@22 >= 100.00 AND ss_net_profit@22 <= 200.00 OR ss_net_profit@22 >= 150.00 AND ss_net_profit@22 <= 300.00 OR ss_net_profit@22 >= 50.00 AND ss_net_profit@22 <= 250.00) AND (ss_sales_price@13 >= 100.00 AND ss_sales_price@13 <= 150.00 OR ss_sales_price@13 >= 50.00 AND ss_sales_price@13 <= 100.00 OR ss_sales_price@13 >= 150.00 AND ss_sales_price@13 <= 200.00) diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q14.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q14.slt.no new file mode 100644 index 00000000000..97b54c2c80d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q14.slt.no @@ -0,0 +1,535 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH cross_items AS + (SELECT i_item_sk ss_item_sk + FROM item, + (SELECT iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, + item iss, + date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, + item ics, + date_dim d2 WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, + item iws, + date_dim d3 WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) sq1 + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id ), + avg_sales AS + (SELECT avg(quantity*list_price) average_sales + FROM + (SELECT ss_quantity quantity, + ss_list_price list_price + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT ws_quantity quantity, + ws_list_price list_price + FROM web_sales, + date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) sq2) +SELECT channel, + i_brand_id, + i_class_id, + i_category_id, + sum(sales) AS sum_sales, + sum(number_sales) AS sum_number_sales +FROM + (SELECT 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity*ss_list_price) sales, + count(*) number_sales + FROM store_sales, + item, + date_dim + WHERE ss_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ss_quantity*ss_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(cs_quantity*cs_list_price) sales, + count(*) number_sales + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(cs_quantity*cs_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ws_quantity*ws_list_price) sales, + count(*) number_sales + FROM web_sales, + item, + date_dim + WHERE ws_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ws_quantity*ws_list_price) > + (SELECT average_sales + FROM avg_sales)) y +GROUP BY ROLLUP (channel, + i_brand_id, + i_class_id, + i_category_id) +ORDER BY channel NULLS FIRST, + i_brand_id NULLS FIRST, + i_class_id NULLS FIRST, + i_category_id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: y.channel ASC NULLS FIRST, y.i_brand_id ASC NULLS FIRST, y.i_class_id ASC NULLS FIRST, y.i_category_id ASC NULLS FIRST, fetch=100 +02)--Projection: y.channel, y.i_brand_id, y.i_class_id, y.i_category_id, sum(y.sales) AS sum_sales, sum(y.number_sales) AS sum_number_sales +03)----Aggregate: groupBy=[[ROLLUP (y.channel, y.i_brand_id, y.i_class_id, y.i_category_id)]], aggr=[[sum(y.sales), sum(y.number_sales)]] +04)------SubqueryAlias: y +05)--------Union +06)----------Projection: Utf8("store") AS channel, item.i_brand_id, item.i_class_id, item.i_category_id, sum(store_sales.ss_quantity * store_sales.ss_list_price) AS sales, count(Int64(1)) AS count(*) AS number_sales +07)------------Filter: CAST(sum(store_sales.ss_quantity * store_sales.ss_list_price) AS Decimal128(38, 6)) > () +08)--------------Subquery: +09)----------------Projection: CAST(avg_sales.average_sales AS Decimal128(38, 6)) +10)------------------SubqueryAlias: avg_sales +11)--------------------Projection: avg(sq2.quantity * sq2.list_price) AS average_sales +12)----------------------Aggregate: groupBy=[[]], aggr=[[avg(CAST(sq2.quantity AS Decimal128(20, 0)) * sq2.list_price)]] +13)------------------------SubqueryAlias: sq2 +14)--------------------------Union +15)----------------------------Projection: store_sales.ss_quantity AS quantity, store_sales.ss_list_price AS list_price +16)------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +17)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_quantity, ss_list_price] +18)--------------------------------Projection: date_dim.d_date_sk +19)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +20)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +21)----------------------------Projection: catalog_sales.cs_quantity AS quantity, catalog_sales.cs_list_price AS list_price +22)------------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +23)--------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_quantity, cs_list_price] +24)--------------------------------Projection: date_dim.d_date_sk +25)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +26)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +27)----------------------------Projection: web_sales.ws_quantity AS quantity, web_sales.ws_list_price AS list_price +28)------------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +29)--------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_quantity, ws_list_price] +30)--------------------------------Projection: date_dim.d_date_sk +31)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +32)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +33)--------------Aggregate: groupBy=[[item.i_brand_id, item.i_class_id, item.i_category_id]], aggr=[[sum(CAST(store_sales.ss_quantity AS Decimal128(20, 0)) * store_sales.ss_list_price), count(Int64(1))]] +34)----------------Projection: store_sales.ss_quantity, store_sales.ss_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +35)------------------LeftSemi Join: store_sales.ss_item_sk = __correlated_sq_1.ss_item_sk +36)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_sales.ss_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +37)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +38)------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_quantity, store_sales.ss_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +39)--------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +40)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_quantity, ss_list_price] +41)----------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +42)------------------------Projection: date_dim.d_date_sk +43)--------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(11) +44)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(11)] +45)--------------------SubqueryAlias: __correlated_sq_1 +46)----------------------SubqueryAlias: cross_items +47)------------------------Projection: item.i_item_sk AS ss_item_sk +48)--------------------------LeftSemi Join: item.i_brand_id = sq1.brand_id, item.i_class_id = sq1.class_id, item.i_category_id = sq1.category_id +49)----------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +50)----------------------------SubqueryAlias: sq1 +51)------------------------------LeftSemi Join: brand_id = iws.i_brand_id, class_id = iws.i_class_id, category_id = iws.i_category_id +52)--------------------------------Aggregate: groupBy=[[brand_id, class_id, category_id]], aggr=[[]] +53)----------------------------------LeftSemi Join: brand_id = ics.i_brand_id, class_id = ics.i_class_id, category_id = ics.i_category_id +54)------------------------------------Aggregate: groupBy=[[brand_id, class_id, category_id]], aggr=[[]] +55)--------------------------------------Projection: iss.i_brand_id AS brand_id, iss.i_class_id AS class_id, iss.i_category_id AS category_id +56)----------------------------------------LeftSemi Join: store_sales.ss_sold_date_sk = d1.d_date_sk +57)------------------------------------------Projection: store_sales.ss_sold_date_sk, iss.i_brand_id, iss.i_class_id, iss.i_category_id +58)--------------------------------------------Inner Join: store_sales.ss_item_sk = iss.i_item_sk +59)----------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk] +60)----------------------------------------------SubqueryAlias: iss +61)------------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +62)------------------------------------------SubqueryAlias: d1 +63)--------------------------------------------Projection: date_dim.d_date_sk +64)----------------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +65)------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +66)------------------------------------Projection: ics.i_brand_id, ics.i_class_id, ics.i_category_id +67)--------------------------------------LeftSemi Join: catalog_sales.cs_sold_date_sk = d2.d_date_sk +68)----------------------------------------Projection: catalog_sales.cs_sold_date_sk, ics.i_brand_id, ics.i_class_id, ics.i_category_id +69)------------------------------------------Inner Join: catalog_sales.cs_item_sk = ics.i_item_sk +70)--------------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk] +71)--------------------------------------------SubqueryAlias: ics +72)----------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +73)----------------------------------------SubqueryAlias: d2 +74)------------------------------------------Projection: date_dim.d_date_sk +75)--------------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +76)----------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +77)--------------------------------Projection: iws.i_brand_id, iws.i_class_id, iws.i_category_id +78)----------------------------------LeftSemi Join: web_sales.ws_sold_date_sk = d3.d_date_sk +79)------------------------------------Projection: web_sales.ws_sold_date_sk, iws.i_brand_id, iws.i_class_id, iws.i_category_id +80)--------------------------------------Inner Join: web_sales.ws_item_sk = iws.i_item_sk +81)----------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk] +82)----------------------------------------SubqueryAlias: iws +83)------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +84)------------------------------------SubqueryAlias: d3 +85)--------------------------------------Projection: date_dim.d_date_sk +86)----------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +87)------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +88)----------Projection: Utf8("catalog") AS channel, item.i_brand_id, item.i_class_id, item.i_category_id, sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price) AS sales, count(Int64(1)) AS count(*) AS number_sales +89)------------Filter: CAST(sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price) AS Decimal128(38, 6)) > () +90)--------------Subquery: +91)----------------Projection: CAST(avg_sales.average_sales AS Decimal128(38, 6)) +92)------------------SubqueryAlias: avg_sales +93)--------------------Projection: avg(sq2.quantity * sq2.list_price) AS average_sales +94)----------------------Aggregate: groupBy=[[]], aggr=[[avg(CAST(sq2.quantity AS Decimal128(20, 0)) * sq2.list_price)]] +95)------------------------SubqueryAlias: sq2 +96)--------------------------Union +97)----------------------------Projection: store_sales.ss_quantity AS quantity, store_sales.ss_list_price AS list_price +98)------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +99)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_quantity, ss_list_price] +100)--------------------------------Projection: date_dim.d_date_sk +101)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +102)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +103)----------------------------Projection: catalog_sales.cs_quantity AS quantity, catalog_sales.cs_list_price AS list_price +104)------------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +105)--------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_quantity, cs_list_price] +106)--------------------------------Projection: date_dim.d_date_sk +107)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +108)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +109)----------------------------Projection: web_sales.ws_quantity AS quantity, web_sales.ws_list_price AS list_price +110)------------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +111)--------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_quantity, ws_list_price] +112)--------------------------------Projection: date_dim.d_date_sk +113)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +114)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +115)--------------Aggregate: groupBy=[[item.i_brand_id, item.i_class_id, item.i_category_id]], aggr=[[sum(CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) * catalog_sales.cs_list_price), count(Int64(1))]] +116)----------------Projection: catalog_sales.cs_quantity, catalog_sales.cs_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +117)------------------LeftSemi Join: catalog_sales.cs_item_sk = __correlated_sq_2.ss_item_sk +118)--------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +119)----------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +120)------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +121)--------------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +122)----------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_quantity, cs_list_price] +123)----------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +124)------------------------Projection: date_dim.d_date_sk +125)--------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(11) +126)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(11)] +127)--------------------SubqueryAlias: __correlated_sq_2 +128)----------------------SubqueryAlias: cross_items +129)------------------------Projection: item.i_item_sk AS ss_item_sk +130)--------------------------LeftSemi Join: item.i_brand_id = sq1.brand_id, item.i_class_id = sq1.class_id, item.i_category_id = sq1.category_id +131)----------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +132)----------------------------SubqueryAlias: sq1 +133)------------------------------LeftSemi Join: brand_id = iws.i_brand_id, class_id = iws.i_class_id, category_id = iws.i_category_id +134)--------------------------------Aggregate: groupBy=[[brand_id, class_id, category_id]], aggr=[[]] +135)----------------------------------LeftSemi Join: brand_id = ics.i_brand_id, class_id = ics.i_class_id, category_id = ics.i_category_id +136)------------------------------------Aggregate: groupBy=[[brand_id, class_id, category_id]], aggr=[[]] +137)--------------------------------------Projection: iss.i_brand_id AS brand_id, iss.i_class_id AS class_id, iss.i_category_id AS category_id +138)----------------------------------------LeftSemi Join: store_sales.ss_sold_date_sk = d1.d_date_sk +139)------------------------------------------Projection: store_sales.ss_sold_date_sk, iss.i_brand_id, iss.i_class_id, iss.i_category_id +140)--------------------------------------------Inner Join: store_sales.ss_item_sk = iss.i_item_sk +141)----------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk] +142)----------------------------------------------SubqueryAlias: iss +143)------------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +144)------------------------------------------SubqueryAlias: d1 +145)--------------------------------------------Projection: date_dim.d_date_sk +146)----------------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +147)------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +148)------------------------------------Projection: ics.i_brand_id, ics.i_class_id, ics.i_category_id +149)--------------------------------------LeftSemi Join: catalog_sales.cs_sold_date_sk = d2.d_date_sk +150)----------------------------------------Projection: catalog_sales.cs_sold_date_sk, ics.i_brand_id, ics.i_class_id, ics.i_category_id +151)------------------------------------------Inner Join: catalog_sales.cs_item_sk = ics.i_item_sk +152)--------------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk] +153)--------------------------------------------SubqueryAlias: ics +154)----------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +155)----------------------------------------SubqueryAlias: d2 +156)------------------------------------------Projection: date_dim.d_date_sk +157)--------------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +158)----------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +159)--------------------------------Projection: iws.i_brand_id, iws.i_class_id, iws.i_category_id +160)----------------------------------LeftSemi Join: web_sales.ws_sold_date_sk = d3.d_date_sk +161)------------------------------------Projection: web_sales.ws_sold_date_sk, iws.i_brand_id, iws.i_class_id, iws.i_category_id +162)--------------------------------------Inner Join: web_sales.ws_item_sk = iws.i_item_sk +163)----------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk] +164)----------------------------------------SubqueryAlias: iws +165)------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +166)------------------------------------SubqueryAlias: d3 +167)--------------------------------------Projection: date_dim.d_date_sk +168)----------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +169)------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +170)----------Projection: Utf8("web") AS channel, item.i_brand_id, item.i_class_id, item.i_category_id, sum(web_sales.ws_quantity * web_sales.ws_list_price) AS sales, count(Int64(1)) AS count(*) AS number_sales +171)------------Filter: CAST(sum(web_sales.ws_quantity * web_sales.ws_list_price) AS Decimal128(38, 6)) > () +172)--------------Subquery: +173)----------------Projection: CAST(avg_sales.average_sales AS Decimal128(38, 6)) +174)------------------SubqueryAlias: avg_sales +175)--------------------Projection: avg(sq2.quantity * sq2.list_price) AS average_sales +176)----------------------Aggregate: groupBy=[[]], aggr=[[avg(CAST(sq2.quantity AS Decimal128(20, 0)) * sq2.list_price)]] +177)------------------------SubqueryAlias: sq2 +178)--------------------------Union +179)----------------------------Projection: store_sales.ss_quantity AS quantity, store_sales.ss_list_price AS list_price +180)------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +181)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_quantity, ss_list_price] +182)--------------------------------Projection: date_dim.d_date_sk +183)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +184)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +185)----------------------------Projection: catalog_sales.cs_quantity AS quantity, catalog_sales.cs_list_price AS list_price +186)------------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +187)--------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_quantity, cs_list_price] +188)--------------------------------Projection: date_dim.d_date_sk +189)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +190)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +191)----------------------------Projection: web_sales.ws_quantity AS quantity, web_sales.ws_list_price AS list_price +192)------------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +193)--------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_quantity, ws_list_price] +194)--------------------------------Projection: date_dim.d_date_sk +195)----------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +196)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +197)--------------Aggregate: groupBy=[[item.i_brand_id, item.i_class_id, item.i_category_id]], aggr=[[sum(CAST(web_sales.ws_quantity AS Decimal128(20, 0)) * web_sales.ws_list_price), count(Int64(1))]] +198)----------------Projection: web_sales.ws_quantity, web_sales.ws_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +199)------------------LeftSemi Join: web_sales.ws_item_sk = __correlated_sq_3.ss_item_sk +200)--------------------Projection: web_sales.ws_item_sk, web_sales.ws_quantity, web_sales.ws_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +201)----------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +202)------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_quantity, web_sales.ws_list_price, item.i_brand_id, item.i_class_id, item.i_category_id +203)--------------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +204)----------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_quantity, ws_list_price] +205)----------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +206)------------------------Projection: date_dim.d_date_sk +207)--------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(11) +208)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(11)] +209)--------------------SubqueryAlias: __correlated_sq_3 +210)----------------------SubqueryAlias: cross_items +211)------------------------Projection: item.i_item_sk AS ss_item_sk +212)--------------------------LeftSemi Join: item.i_brand_id = sq1.brand_id, item.i_class_id = sq1.class_id, item.i_category_id = sq1.category_id +213)----------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +214)----------------------------SubqueryAlias: sq1 +215)------------------------------LeftSemi Join: brand_id = iws.i_brand_id, class_id = iws.i_class_id, category_id = iws.i_category_id +216)--------------------------------Aggregate: groupBy=[[brand_id, class_id, category_id]], aggr=[[]] +217)----------------------------------LeftSemi Join: brand_id = ics.i_brand_id, class_id = ics.i_class_id, category_id = ics.i_category_id +218)------------------------------------Aggregate: groupBy=[[brand_id, class_id, category_id]], aggr=[[]] +219)--------------------------------------Projection: iss.i_brand_id AS brand_id, iss.i_class_id AS class_id, iss.i_category_id AS category_id +220)----------------------------------------LeftSemi Join: store_sales.ss_sold_date_sk = d1.d_date_sk +221)------------------------------------------Projection: store_sales.ss_sold_date_sk, iss.i_brand_id, iss.i_class_id, iss.i_category_id +222)--------------------------------------------Inner Join: store_sales.ss_item_sk = iss.i_item_sk +223)----------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk] +224)----------------------------------------------SubqueryAlias: iss +225)------------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +226)------------------------------------------SubqueryAlias: d1 +227)--------------------------------------------Projection: date_dim.d_date_sk +228)----------------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +229)------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +230)------------------------------------Projection: ics.i_brand_id, ics.i_class_id, ics.i_category_id +231)--------------------------------------LeftSemi Join: catalog_sales.cs_sold_date_sk = d2.d_date_sk +232)----------------------------------------Projection: catalog_sales.cs_sold_date_sk, ics.i_brand_id, ics.i_class_id, ics.i_category_id +233)------------------------------------------Inner Join: catalog_sales.cs_item_sk = ics.i_item_sk +234)--------------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk] +235)--------------------------------------------SubqueryAlias: ics +236)----------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +237)----------------------------------------SubqueryAlias: d2 +238)------------------------------------------Projection: date_dim.d_date_sk +239)--------------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +240)----------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +241)--------------------------------Projection: iws.i_brand_id, iws.i_class_id, iws.i_category_id +242)----------------------------------LeftSemi Join: web_sales.ws_sold_date_sk = d3.d_date_sk +243)------------------------------------Projection: web_sales.ws_sold_date_sk, iws.i_brand_id, iws.i_class_id, iws.i_category_id +244)--------------------------------------Inner Join: web_sales.ws_item_sk = iws.i_item_sk +245)----------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk] +246)----------------------------------------SubqueryAlias: iws +247)------------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id] +248)------------------------------------SubqueryAlias: d3 +249)--------------------------------------Projection: date_dim.d_date_sk +250)----------------------------------------Filter: date_dim.d_year >= Int64(1999) AND date_dim.d_year <= Int64(2001) +251)------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year >= Int64(1999), date_dim.d_year <= Int64(2001)] +physical_plan +01)ScalarSubqueryExec: subqueries=1 +02)--SortPreservingMergeExec: [channel@0 ASC, i_brand_id@1 ASC, i_class_id@2 ASC, i_category_id@3 ASC], fetch=100 +03)----SortExec: TopK(fetch=100), expr=[channel@0 ASC, i_brand_id@1 ASC, i_class_id@2 ASC, i_category_id@3 ASC], preserve_partitioning=[true] +04)------ProjectionExec: expr=[channel@0 as channel, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, sum(y.sales)@5 as sum_sales, sum(y.number_sales)@6 as sum_number_sales] +05)--------AggregateExec: mode=FinalPartitioned, gby=[channel@0 as channel, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, __grouping_id@4 as __grouping_id], aggr=[sum(y.sales), sum(y.number_sales)] +06)----------RepartitionExec: partitioning=Hash([channel@0, i_brand_id@1, i_class_id@2, i_category_id@3, __grouping_id@4], 4), input_partitions=4 +07)------------AggregateExec: mode=Partial, gby=[(NULL as channel, NULL as i_brand_id, NULL as i_class_id, NULL as i_category_id), (channel@0 as channel, NULL as i_brand_id, NULL as i_class_id, NULL as i_category_id), (channel@0 as channel, i_brand_id@1 as i_brand_id, NULL as i_class_id, NULL as i_category_id), (channel@0 as channel, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, NULL as i_category_id), (channel@0 as channel, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id)], aggr=[sum(y.sales), sum(y.number_sales)] +08)--------------InterleaveExec +09)----------------ProjectionExec: expr=[store as channel, i_brand_id@0 as i_brand_id, i_class_id@1 as i_class_id, i_category_id@2 as i_category_id, sum(store_sales.ss_quantity * store_sales.ss_list_price)@3 as sales, count(Int64(1))@4 as number_sales] +10)------------------FilterExec: CAST(sum(store_sales.ss_quantity * store_sales.ss_list_price)@3 AS Decimal128(38, 6)) > scalar_subquery() +11)--------------------AggregateExec: mode=FinalPartitioned, gby=[i_brand_id@0 as i_brand_id, i_class_id@1 as i_class_id, i_category_id@2 as i_category_id], aggr=[sum(store_sales.ss_quantity * store_sales.ss_list_price), count(Int64(1))] +12)----------------------RepartitionExec: partitioning=Hash([i_brand_id@0, i_class_id@1, i_category_id@2], 4), input_partitions=4 +13)------------------------AggregateExec: mode=Partial, gby=[i_brand_id@2 as i_brand_id, i_class_id@3 as i_class_id, i_category_id@4 as i_category_id], aggr=[sum(store_sales.ss_quantity * store_sales.ss_list_price), count(Int64(1))] +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(ss_item_sk@0, ss_item_sk@0)], projection=[ss_quantity@1, ss_list_price@2, i_brand_id@3, i_class_id@4, i_category_id@5] +15)----------------------------CoalescePartitionsExec +16)------------------------------ProjectionExec: expr=[i_item_sk@0 as ss_item_sk] +17)--------------------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_brand_id@1, brand_id@0), (i_class_id@2, class_id@1), (i_category_id@3, category_id@2)], projection=[i_item_sk@0] +18)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +19)----------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_brand_id@0, brand_id@0), (i_class_id@1, class_id@1), (i_category_id@2, category_id@2)], NullsEqual: true +20)------------------------------------CoalescePartitionsExec +21)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +22)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +23)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +24)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +25)------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk], file_type=vortex +26)------------------------------------AggregateExec: mode=SinglePartitioned, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +27)--------------------------------------HashJoinExec: mode=Partitioned, join_type=RightSemi, on=[(i_brand_id@0, brand_id@0), (i_class_id@1, class_id@1), (i_category_id@2, category_id@2)], NullsEqual: true +28)----------------------------------------RepartitionExec: partitioning=Hash([i_brand_id@0, i_class_id@1, i_category_id@2], 4), input_partitions=4 +29)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +30)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +31)--------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +32)----------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +33)----------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk], file_type=vortex +34)----------------------------------------AggregateExec: mode=FinalPartitioned, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +35)------------------------------------------RepartitionExec: partitioning=Hash([brand_id@0, class_id@1, category_id@2], 4), input_partitions=4 +36)--------------------------------------------AggregateExec: mode=Partial, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +37)----------------------------------------------ProjectionExec: expr=[i_brand_id@0 as brand_id, i_class_id@1 as class_id, i_category_id@2 as category_id] +38)------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +39)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +40)--------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +41)----------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +42)----------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk], file_type=vortex +43)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_quantity@3, ss_list_price@4, i_brand_id@5, i_class_id@6, i_category_id@7] +44)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 11 +45)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@4, ss_item_sk@5, ss_quantity@6, ss_list_price@7, i_brand_id@1, i_class_id@2, i_category_id@3] +46)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +47)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_quantity, ss_list_price], file_type=vortex +48)----------------ProjectionExec: expr=[catalog as channel, i_brand_id@0 as i_brand_id, i_class_id@1 as i_class_id, i_category_id@2 as i_category_id, sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price)@3 as sales, count(Int64(1))@4 as number_sales] +49)------------------FilterExec: CAST(sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price)@3 AS Decimal128(38, 6)) > scalar_subquery() +50)--------------------AggregateExec: mode=FinalPartitioned, gby=[i_brand_id@0 as i_brand_id, i_class_id@1 as i_class_id, i_category_id@2 as i_category_id], aggr=[sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price), count(Int64(1))] +51)----------------------RepartitionExec: partitioning=Hash([i_brand_id@0, i_class_id@1, i_category_id@2], 4), input_partitions=4 +52)------------------------AggregateExec: mode=Partial, gby=[i_brand_id@2 as i_brand_id, i_class_id@3 as i_class_id, i_category_id@4 as i_category_id], aggr=[sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price), count(Int64(1))] +53)--------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(ss_item_sk@0, cs_item_sk@0)], projection=[cs_quantity@1, cs_list_price@2, i_brand_id@3, i_class_id@4, i_category_id@5] +54)----------------------------CoalescePartitionsExec +55)------------------------------ProjectionExec: expr=[i_item_sk@0 as ss_item_sk] +56)--------------------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_brand_id@1, brand_id@0), (i_class_id@2, class_id@1), (i_category_id@3, category_id@2)], projection=[i_item_sk@0] +57)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +58)----------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_brand_id@0, brand_id@0), (i_class_id@1, class_id@1), (i_category_id@2, category_id@2)], NullsEqual: true +59)------------------------------------CoalescePartitionsExec +60)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +61)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +62)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +63)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +64)------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk], file_type=vortex +65)------------------------------------AggregateExec: mode=SinglePartitioned, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +66)--------------------------------------HashJoinExec: mode=Partitioned, join_type=RightSemi, on=[(i_brand_id@0, brand_id@0), (i_class_id@1, class_id@1), (i_category_id@2, category_id@2)], NullsEqual: true +67)----------------------------------------RepartitionExec: partitioning=Hash([i_brand_id@0, i_class_id@1, i_category_id@2], 4), input_partitions=4 +68)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +69)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +70)--------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +71)----------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +72)----------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk], file_type=vortex +73)----------------------------------------AggregateExec: mode=FinalPartitioned, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +74)------------------------------------------RepartitionExec: partitioning=Hash([brand_id@0, class_id@1, category_id@2], 4), input_partitions=4 +75)--------------------------------------------AggregateExec: mode=Partial, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +76)----------------------------------------------ProjectionExec: expr=[i_brand_id@0 as brand_id, i_class_id@1 as class_id, i_category_id@2 as category_id] +77)------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +78)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +79)--------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +80)----------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +81)----------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk], file_type=vortex +82)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_item_sk@2, cs_quantity@3, cs_list_price@4, i_brand_id@5, i_class_id@6, i_category_id@7] +83)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 11 +84)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@4, cs_item_sk@5, cs_quantity@6, cs_list_price@7, i_brand_id@1, i_class_id@2, i_category_id@3] +85)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +86)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_quantity, cs_list_price], file_type=vortex +87)----------------ProjectionExec: expr=[web as channel, i_brand_id@0 as i_brand_id, i_class_id@1 as i_class_id, i_category_id@2 as i_category_id, sum(web_sales.ws_quantity * web_sales.ws_list_price)@3 as sales, count(Int64(1))@4 as number_sales] +88)------------------FilterExec: CAST(sum(web_sales.ws_quantity * web_sales.ws_list_price)@3 AS Decimal128(38, 6)) > scalar_subquery() +89)--------------------AggregateExec: mode=FinalPartitioned, gby=[i_brand_id@0 as i_brand_id, i_class_id@1 as i_class_id, i_category_id@2 as i_category_id], aggr=[sum(web_sales.ws_quantity * web_sales.ws_list_price), count(Int64(1))] +90)----------------------RepartitionExec: partitioning=Hash([i_brand_id@0, i_class_id@1, i_category_id@2], 4), input_partitions=4 +91)------------------------AggregateExec: mode=Partial, gby=[i_brand_id@2 as i_brand_id, i_class_id@3 as i_class_id, i_category_id@4 as i_category_id], aggr=[sum(web_sales.ws_quantity * web_sales.ws_list_price), count(Int64(1))] +92)--------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(ss_item_sk@0, ws_item_sk@0)], projection=[ws_quantity@1, ws_list_price@2, i_brand_id@3, i_class_id@4, i_category_id@5] +93)----------------------------CoalescePartitionsExec +94)------------------------------ProjectionExec: expr=[i_item_sk@0 as ss_item_sk] +95)--------------------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_brand_id@1, brand_id@0), (i_class_id@2, class_id@1), (i_category_id@3, category_id@2)], projection=[i_item_sk@0] +96)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +97)----------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_brand_id@0, brand_id@0), (i_class_id@1, class_id@1), (i_category_id@2, category_id@2)], NullsEqual: true +98)------------------------------------CoalescePartitionsExec +99)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +100)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +101)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +102)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +103)------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk], file_type=vortex +104)------------------------------------AggregateExec: mode=SinglePartitioned, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +105)--------------------------------------HashJoinExec: mode=Partitioned, join_type=RightSemi, on=[(i_brand_id@0, brand_id@0), (i_class_id@1, class_id@1), (i_category_id@2, category_id@2)], NullsEqual: true +106)----------------------------------------RepartitionExec: partitioning=Hash([i_brand_id@0, i_class_id@1, i_category_id@2], 4), input_partitions=4 +107)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +108)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +109)--------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +110)----------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +111)----------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk], file_type=vortex +112)----------------------------------------AggregateExec: mode=FinalPartitioned, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +113)------------------------------------------RepartitionExec: partitioning=Hash([brand_id@0, class_id@1, category_id@2], 4), input_partitions=4 +114)--------------------------------------------AggregateExec: mode=Partial, gby=[brand_id@0 as brand_id, class_id@1 as class_id, category_id@2 as category_id], aggr=[] +115)----------------------------------------------ProjectionExec: expr=[i_brand_id@0 as brand_id, i_class_id@1 as class_id, i_category_id@2 as category_id] +116)------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[i_brand_id@1, i_class_id@2, i_category_id@3] +117)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +118)--------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@4, i_brand_id@1, i_class_id@2, i_category_id@3] +119)----------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +120)----------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk], file_type=vortex +121)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_quantity@3, ws_list_price@4, i_brand_id@5, i_class_id@6, i_category_id@7] +122)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 11 +123)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@4, ws_item_sk@5, ws_quantity@6, ws_list_price@7, i_brand_id@1, i_class_id@2, i_category_id@3] +124)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id], file_type=vortex +125)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_quantity, ws_list_price], file_type=vortex +126)--ProjectionExec: expr=[CAST(avg(sq2.quantity * sq2.list_price)@0 AS Decimal128(38, 6)) as avg_sales.average_sales] +127)----AggregateExec: mode=Final, gby=[], aggr=[avg(sq2.quantity * sq2.list_price)] +128)------CoalescePartitionsExec +129)--------AggregateExec: mode=Partial, gby=[], aggr=[avg(sq2.quantity * sq2.list_price)] +130)----------UnionExec +131)------------ProjectionExec: expr=[ss_quantity@0 as quantity, ss_list_price@1 as list_price] +132)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_quantity@2, ss_list_price@3] +133)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +134)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_quantity, ss_list_price], file_type=vortex +135)------------ProjectionExec: expr=[cs_quantity@0 as quantity, cs_list_price@1 as list_price] +136)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_quantity@2, cs_list_price@3] +137)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +138)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_quantity, cs_list_price], file_type=vortex +139)------------ProjectionExec: expr=[ws_quantity@0 as quantity, ws_list_price@1 as list_price] +140)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_quantity@2, ws_list_price@3] +141)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 >= 1999 AND d_year@6 <= 2001 +142)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_quantity, ws_list_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q15.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q15.slt.no new file mode 100644 index 00000000000..1092d305b47 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q15.slt.no @@ -0,0 +1,61 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT ca_zip, + sum(cs_sales_price) +FROM catalog_sales, + customer, + customer_address, + date_dim +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND (SUBSTRING(ca_zip, 1, 5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR ca_state IN ('CA', + 'WA', + 'GA') + OR cs_sales_price > 500) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip +ORDER BY ca_zip NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: customer_address.ca_zip ASC NULLS FIRST, fetch=100 +02)--Aggregate: groupBy=[[customer_address.ca_zip]], aggr=[[sum(catalog_sales.cs_sales_price)]] +03)----Projection: catalog_sales.cs_sales_price, customer_address.ca_zip +04)------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +05)--------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_sales_price, customer_address.ca_zip +06)----------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk Filter: substr(customer_address.ca_zip, Int64(1), Int64(5)) IN ([Utf8View("85669"), Utf8View("86197"), Utf8View("88274"), Utf8View("83405"), Utf8View("86475"), Utf8View("85392"), Utf8View("85460"), Utf8View("80348"), Utf8View("81792")]) OR customer_address.ca_state = Utf8View("CA") OR customer_address.ca_state = Utf8View("WA") OR customer_address.ca_state = Utf8View("GA") OR catalog_sales.cs_sales_price > Decimal128(500.00,7,2) +07)------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_sales_price, customer.c_current_addr_sk +08)--------------Inner Join: catalog_sales.cs_bill_customer_sk = customer.c_customer_sk +09)----------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_sales_price] +10)----------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +11)------------TableScan: customer_address projection=[ca_address_sk, ca_state, ca_zip] +12)--------Projection: date_dim.d_date_sk +13)----------Filter: date_dim.d_qoy = Int64(2) AND date_dim.d_year = Int64(2001) +14)------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(2), date_dim.d_year = Int64(2001)] +physical_plan +01)SortPreservingMergeExec: [ca_zip@0 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[ca_zip@0 ASC], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[ca_zip@0 as ca_zip], aggr=[sum(catalog_sales.cs_sales_price)] +04)------RepartitionExec: partitioning=Hash([ca_zip@0], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[ca_zip@1 as ca_zip], aggr=[sum(catalog_sales.cs_sales_price)] +06)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_sales_price@2, ca_zip@3] +07)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_qoy@10 = 2 AND d_year@6 = 2001 +08)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@2)], filter=substr(ca_zip@2, 1, 5) IN (SET) ([85669, 86197, 88274, 83405, 86475, 85392, 85460, 80348, 81792]) OR ca_state@1 = CA OR ca_state@1 = WA OR ca_state@1 = GA OR cs_sales_price@0 > 500.00, projection=[cs_sold_date_sk@3, cs_sales_price@4, ca_zip@2] +09)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state, ca_zip], file_type=vortex +10)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@1)], projection=[cs_sold_date_sk@2, cs_sales_price@4, c_current_addr_sk@1] +11)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex +12)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q16.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q16.slt.no new file mode 100644 index 00000000000..9d9f479d707 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q16.slt.no @@ -0,0 +1,84 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT count(DISTINCT cs_order_number) AS "order count", + sum(cs_ext_ship_cost) AS "total shipping cost", + sum(cs_net_profit) AS "total net profit" +FROM catalog_sales cs1, + date_dim, + customer_address, + call_center +WHERE d_date BETWEEN '2002-02-01' AND cast('2002-04-02' AS date) + AND cs1.cs_ship_date_sk = d_date_sk + AND cs1.cs_ship_addr_sk = ca_address_sk + AND ca_state = 'GA' + AND cs1.cs_call_center_sk = cc_call_center_sk + AND cc_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 cs_order_number) +LIMIT 100; +---- +logical_plan +01)Sort: order count ASC NULLS LAST, fetch=100 +02)--Projection: count(alias1) AS order count, sum(alias2) AS total shipping cost, sum(alias3) AS total net profit +03)----Aggregate: groupBy=[[]], aggr=[[count(alias1), sum(alias2), sum(alias3)]] +04)------Aggregate: groupBy=[[cs1.cs_order_number AS alias1]], aggr=[[sum(cs1.cs_ext_ship_cost) AS alias2, sum(cs1.cs_net_profit) AS alias3]] +05)--------LeftAnti Join: cs1.cs_order_number = __correlated_sq_2.cr_order_number +06)----------Projection: cs1.cs_order_number, cs1.cs_ext_ship_cost, cs1.cs_net_profit +07)------------LeftSemi Join: cs1.cs_order_number = __correlated_sq_1.cs_order_number Filter: cs1.cs_warehouse_sk != __correlated_sq_1.cs_warehouse_sk +08)--------------Projection: cs1.cs_warehouse_sk, cs1.cs_order_number, cs1.cs_ext_ship_cost, cs1.cs_net_profit +09)----------------Inner Join: cs1.cs_call_center_sk = call_center.cc_call_center_sk +10)------------------Projection: cs1.cs_call_center_sk, cs1.cs_warehouse_sk, cs1.cs_order_number, cs1.cs_ext_ship_cost, cs1.cs_net_profit +11)--------------------Inner Join: cs1.cs_ship_addr_sk = customer_address.ca_address_sk +12)----------------------Projection: cs1.cs_ship_addr_sk, cs1.cs_call_center_sk, cs1.cs_warehouse_sk, cs1.cs_order_number, cs1.cs_ext_ship_cost, cs1.cs_net_profit +13)------------------------Inner Join: cs1.cs_ship_date_sk = date_dim.d_date_sk +14)--------------------------SubqueryAlias: cs1 +15)----------------------------TableScan: catalog_sales projection=[cs_ship_date_sk, cs_ship_addr_sk, cs_call_center_sk, cs_warehouse_sk, cs_order_number, cs_ext_ship_cost, cs_net_profit] +16)--------------------------Projection: date_dim.d_date_sk +17)----------------------------Filter: date_dim.d_date >= Date32("2002-02-01") AND date_dim.d_date <= Date32("2002-04-02") +18)------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2002-02-01"), date_dim.d_date <= Date32("2002-04-02")] +19)----------------------Projection: customer_address.ca_address_sk +20)------------------------Filter: customer_address.ca_state = Utf8View("GA") +21)--------------------------TableScan: customer_address projection=[ca_address_sk, ca_state], partial_filters=[customer_address.ca_state = Utf8View("GA")] +22)------------------Projection: call_center.cc_call_center_sk +23)--------------------Filter: call_center.cc_county = Utf8View("Williamson County") +24)----------------------TableScan: call_center projection=[cc_call_center_sk, cc_county], partial_filters=[call_center.cc_county = Utf8View("Williamson County")] +25)--------------SubqueryAlias: __correlated_sq_1 +26)----------------SubqueryAlias: cs2 +27)------------------TableScan: catalog_sales projection=[cs_warehouse_sk, cs_order_number] +28)----------SubqueryAlias: __correlated_sq_2 +29)------------SubqueryAlias: cr1 +30)--------------TableScan: catalog_returns projection=[cr_order_number] +physical_plan +01)ProjectionExec: expr=[count(alias1)@0 as order count, sum(alias2)@1 as total shipping cost, sum(alias3)@2 as total net profit] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[count(alias1), sum(alias2), sum(alias3)] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[count(alias1), sum(alias2), sum(alias3)] +06)----------AggregateExec: mode=FinalPartitioned, gby=[alias1@0 as alias1], aggr=[sum(cs1.cs_ext_ship_cost) as alias2, sum(cs1.cs_net_profit) as alias3] +07)------------RepartitionExec: partitioning=Hash([alias1@0], 4), input_partitions=4 +08)--------------AggregateExec: mode=Partial, gby=[cs_order_number@0 as alias1], aggr=[sum(cs1.cs_ext_ship_cost) as alias2, sum(cs1.cs_net_profit) as alias3] +09)----------------HashJoinExec: mode=CollectLeft, join_type=LeftAnti, on=[(cs_order_number@0, cr_order_number@0)] +10)------------------CoalescePartitionsExec +11)--------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(cs_order_number@1, cs_order_number@1)], filter=cs_warehouse_sk@0 != cs_warehouse_sk@1, projection=[cs_order_number@1, cs_ext_ship_cost@2, cs_net_profit@3] +12)----------------------CoalescePartitionsExec +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cc_call_center_sk@0, cs_call_center_sk@0)], projection=[cs_warehouse_sk@2, cs_order_number@3, cs_ext_ship_cost@4, cs_net_profit@5] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/call_center.vortex]]}, projection=[cc_call_center_sk], file_type=vortex, predicate: cc_county@25 = Williamson County +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, cs_ship_addr_sk@0)], projection=[cs_call_center_sk@2, cs_warehouse_sk@3, cs_order_number@4, cs_ext_ship_cost@5, cs_net_profit@6] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_state@8 = GA +17)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_ship_date_sk@0)], projection=[cs_ship_addr_sk@2, cs_call_center_sk@3, cs_warehouse_sk@4, cs_order_number@5, cs_ext_ship_cost@6, cs_net_profit@7] +18)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2002-02-01 AND d_date@2 <= 2002-04-02 +19)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_ship_date_sk, cs_ship_addr_sk, cs_call_center_sk, cs_warehouse_sk, cs_order_number, cs_ext_ship_cost, cs_net_profit], file_type=vortex +20)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_warehouse_sk, cs_order_number], file_type=vortex +21)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_order_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q17.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q17.slt.no new file mode 100644 index 00000000000..e377fd10cf3 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q17.slt.no @@ -0,0 +1,115 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + i_item_desc, + s_state, + count(ss_quantity) AS store_sales_quantitycount, + avg(ss_quantity) AS store_sales_quantityave, + stddev_samp(ss_quantity) AS store_sales_quantitystdev, + stddev_samp(ss_quantity)/avg(ss_quantity) AS store_sales_quantitycov, + count(sr_return_quantity) AS store_returns_quantitycount, + avg(sr_return_quantity) AS store_returns_quantityave, + stddev_samp(sr_return_quantity) AS store_returns_quantitystdev, + stddev_samp(sr_return_quantity)/avg(sr_return_quantity) AS store_returns_quantitycov, + count(cs_quantity) AS catalog_sales_quantitycount, + avg(cs_quantity) AS catalog_sales_quantityave, + stddev_samp(cs_quantity) AS catalog_sales_quantitystdev, + stddev_samp(cs_quantity)/avg(cs_quantity) AS catalog_sales_quantitycov +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_quarter_name = '2001Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') +GROUP BY i_item_id, + i_item_desc, + s_state +ORDER BY i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS FIRST, item.i_item_desc ASC NULLS FIRST, store.s_state ASC NULLS FIRST, fetch=100 +02)--Projection: item.i_item_id, item.i_item_desc, store.s_state, count(store_sales.ss_quantity) AS store_sales_quantitycount, avg(store_sales.ss_quantity) AS store_sales_quantityave, stddev(store_sales.ss_quantity) AS stddev_samp(store_sales.ss_quantity) AS store_sales_quantitystdev, stddev(store_sales.ss_quantity) AS stddev_samp(store_sales.ss_quantity) / avg(store_sales.ss_quantity) AS store_sales_quantitycov, count(store_returns.sr_return_quantity) AS store_returns_quantitycount, avg(store_returns.sr_return_quantity) AS store_returns_quantityave, stddev(store_returns.sr_return_quantity) AS stddev_samp(store_returns.sr_return_quantity) AS store_returns_quantitystdev, stddev(store_returns.sr_return_quantity) AS stddev_samp(store_returns.sr_return_quantity) / avg(store_returns.sr_return_quantity) AS store_returns_quantitycov, count(catalog_sales.cs_quantity) AS catalog_sales_quantitycount, avg(catalog_sales.cs_quantity) AS catalog_sales_quantityave, stddev(catalog_sales.cs_quantity) AS stddev_samp(catalog_sales.cs_quantity) AS catalog_sales_quantitystdev, stddev(catalog_sales.cs_quantity) AS stddev_samp(catalog_sales.cs_quantity) / avg(catalog_sales.cs_quantity) AS catalog_sales_quantitycov +03)----Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, store.s_state]], aggr=[[count(store_sales.ss_quantity), avg(__common_expr_1 AS store_sales.ss_quantity), stddev(__common_expr_1 AS store_sales.ss_quantity), count(store_returns.sr_return_quantity), avg(__common_expr_2 AS store_returns.sr_return_quantity), stddev(__common_expr_2 AS store_returns.sr_return_quantity), count(catalog_sales.cs_quantity), avg(__common_expr_3 AS catalog_sales.cs_quantity), stddev(__common_expr_3 AS catalog_sales.cs_quantity)]] +04)------Projection: CAST(store_sales.ss_quantity AS Float64) AS __common_expr_1, CAST(store_returns.sr_return_quantity AS Float64) AS __common_expr_2, CAST(catalog_sales.cs_quantity AS Float64) AS __common_expr_3, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_quantity, store.s_state, item.i_item_id, item.i_item_desc +05)--------Inner Join: store_sales.ss_item_sk = item.i_item_sk +06)----------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_quantity, store.s_state +07)------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +08)--------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_quantity +09)----------------Inner Join: catalog_sales.cs_sold_date_sk = d3.d_date_sk +10)------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_sold_date_sk, catalog_sales.cs_quantity +11)--------------------Inner Join: store_returns.sr_returned_date_sk = d2.d_date_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_returned_date_sk, store_returns.sr_return_quantity, catalog_sales.cs_sold_date_sk, catalog_sales.cs_quantity +13)------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +14)--------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_returned_date_sk, store_returns.sr_return_quantity, catalog_sales.cs_sold_date_sk, catalog_sales.cs_quantity +15)----------------------------Inner Join: store_returns.sr_customer_sk = catalog_sales.cs_bill_customer_sk, store_returns.sr_item_sk = catalog_sales.cs_item_sk +16)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_returned_date_sk, store_returns.sr_item_sk, store_returns.sr_customer_sk, store_returns.sr_return_quantity +17)--------------------------------Inner Join: store_sales.ss_customer_sk = store_returns.sr_customer_sk, store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +18)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_quantity] +19)----------------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number, sr_return_quantity] +20)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_quantity] +21)--------------------------SubqueryAlias: d1 +22)----------------------------Projection: date_dim.d_date_sk +23)------------------------------Filter: date_dim.d_quarter_name = Utf8View("2001Q1") +24)--------------------------------TableScan: date_dim projection=[d_date_sk, d_quarter_name], partial_filters=[date_dim.d_quarter_name = Utf8View("2001Q1")] +25)----------------------SubqueryAlias: d2 +26)------------------------Projection: date_dim.d_date_sk +27)--------------------------Filter: date_dim.d_quarter_name = Utf8View("2001Q1") OR date_dim.d_quarter_name = Utf8View("2001Q2") OR date_dim.d_quarter_name = Utf8View("2001Q3") +28)----------------------------TableScan: date_dim projection=[d_date_sk, d_quarter_name], partial_filters=[date_dim.d_quarter_name = Utf8View("2001Q1") OR date_dim.d_quarter_name = Utf8View("2001Q2") OR date_dim.d_quarter_name = Utf8View("2001Q3")] +29)------------------SubqueryAlias: d3 +30)--------------------Projection: date_dim.d_date_sk +31)----------------------Filter: date_dim.d_quarter_name = Utf8View("2001Q1") OR date_dim.d_quarter_name = Utf8View("2001Q2") OR date_dim.d_quarter_name = Utf8View("2001Q3") +32)------------------------TableScan: date_dim projection=[d_date_sk, d_quarter_name], partial_filters=[date_dim.d_quarter_name = Utf8View("2001Q1") OR date_dim.d_quarter_name = Utf8View("2001Q2") OR date_dim.d_quarter_name = Utf8View("2001Q3")] +33)--------------TableScan: store projection=[s_store_sk, s_state] +34)----------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC, i_item_desc@1 ASC, s_state@2 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC, i_item_desc@1 ASC, s_state@2 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, s_state@2 as s_state, count(store_sales.ss_quantity)@3 as store_sales_quantitycount, avg(store_sales.ss_quantity)@4 as store_sales_quantityave, stddev(store_sales.ss_quantity)@5 as store_sales_quantitystdev, stddev(store_sales.ss_quantity)@5 / avg(store_sales.ss_quantity)@4 as store_sales_quantitycov, count(store_returns.sr_return_quantity)@6 as store_returns_quantitycount, avg(store_returns.sr_return_quantity)@7 as store_returns_quantityave, stddev(store_returns.sr_return_quantity)@8 as store_returns_quantitystdev, stddev(store_returns.sr_return_quantity)@8 / avg(store_returns.sr_return_quantity)@7 as store_returns_quantitycov, count(catalog_sales.cs_quantity)@9 as catalog_sales_quantitycount, avg(catalog_sales.cs_quantity)@10 as catalog_sales_quantityave, stddev(catalog_sales.cs_quantity)@11 as catalog_sales_quantitystdev, stddev(catalog_sales.cs_quantity)@11 / avg(catalog_sales.cs_quantity)@10 as catalog_sales_quantitycov] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, s_state@2 as s_state], aggr=[count(store_sales.ss_quantity), avg(store_sales.ss_quantity), stddev(store_sales.ss_quantity), count(store_returns.sr_return_quantity), avg(store_returns.sr_return_quantity), stddev(store_returns.sr_return_quantity), count(catalog_sales.cs_quantity), avg(catalog_sales.cs_quantity), stddev(catalog_sales.cs_quantity)] +05)--------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, s_state@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_item_id@7 as i_item_id, i_item_desc@8 as i_item_desc, s_state@6 as s_state], aggr=[count(store_sales.ss_quantity), avg(store_sales.ss_quantity), stddev(store_sales.ss_quantity), count(store_returns.sr_return_quantity), avg(store_returns.sr_return_quantity), stddev(store_returns.sr_return_quantity), count(catalog_sales.cs_quantity), avg(catalog_sales.cs_quantity), stddev(catalog_sales.cs_quantity)] +07)------------ProjectionExec: expr=[CAST(ss_quantity@0 AS Float64) as __common_expr_1, CAST(sr_return_quantity@1 AS Float64) as __common_expr_2, CAST(cs_quantity@2 AS Float64) as __common_expr_3, ss_quantity@0 as ss_quantity, sr_return_quantity@1 as sr_return_quantity, cs_quantity@2 as cs_quantity, s_state@3 as s_state, i_item_id@4 as i_item_id, i_item_desc@5 as i_item_desc] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_quantity@4, sr_return_quantity@5, cs_quantity@6, s_state@7, i_item_id@1, i_item_desc@2] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc], file_type=vortex +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@2, ss_quantity@4, sr_return_quantity@5, cs_quantity@6, s_state@1] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_state], file_type=vortex +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@4)], projection=[ss_item_sk@1, ss_store_sk@2, ss_quantity@3, sr_return_quantity@4, cs_quantity@6] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_quarter_name@15 = 2001Q1 OR d_quarter_name@15 = 2001Q2 OR d_quarter_name@15 = 2001Q3 +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@3)], projection=[ss_item_sk@1, ss_store_sk@2, ss_quantity@3, sr_return_quantity@5, cs_sold_date_sk@6, cs_quantity@7] +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_quarter_name@15 = 2001Q1 OR d_quarter_name@15 = 2001Q2 OR d_quarter_name@15 = 2001Q3 +16)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_quantity@4, sr_returned_date_sk@5, sr_return_quantity@6, cs_sold_date_sk@7, cs_quantity@8] +17)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_quarter_name@15 = 2001Q1 +18)------------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(cs_bill_customer_sk@1, sr_customer_sk@6), (cs_item_sk@2, sr_item_sk@5)], projection=[ss_sold_date_sk@4, ss_item_sk@5, ss_store_sk@6, ss_quantity@7, sr_returned_date_sk@8, sr_return_quantity@11, cs_sold_date_sk@0, cs_quantity@3] +19)--------------------------RepartitionExec: partitioning=Hash([cs_bill_customer_sk@1, cs_item_sk@2], 4), input_partitions=4 +20)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_quantity], file_type=vortex +21)--------------------------RepartitionExec: partitioning=Hash([sr_customer_sk@6, sr_item_sk@5], 4), input_partitions=4 +22)----------------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(sr_customer_sk@2, ss_customer_sk@2), (sr_item_sk@1, ss_item_sk@1), (sr_ticket_number@3, ss_ticket_number@4)], projection=[ss_sold_date_sk@5, ss_item_sk@6, ss_store_sk@8, ss_quantity@10, sr_returned_date_sk@0, sr_item_sk@1, sr_customer_sk@2, sr_return_quantity@4] +23)------------------------------RepartitionExec: partitioning=Hash([sr_customer_sk@2, sr_item_sk@1, sr_ticket_number@3], 4), input_partitions=4 +24)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number, sr_return_quantity], file_type=vortex +25)------------------------------RepartitionExec: partitioning=Hash([ss_customer_sk@2, ss_item_sk@1, ss_ticket_number@4], 4), input_partitions=4 +26)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_quantity], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q18.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q18.slt.no new file mode 100644 index 00000000000..256b2027ee5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q18.slt.no @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + ca_country, + ca_state, + ca_county, + avg(cast(cs_quantity AS decimal(12, 2))) agg1, + avg(cast(cs_list_price AS decimal(12, 2))) agg2, + avg(cast(cs_coupon_amt AS decimal(12, 2))) agg3, + avg(cast(cs_sales_price AS decimal(12, 2))) agg4, + avg(cast(cs_net_profit AS decimal(12, 2))) agg5, + avg(cast(c_birth_year AS decimal(12, 2))) agg6, + avg(cast(cd1.cd_dep_count AS decimal(12, 2))) agg7 +FROM catalog_sales, + customer_demographics cd1, + customer_demographics cd2, + customer, + customer_address, + date_dim, + item +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Unknown' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN (1, + 6, + 8, + 9, + 12, + 2) + AND d_year = 1998 + AND ca_state IN ('MS', + 'IN', + 'ND', + 'OK', + 'NM', + 'VA', + 'MS') +GROUP BY ROLLUP (i_item_id, + ca_country, + ca_state, + ca_county) +ORDER BY ca_country NULLS FIRST, + ca_state NULLS FIRST, + ca_county NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: customer_address.ca_country ASC NULLS FIRST, customer_address.ca_state ASC NULLS FIRST, customer_address.ca_county ASC NULLS FIRST, item.i_item_id ASC NULLS FIRST, fetch=100 +02)--Projection: item.i_item_id, customer_address.ca_country, customer_address.ca_state, customer_address.ca_county, avg(catalog_sales.cs_quantity) AS agg1, avg(catalog_sales.cs_list_price) AS agg2, avg(catalog_sales.cs_coupon_amt) AS agg3, avg(catalog_sales.cs_sales_price) AS agg4, avg(catalog_sales.cs_net_profit) AS agg5, avg(customer.c_birth_year) AS agg6, avg(cd1.cd_dep_count) AS agg7 +03)----Aggregate: groupBy=[[ROLLUP (item.i_item_id, customer_address.ca_country, customer_address.ca_state, customer_address.ca_county)]], aggr=[[avg(CAST(catalog_sales.cs_quantity AS Decimal128(12, 2))), avg(CAST(catalog_sales.cs_list_price AS Decimal128(12, 2))), avg(CAST(catalog_sales.cs_coupon_amt AS Decimal128(12, 2))), avg(CAST(catalog_sales.cs_sales_price AS Decimal128(12, 2))), avg(CAST(catalog_sales.cs_net_profit AS Decimal128(12, 2))), avg(CAST(customer.c_birth_year AS Decimal128(12, 2))), avg(CAST(cd1.cd_dep_count AS Decimal128(12, 2)))]] +04)------Projection: catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, catalog_sales.cs_net_profit, cd1.cd_dep_count, customer.c_birth_year, customer_address.ca_county, customer_address.ca_state, customer_address.ca_country, item.i_item_id +05)--------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +06)----------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, catalog_sales.cs_net_profit, cd1.cd_dep_count, customer.c_birth_year, customer_address.ca_county, customer_address.ca_state, customer_address.ca_country +07)------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +08)--------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, catalog_sales.cs_net_profit, cd1.cd_dep_count, customer.c_birth_year, customer_address.ca_county, customer_address.ca_state, customer_address.ca_country +09)----------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +10)------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, catalog_sales.cs_net_profit, cd1.cd_dep_count, customer.c_current_addr_sk, customer.c_birth_year +11)--------------------Inner Join: customer.c_current_cdemo_sk = cd2.cd_demo_sk +12)----------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, catalog_sales.cs_net_profit, cd1.cd_dep_count, customer.c_current_cdemo_sk, customer.c_current_addr_sk, customer.c_birth_year +13)------------------------Inner Join: catalog_sales.cs_bill_customer_sk = customer.c_customer_sk +14)--------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, catalog_sales.cs_net_profit, cd1.cd_dep_count +15)----------------------------Inner Join: catalog_sales.cs_bill_cdemo_sk = cd1.cd_demo_sk +16)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_bill_cdemo_sk, cs_item_sk, cs_quantity, cs_list_price, cs_sales_price, cs_coupon_amt, cs_net_profit] +17)------------------------------SubqueryAlias: cd1 +18)--------------------------------Projection: customer_demographics.cd_demo_sk, customer_demographics.cd_dep_count +19)----------------------------------Filter: customer_demographics.cd_gender = Utf8View("F") AND customer_demographics.cd_education_status = Utf8View("Unknown") +20)------------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_education_status, cd_dep_count], partial_filters=[customer_demographics.cd_gender = Utf8View("F"), customer_demographics.cd_education_status = Utf8View("Unknown")] +21)--------------------------Projection: customer.c_customer_sk, customer.c_current_cdemo_sk, customer.c_current_addr_sk, customer.c_birth_year +22)----------------------------Filter: customer.c_birth_month IN ([Int64(1), Int64(6), Int64(8), Int64(9), Int64(12), Int64(2)]) +23)------------------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk, c_birth_month, c_birth_year], partial_filters=[customer.c_birth_month IN ([Int64(1), Int64(6), Int64(8), Int64(9), Int64(12), Int64(2)])] +24)----------------------SubqueryAlias: cd2 +25)------------------------TableScan: customer_demographics projection=[cd_demo_sk] +26)------------------Filter: customer_address.ca_state IN ([Utf8View("MS"), Utf8View("IN"), Utf8View("ND"), Utf8View("OK"), Utf8View("NM"), Utf8View("VA"), Utf8View("MS")]) +27)--------------------TableScan: customer_address projection=[ca_address_sk, ca_county, ca_state, ca_country], partial_filters=[customer_address.ca_state IN ([Utf8View("MS"), Utf8View("IN"), Utf8View("ND"), Utf8View("OK"), Utf8View("NM"), Utf8View("VA"), Utf8View("MS")])] +28)--------------Projection: date_dim.d_date_sk +29)----------------Filter: date_dim.d_year = Int64(1998) +30)------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(1998)] +31)----------TableScan: item projection=[i_item_sk, i_item_id] +physical_plan +01)SortPreservingMergeExec: [ca_country@1 ASC, ca_state@2 ASC, ca_county@3 ASC, i_item_id@0 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[ca_country@1 ASC, ca_state@2 ASC, ca_county@3 ASC, i_item_id@0 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_item_id@0 as i_item_id, ca_country@1 as ca_country, ca_state@2 as ca_state, ca_county@3 as ca_county, avg(catalog_sales.cs_quantity)@5 as agg1, avg(catalog_sales.cs_list_price)@6 as agg2, avg(catalog_sales.cs_coupon_amt)@7 as agg3, avg(catalog_sales.cs_sales_price)@8 as agg4, avg(catalog_sales.cs_net_profit)@9 as agg5, avg(customer.c_birth_year)@10 as agg6, avg(cd1.cd_dep_count)@11 as agg7] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, ca_country@1 as ca_country, ca_state@2 as ca_state, ca_county@3 as ca_county, __grouping_id@4 as __grouping_id], aggr=[avg(catalog_sales.cs_quantity), avg(catalog_sales.cs_list_price), avg(catalog_sales.cs_coupon_amt), avg(catalog_sales.cs_sales_price), avg(catalog_sales.cs_net_profit), avg(customer.c_birth_year), avg(cd1.cd_dep_count)] +05)--------RepartitionExec: partitioning=Hash([i_item_id@0, ca_country@1, ca_state@2, ca_county@3, __grouping_id@4], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[(NULL as i_item_id, NULL as ca_country, NULL as ca_state, NULL as ca_county), (i_item_id@10 as i_item_id, NULL as ca_country, NULL as ca_state, NULL as ca_county), (i_item_id@10 as i_item_id, ca_country@9 as ca_country, NULL as ca_state, NULL as ca_county), (i_item_id@10 as i_item_id, ca_country@9 as ca_country, ca_state@8 as ca_state, NULL as ca_county), (i_item_id@10 as i_item_id, ca_country@9 as ca_country, ca_state@8 as ca_state, ca_county@7 as ca_county)], aggr=[avg(catalog_sales.cs_quantity), avg(catalog_sales.cs_list_price), avg(catalog_sales.cs_coupon_amt), avg(catalog_sales.cs_sales_price), avg(catalog_sales.cs_net_profit), avg(customer.c_birth_year), avg(cd1.cd_dep_count)] +07)------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_item_sk@0, i_item_sk@0)], projection=[cs_quantity@1, cs_list_price@2, cs_sales_price@3, cs_coupon_amt@4, cs_net_profit@5, cd_dep_count@6, c_birth_year@7, ca_county@8, ca_state@9, ca_country@10, i_item_id@12] +09)----------------CoalescePartitionsExec +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_item_sk@2, cs_quantity@3, cs_list_price@4, cs_sales_price@5, cs_coupon_amt@6, cs_net_profit@7, cd_dep_count@8, c_birth_year@9, ca_county@10, ca_state@11, ca_country@12] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@8)], projection=[cs_sold_date_sk@4, cs_item_sk@5, cs_quantity@6, cs_list_price@7, cs_sales_price@8, cs_coupon_amt@9, cs_net_profit@10, cd_dep_count@11, c_birth_year@13, ca_county@1, ca_state@2, ca_country@3] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county, ca_state, ca_country], file_type=vortex, predicate: ca_state@8 IN (SET) ([MS, IN, ND, OK, NM, VA, MS]) +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@8, cd_demo_sk@0)], projection=[cs_sold_date_sk@0, cs_item_sk@1, cs_quantity@2, cs_list_price@3, cs_sales_price@4, cs_coupon_amt@5, cs_net_profit@6, cd_dep_count@7, c_current_addr_sk@9, c_birth_year@10] +15)------------------------CoalescePartitionsExec +16)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@1)], projection=[cs_sold_date_sk@4, cs_item_sk@6, cs_quantity@7, cs_list_price@8, cs_sales_price@9, cs_coupon_amt@10, cs_net_profit@11, cd_dep_count@12, c_current_cdemo_sk@1, c_current_addr_sk@2, c_birth_year@3] +17)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk, c_birth_year], file_type=vortex, predicate: c_birth_month@12 IN (SET) ([1, 6, 8, 9, 12, 2]) +18)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, cs_bill_cdemo_sk@2)], projection=[cs_sold_date_sk@2, cs_bill_customer_sk@3, cs_item_sk@5, cs_quantity@6, cs_list_price@7, cs_sales_price@8, cs_coupon_amt@9, cs_net_profit@10, cd_dep_count@1] +19)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_dep_count], file_type=vortex, predicate: cd_gender@1 = F AND cd_education_status@3 = Unknown +20)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_bill_cdemo_sk, cs_item_sk, cs_quantity, cs_list_price, cs_sales_price, cs_coupon_amt, cs_net_profit], file_type=vortex +21)------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex +23)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q19.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q19.slt.no new file mode 100644 index 00000000000..e580bb2f0e3 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q19.slt.no @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item, + customer, + customer_address, + store +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=8 + AND d_moy=11 + AND d_year=1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND SUBSTRING(ca_zip, 1, 5) <> SUBSTRING(s_zip, 1, 5) + AND ss_store_sk = s_store_sk +GROUP BY i_brand, + i_brand_id, + i_manufact_id, + i_manufact +ORDER BY ext_price DESC, + i_brand, + i_brand_id, + i_manufact_id, + i_manufact +LIMIT 100 ; +---- +logical_plan +01)Sort: ext_price DESC NULLS FIRST, brand ASC NULLS LAST, brand_id ASC NULLS LAST, item.i_manufact_id ASC NULLS LAST, item.i_manufact ASC NULLS LAST, fetch=100 +02)--Projection: item.i_brand_id AS brand_id, item.i_brand AS brand, item.i_manufact_id, item.i_manufact, sum(store_sales.ss_ext_sales_price) AS ext_price +03)----Aggregate: groupBy=[[item.i_brand, item.i_brand_id, item.i_manufact_id, item.i_manufact]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +04)------Projection: store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand, item.i_manufact_id, item.i_manufact +05)--------Inner Join: store_sales.ss_store_sk = store.s_store_sk Filter: substr(customer_address.ca_zip, Int64(1), Int64(5)) != substr(store.s_zip, Int64(1), Int64(5)) +06)----------Projection: store_sales.ss_store_sk, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand, item.i_manufact_id, item.i_manufact, customer_address.ca_zip +07)------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +08)--------------Projection: store_sales.ss_store_sk, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand, item.i_manufact_id, item.i_manufact, customer.c_current_addr_sk +09)----------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +10)------------------Projection: store_sales.ss_customer_sk, store_sales.ss_store_sk, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand, item.i_manufact_id, item.i_manufact +11)--------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_store_sk, store_sales.ss_ext_sales_price +13)------------------------Inner Join: date_dim.d_date_sk = store_sales.ss_sold_date_sk +14)--------------------------Projection: date_dim.d_date_sk +15)----------------------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(1998) +16)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(1998)] +17)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ext_sales_price] +18)----------------------Projection: item.i_item_sk, item.i_brand_id, item.i_brand, item.i_manufact_id, item.i_manufact +19)------------------------Filter: item.i_manager_id = Int64(8) +20)--------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_brand, i_manufact_id, i_manufact, i_manager_id], partial_filters=[item.i_manager_id = Int64(8)] +21)------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +22)--------------TableScan: customer_address projection=[ca_address_sk, ca_zip] +23)----------TableScan: store projection=[s_store_sk, s_zip] +physical_plan +01)SortPreservingMergeExec: [ext_price@4 DESC, brand@1 ASC NULLS LAST, brand_id@0 ASC NULLS LAST, i_manufact_id@2 ASC NULLS LAST, i_manufact@3 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_brand_id@1 as brand_id, i_brand@0 as brand, i_manufact_id@2 as i_manufact_id, i_manufact@3 as i_manufact, sum(store_sales.ss_ext_sales_price)@4 as ext_price] +03)----SortExec: TopK(fetch=100), expr=[sum(store_sales.ss_ext_sales_price)@4 DESC, i_brand@0 ASC NULLS LAST, i_brand_id@1 ASC NULLS LAST, i_manufact_id@2 ASC NULLS LAST, i_manufact@3 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_brand@0 as i_brand, i_brand_id@1 as i_brand_id, i_manufact_id@2 as i_manufact_id, i_manufact@3 as i_manufact], aggr=[sum(store_sales.ss_ext_sales_price)] +05)--------RepartitionExec: partitioning=Hash([i_brand@0, i_brand_id@1, i_manufact_id@2, i_manufact@3], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_brand@2 as i_brand, i_brand_id@1 as i_brand_id, i_manufact_id@3 as i_manufact_id, i_manufact@4 as i_manufact], aggr=[sum(store_sales.ss_ext_sales_price)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], filter=substr(ca_zip@0, 1, 5) != substr(s_zip@1, 1, 5), projection=[ss_ext_sales_price@3, i_brand_id@4, i_brand@5, i_manufact_id@6, i_manufact@7] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_zip], file_type=vortex +09)--------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_addr_sk@6, ca_address_sk@0)], projection=[ss_store_sk@0, ss_ext_sales_price@1, i_brand_id@2, i_brand@3, i_manufact_id@4, i_manufact@5, ca_zip@8] +11)------------------CoalescePartitionsExec +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_customer_sk@0, c_customer_sk@0)], projection=[ss_store_sk@1, ss_ext_sales_price@2, i_brand_id@3, i_brand@4, i_manufact_id@5, i_manufact@6, c_current_addr_sk@8] +13)----------------------CoalescePartitionsExec +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_customer_sk@6, ss_store_sk@7, ss_ext_sales_price@8, i_brand_id@1, i_brand@2, i_manufact_id@3, i_manufact@4] +15)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_brand, i_manufact_id, i_manufact], file_type=vortex, predicate: i_manager_id@20 = 8 +16)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_customer_sk@3, ss_store_sk@4, ss_ext_sales_price@5] +17)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 1998 +18)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ext_sales_price], file_type=vortex +19)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +20)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex +21)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_zip], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q2.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q2.slt.no new file mode 100644 index 00000000000..39919c75690 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q2.slt.no @@ -0,0 +1,157 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH wscs AS + (SELECT sold_date_sk, + sales_price + FROM + (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales + UNION ALL SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales) sq1), + wswscs AS + (SELECT d_week_seq, + sum(CASE + WHEN (d_day_name='Sunday') THEN sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN sales_price + ELSE NULL + END) sat_sales + FROM wscs, + date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + round(sun_sales1/sun_sales2, 2) r1, + round(mon_sales1/mon_sales2, 2) r2, + round(tue_sales1/tue_sales2, 2) r3, + round(wed_sales1/wed_sales2, 2) r4, + round(thu_sales1/thu_sales2, 2) r5, + round(fri_sales1/fri_sales2, 2) r6, + round(sat_sales1/sat_sales2, 2) +FROM + (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001+1) z +WHERE d_week_seq1 = d_week_seq2-53 +ORDER BY d_week_seq1 NULLS FIRST; +---- +logical_plan +01)Sort: y.d_week_seq1 ASC NULLS FIRST +02)--Projection: y.d_week_seq1, round(y.sun_sales1 / z.sun_sales2, Int32(2)) AS r1, round(y.mon_sales1 / z.mon_sales2, Int32(2)) AS r2, round(y.tue_sales1 / z.tue_sales2, Int32(2)) AS r3, round(y.wed_sales1 / z.wed_sales2, Int32(2)) AS r4, round(y.thu_sales1 / z.thu_sales2, Int32(2)) AS r5, round(y.fri_sales1 / z.fri_sales2, Int32(2)) AS r6, round(y.sat_sales1 / z.sat_sales2, Int32(2)) AS round(y.sat_sales1 / z.sat_sales2,Int64(2)) +03)----Inner Join: y.d_week_seq1 = z.d_week_seq2 - Int64(53) +04)------SubqueryAlias: y +05)--------Projection: wswscs.d_week_seq AS d_week_seq1, wswscs.sun_sales AS sun_sales1, wswscs.mon_sales AS mon_sales1, wswscs.tue_sales AS tue_sales1, wswscs.wed_sales AS wed_sales1, wswscs.thu_sales AS thu_sales1, wswscs.fri_sales AS fri_sales1, wswscs.sat_sales AS sat_sales1 +06)----------Inner Join: wswscs.d_week_seq = date_dim.d_week_seq +07)------------SubqueryAlias: wswscs +08)--------------Projection: date_dim.d_week_seq, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END) AS sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END) AS mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END) AS tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END) AS wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END) AS thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END) AS fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END) AS sat_sales +09)----------------Aggregate: groupBy=[[date_dim.d_week_seq]], aggr=[[sum(CASE WHEN date_dim.d_day_name = Utf8View("Sunday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Monday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Tuesday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Wednesday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Thursday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Friday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Saturday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)]] +10)------------------Projection: wscs.sales_price, date_dim.d_week_seq, date_dim.d_day_name +11)--------------------Inner Join: wscs.sold_date_sk = date_dim.d_date_sk +12)----------------------SubqueryAlias: wscs +13)------------------------SubqueryAlias: sq1 +14)--------------------------Union +15)----------------------------Projection: web_sales.ws_sold_date_sk AS sold_date_sk, web_sales.ws_ext_sales_price AS sales_price +16)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_ext_sales_price] +17)----------------------------Projection: catalog_sales.cs_sold_date_sk AS sold_date_sk, catalog_sales.cs_ext_sales_price AS sales_price +18)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ext_sales_price] +19)----------------------TableScan: date_dim projection=[d_date_sk, d_week_seq, d_day_name] +20)------------Projection: date_dim.d_week_seq +21)--------------Filter: date_dim.d_year = Int64(2001) +22)----------------TableScan: date_dim projection=[d_week_seq, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +23)------SubqueryAlias: z +24)--------Projection: wswscs.d_week_seq AS d_week_seq2, wswscs.sun_sales AS sun_sales2, wswscs.mon_sales AS mon_sales2, wswscs.tue_sales AS tue_sales2, wswscs.wed_sales AS wed_sales2, wswscs.thu_sales AS thu_sales2, wswscs.fri_sales AS fri_sales2, wswscs.sat_sales AS sat_sales2 +25)----------Inner Join: wswscs.d_week_seq = date_dim.d_week_seq +26)------------SubqueryAlias: wswscs +27)--------------Projection: date_dim.d_week_seq, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END) AS sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END) AS mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END) AS tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END) AS wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END) AS thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END) AS fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END) AS sat_sales +28)----------------Aggregate: groupBy=[[date_dim.d_week_seq]], aggr=[[sum(CASE WHEN date_dim.d_day_name = Utf8View("Sunday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Monday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Tuesday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Wednesday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Thursday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Friday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Saturday") THEN wscs.sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)]] +29)------------------Projection: wscs.sales_price, date_dim.d_week_seq, date_dim.d_day_name +30)--------------------Inner Join: wscs.sold_date_sk = date_dim.d_date_sk +31)----------------------SubqueryAlias: wscs +32)------------------------SubqueryAlias: sq1 +33)--------------------------Union +34)----------------------------Projection: web_sales.ws_sold_date_sk AS sold_date_sk, web_sales.ws_ext_sales_price AS sales_price +35)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_ext_sales_price] +36)----------------------------Projection: catalog_sales.cs_sold_date_sk AS sold_date_sk, catalog_sales.cs_ext_sales_price AS sales_price +37)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ext_sales_price] +38)----------------------TableScan: date_dim projection=[d_date_sk, d_week_seq, d_day_name] +39)------------Projection: date_dim.d_week_seq +40)--------------Filter: date_dim.d_year = Int64(2002) +41)----------------TableScan: date_dim projection=[d_week_seq, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +physical_plan +01)SortPreservingMergeExec: [d_week_seq1@0 ASC] +02)--SortExec: expr=[d_week_seq1@0 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[d_week_seq1@0 as d_week_seq1, round(sun_sales1@1 / sun_sales2@2, 2) as r1, round(mon_sales1@3 / mon_sales2@4, 2) as r2, round(tue_sales1@5 / tue_sales2@6, 2) as r3, round(wed_sales1@7 / wed_sales2@8, 2) as r4, round(thu_sales1@9 / thu_sales2@10, 2) as r5, round(fri_sales1@11 / fri_sales2@12, 2) as r6, round(sat_sales1@13 / sat_sales2@14, 2) as round(y.sat_sales1 / z.sat_sales2,Int64(2))] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_week_seq1@0, z.d_week_seq2 - Int64(53)@8)], projection=[d_week_seq1@0, sun_sales1@1, sun_sales2@9, mon_sales1@2, mon_sales2@10, tue_sales1@3, tue_sales2@11, wed_sales1@4, wed_sales2@12, thu_sales1@5, thu_sales2@13, fri_sales1@6, fri_sales2@14, sat_sales1@7, sat_sales2@15] +05)--------CoalescePartitionsExec +06)----------ProjectionExec: expr=[d_week_seq@0 as d_week_seq1, sun_sales@1 as sun_sales1, mon_sales@2 as mon_sales1, tue_sales@3 as tue_sales1, wed_sales@4 as wed_sales1, thu_sales@5 as thu_sales1, fri_sales@6 as fri_sales1, sat_sales@7 as sat_sales1] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_week_seq@0, d_week_seq@0)], projection=[d_week_seq@1, sun_sales@2, mon_sales@3, tue_sales@4, wed_sales@5, thu_sales@6, fri_sales@7, sat_sales@8] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_year@6 = 2001 +09)--------------ProjectionExec: expr=[d_week_seq@0 as d_week_seq, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END)@1 as sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END)@2 as mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END)@3 as tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END)@4 as wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END)@5 as thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END)@6 as fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)@7 as sat_sales] +10)----------------AggregateExec: mode=FinalPartitioned, gby=[d_week_seq@0 as d_week_seq], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)] +11)------------------RepartitionExec: partitioning=Hash([d_week_seq@0], 4), input_partitions=8 +12)--------------------AggregateExec: mode=Partial, gby=[d_week_seq@1 as d_week_seq], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)] +13)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sold_date_sk@0)], projection=[sales_price@4, d_week_seq@1, d_day_name@2] +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_week_seq, d_day_name], file_type=vortex +15)------------------------UnionExec +16)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk@0 as sold_date_sk, ws_ext_sales_price@23 as sales_price], file_type=vortex +17)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk@0 as sold_date_sk, cs_ext_sales_price@23 as sales_price], file_type=vortex +18)--------ProjectionExec: expr=[d_week_seq@0 as d_week_seq2, sun_sales@1 as sun_sales2, mon_sales@2 as mon_sales2, tue_sales@3 as tue_sales2, wed_sales@4 as wed_sales2, thu_sales@5 as thu_sales2, fri_sales@6 as fri_sales2, sat_sales@7 as sat_sales2, d_week_seq@0 - 53 as z.d_week_seq2 - Int64(53)] +19)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_week_seq@0, d_week_seq@0)], projection=[d_week_seq@1, sun_sales@2, mon_sales@3, tue_sales@4, wed_sales@5, thu_sales@6, fri_sales@7, sat_sales@8] +20)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_year@6 = 2002 +21)------------ProjectionExec: expr=[d_week_seq@0 as d_week_seq, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END)@1 as sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END)@2 as mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END)@3 as tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END)@4 as wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END)@5 as thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END)@6 as fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)@7 as sat_sales] +22)--------------AggregateExec: mode=FinalPartitioned, gby=[d_week_seq@0 as d_week_seq], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)] +23)----------------RepartitionExec: partitioning=Hash([d_week_seq@0], 4), input_partitions=8 +24)------------------AggregateExec: mode=Partial, gby=[d_week_seq@1 as d_week_seq], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN wscs.sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN wscs.sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN wscs.sales_price ELSE NULL END)] +25)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sold_date_sk@0)], projection=[sales_price@4, d_week_seq@1, d_day_name@2] +26)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_week_seq, d_day_name], file_type=vortex +27)----------------------UnionExec +28)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk@0 as sold_date_sk, ws_ext_sales_price@23 as sales_price], file_type=vortex +29)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk@0 as sold_date_sk, cs_ext_sales_price@23 as sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q20.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q20.slt.no new file mode 100644 index 00000000000..92150ec667c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q20.slt.no @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(cs_ext_sales_price) AS itemrevenue, + sum(cs_ext_sales_price)*100.0000/sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM catalog_sales , + item, + date_dim +WHERE cs_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: item.i_category ASC NULLS FIRST, item.i_class ASC NULLS FIRST, item.i_item_id ASC NULLS FIRST, item.i_item_desc ASC NULLS FIRST, revenueratio ASC NULLS FIRST, fetch=100 +02)--Projection: item.i_item_id, item.i_item_desc, item.i_category, item.i_class, item.i_current_price, sum(catalog_sales.cs_ext_sales_price) AS itemrevenue, CAST(sum(catalog_sales.cs_ext_sales_price) AS Float64) * Float64(100) / CAST(sum(sum(catalog_sales.cs_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS Float64) AS revenueratio +03)----WindowAggr: windowExpr=[[sum(sum(catalog_sales.cs_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +04)------Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, item.i_category, item.i_class, item.i_current_price]], aggr=[[sum(catalog_sales.cs_ext_sales_price)]] +05)--------Projection: catalog_sales.cs_ext_sales_price, item.i_item_id, item.i_item_desc, item.i_current_price, item.i_class, item.i_category +06)----------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +07)------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ext_sales_price, item.i_item_id, item.i_item_desc, item.i_current_price, item.i_class, item.i_category +08)--------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +09)----------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_ext_sales_price] +10)----------------Filter: item.i_category = Utf8View("Sports") OR item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Home") +11)------------------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_class, i_category], partial_filters=[item.i_category = Utf8View("Sports") OR item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Home")] +12)------------Projection: date_dim.d_date_sk +13)--------------Filter: date_dim.d_date >= Date32("1999-02-22") AND date_dim.d_date <= Date32("1999-03-24") +14)----------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("1999-02-22"), date_dim.d_date <= Date32("1999-03-24")] +physical_plan +01)SortPreservingMergeExec: [i_category@2 ASC, i_class@3 ASC, i_item_id@0 ASC, i_item_desc@1 ASC, revenueratio@6 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_category@2 ASC, i_class@3 ASC, i_item_id@0 ASC, i_item_desc@1 ASC, revenueratio@6 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_category@2 as i_category, i_class@3 as i_class, i_current_price@4 as i_current_price, sum(catalog_sales.cs_ext_sales_price)@5 as itemrevenue, CAST(sum(catalog_sales.cs_ext_sales_price)@5 AS Float64) * 100 / CAST(sum(sum(catalog_sales.cs_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@6 AS Float64) as revenueratio] +04)------WindowAggExec: wdw=[sum(sum(catalog_sales.cs_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "sum(sum(catalog_sales.cs_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(27, 2), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +05)--------SortExec: expr=[i_class@3 ASC NULLS LAST], preserve_partitioning=[true] +06)----------RepartitionExec: partitioning=Hash([i_class@3], 4), input_partitions=4 +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_category@2 as i_category, i_class@3 as i_class, i_current_price@4 as i_current_price], aggr=[sum(catalog_sales.cs_ext_sales_price)] +08)--------------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, i_category@2, i_class@3, i_current_price@4], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id, i_item_desc@2 as i_item_desc, i_category@5 as i_category, i_class@4 as i_class, i_current_price@3 as i_current_price], aggr=[sum(catalog_sales.cs_ext_sales_price)] +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ext_sales_price@2, i_item_id@3, i_item_desc@4, i_current_price@5, i_class@6, i_category@7] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 1999-02-22 AND d_date@2 <= 1999-03-24 +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@6, cs_ext_sales_price@8, i_item_id@1, i_item_desc@2, i_current_price@3, i_class@4, i_category@5] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_class, i_category], file_type=vortex, predicate: i_category@12 = Sports OR i_category@12 = Books OR i_category@12 = Home +14)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q21.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q21.slt.no new file mode 100644 index 00000000000..988e1ba5dd5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q21.slt.no @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * +FROM + (SELECT w_warehouse_name, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_after + FROM inventory, + warehouse, + item, + date_dim + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) + GROUP BY w_warehouse_name, + i_item_id) x +WHERE (CASE + WHEN inv_before > 0 THEN (inv_after*1.000) / inv_before + ELSE NULL + END) BETWEEN 2.000/3.000 AND 3.000/2.000 +ORDER BY w_warehouse_name NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: x.w_warehouse_name ASC NULLS FIRST, x.i_item_id ASC NULLS FIRST, fetch=100 +02)--SubqueryAlias: x +03)----Projection: warehouse.w_warehouse_name, item.i_item_id, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END) AS inv_before, sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END) AS inv_after +04)------Filter: __common_expr_3 >= Float64(0.6666666666666666) AND __common_expr_3 <= Float64(1.5) +05)--------Projection: CASE WHEN sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END) > Int64(0) THEN CAST(sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END) AS Float64) / CAST(sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END) AS Float64) ELSE Float64(NULL) END AS __common_expr_3, warehouse.w_warehouse_name, item.i_item_id, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END) +06)----------Aggregate: groupBy=[[warehouse.w_warehouse_name, item.i_item_id]], aggr=[[sum(CASE WHEN date_dim.d_date < Date32("2000-03-11") THEN CAST(inventory.inv_quantity_on_hand AS Int64) ELSE Int64(0) END) AS sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= Date32("2000-03-11") THEN CAST(inventory.inv_quantity_on_hand AS Int64) ELSE Int64(0) END) AS sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)]] +07)------------Projection: inventory.inv_quantity_on_hand, warehouse.w_warehouse_name, item.i_item_id, date_dim.d_date +08)--------------Inner Join: inventory.inv_date_sk = date_dim.d_date_sk +09)----------------Projection: inventory.inv_date_sk, inventory.inv_quantity_on_hand, warehouse.w_warehouse_name, item.i_item_id +10)------------------Inner Join: inventory.inv_item_sk = item.i_item_sk +11)--------------------Projection: inventory.inv_date_sk, inventory.inv_item_sk, inventory.inv_quantity_on_hand, warehouse.w_warehouse_name +12)----------------------Inner Join: inventory.inv_warehouse_sk = warehouse.w_warehouse_sk +13)------------------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand] +14)------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name] +15)--------------------Projection: item.i_item_sk, item.i_item_id +16)----------------------Filter: item.i_current_price >= Decimal128(0.99,7,2) AND item.i_current_price <= Decimal128(1.49,7,2) +17)------------------------TableScan: item projection=[i_item_sk, i_item_id, i_current_price], partial_filters=[item.i_current_price >= Decimal128(0.99,7,2), item.i_current_price <= Decimal128(1.49,7,2)] +18)----------------Filter: date_dim.d_date >= Date32("2000-02-10") AND date_dim.d_date <= Date32("2000-04-10") +19)------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-02-10"), date_dim.d_date <= Date32("2000-04-10")] +physical_plan +01)SortPreservingMergeExec: [w_warehouse_name@0 ASC, i_item_id@1 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[w_warehouse_name@0 ASC, i_item_id@1 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[w_warehouse_name@0 as w_warehouse_name, i_item_id@1 as i_item_id, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@2 as inv_before, sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@3 as inv_after] +04)------FilterExec: __common_expr_3@0 >= 0.6666666666666666 AND __common_expr_3@0 <= 1.5, projection=[w_warehouse_name@1, i_item_id@2, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@3, sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@4] +05)--------ProjectionExec: expr=[CASE WHEN sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@2 > 0 THEN CAST(sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@3 AS Float64) / CAST(sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@2 AS Float64) END as __common_expr_3, w_warehouse_name@0 as w_warehouse_name, i_item_id@1 as i_item_id, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@2 as sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)@3 as sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)] +06)----------AggregateExec: mode=FinalPartitioned, gby=[w_warehouse_name@0 as w_warehouse_name, i_item_id@1 as i_item_id], aggr=[sum(CASE WHEN date_dim.d_date < 2000-03-11 THEN inventory.inv_quantity_on_hand ELSE 0 END) as sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= 2000-03-11 THEN inventory.inv_quantity_on_hand ELSE 0 END) as sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)] +07)------------RepartitionExec: partitioning=Hash([w_warehouse_name@0, i_item_id@1], 4), input_partitions=4 +08)--------------AggregateExec: mode=Partial, gby=[w_warehouse_name@1 as w_warehouse_name, i_item_id@2 as i_item_id], aggr=[sum(CASE WHEN date_dim.d_date < 2000-03-11 THEN inventory.inv_quantity_on_hand ELSE 0 END) as sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= 2000-03-11 THEN inventory.inv_quantity_on_hand ELSE 0 END) as sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN inventory.inv_quantity_on_hand ELSE Int64(0) END)] +09)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, inv_date_sk@0)], projection=[inv_quantity_on_hand@3, w_warehouse_name@4, i_item_id@5, d_date@1] +10)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_date@2 >= 2000-02-10 AND d_date@2 <= 2000-04-10 +11)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, inv_item_sk@1)], projection=[inv_date_sk@2, inv_quantity_on_hand@4, w_warehouse_name@5, i_item_id@1] +12)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex, predicate: i_current_price@5 >= 0.99 AND i_current_price@5 <= 1.49 +13)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, inv_warehouse_sk@2)], projection=[inv_date_sk@2, inv_item_sk@3, inv_quantity_on_hand@5, w_warehouse_name@1] +14)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_warehouse_name], file_type=vortex +15)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +16)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q22.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q22.slt.no new file mode 100644 index 00000000000..1d4cf91c79c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q22.slt.no @@ -0,0 +1,50 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_product_name , + i_brand , + i_class , + i_category , + avg(inv_quantity_on_hand) qoh +FROM inventory , + date_dim , + item +WHERE inv_date_sk=d_date_sk + AND inv_item_sk=i_item_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 +GROUP BY rollup(i_product_name ,i_brand ,i_class ,i_category) +ORDER BY qoh NULLS FIRST, + i_product_name NULLS FIRST, + i_brand NULLS FIRST, + i_class NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: qoh ASC NULLS FIRST, item.i_product_name ASC NULLS FIRST, item.i_brand ASC NULLS FIRST, item.i_class ASC NULLS FIRST, item.i_category ASC NULLS FIRST, fetch=100 +02)--Projection: item.i_product_name, item.i_brand, item.i_class, item.i_category, avg(inventory.inv_quantity_on_hand) AS qoh +03)----Aggregate: groupBy=[[ROLLUP (item.i_product_name, item.i_brand, item.i_class, item.i_category)]], aggr=[[avg(CAST(inventory.inv_quantity_on_hand AS Float64))]] +04)------Projection: inventory.inv_quantity_on_hand, item.i_brand, item.i_class, item.i_category, item.i_product_name +05)--------Inner Join: inventory.inv_item_sk = item.i_item_sk +06)----------Projection: inventory.inv_item_sk, inventory.inv_quantity_on_hand +07)------------Inner Join: inventory.inv_date_sk = date_dim.d_date_sk +08)--------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_quantity_on_hand] +09)--------------Projection: date_dim.d_date_sk +10)----------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +11)------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +12)----------TableScan: item projection=[i_item_sk, i_brand, i_class, i_category, i_product_name] +physical_plan +01)SortPreservingMergeExec: [qoh@4 ASC, i_product_name@0 ASC, i_brand@1 ASC, i_class@2 ASC, i_category@3 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[qoh@4 ASC, i_product_name@0 ASC, i_brand@1 ASC, i_class@2 ASC, i_category@3 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_product_name@0 as i_product_name, i_brand@1 as i_brand, i_class@2 as i_class, i_category@3 as i_category, avg(inventory.inv_quantity_on_hand)@5 as qoh] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_product_name@0 as i_product_name, i_brand@1 as i_brand, i_class@2 as i_class, i_category@3 as i_category, __grouping_id@4 as __grouping_id], aggr=[avg(inventory.inv_quantity_on_hand)] +05)--------RepartitionExec: partitioning=Hash([i_product_name@0, i_brand@1, i_class@2, i_category@3, __grouping_id@4], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[(NULL as i_product_name, NULL as i_brand, NULL as i_class, NULL as i_category), (i_product_name@4 as i_product_name, NULL as i_brand, NULL as i_class, NULL as i_category), (i_product_name@4 as i_product_name, i_brand@1 as i_brand, NULL as i_class, NULL as i_category), (i_product_name@4 as i_product_name, i_brand@1 as i_brand, i_class@2 as i_class, NULL as i_category), (i_product_name@4 as i_product_name, i_brand@1 as i_brand, i_class@2 as i_class, i_category@3 as i_category)], aggr=[avg(inventory.inv_quantity_on_hand)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, inv_item_sk@0)], projection=[inv_quantity_on_hand@6, i_brand@1, i_class@2, i_category@3, i_product_name@4] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_class, i_category, i_product_name], file_type=vortex +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, inv_date_sk@0)], projection=[inv_item_sk@2, inv_quantity_on_hand@3] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +11)----------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk, inv_quantity_on_hand], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q23.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q23.slt.no new file mode 100644 index 00000000000..8cec1a94048 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q23.slt.no @@ -0,0 +1,300 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH frequent_ss_items AS + (SELECT itemdesc, + i_item_sk item_sk, + d_date solddate, + count(*) cnt + FROM store_sales, + date_dim, + (SELECT SUBSTRING(i_item_desc, 1, 30) itemdesc, + * + FROM item) sq1 + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY itemdesc, + i_item_sk, + d_date + HAVING count(*) >4), + max_store_sales AS + (SELECT max(csales) tpcds_cmax + FROM + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) csales + FROM store_sales, + customer, + date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY c_customer_sk) sq2), + best_ss_customer AS + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) ssales + FROM store_sales, + customer, + max_store_sales + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING sum(ss_quantity*ss_sales_price) > (50/100.0) * max(tpcds_cmax)) +SELECT c_last_name, + c_first_name, + sales +FROM + (SELECT c_last_name, + c_first_name, + sum(cs_quantity*cs_list_price) sales + FROM catalog_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = item_sk + AND cs_bill_customer_sk = best_ss_customer.c_customer_sk + AND cs_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name + UNION ALL SELECT c_last_name, + c_first_name, + sum(ws_quantity*ws_list_price) sales + FROM web_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = item_sk + AND ws_bill_customer_sk = best_ss_customer.c_customer_sk + AND ws_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name) sq3 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + sales NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: sq3.c_last_name ASC NULLS FIRST, sq3.c_first_name ASC NULLS FIRST, sq3.sales ASC NULLS FIRST, fetch=100 +02)--SubqueryAlias: sq3 +03)----Union +04)------Projection: customer.c_last_name, customer.c_first_name, sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price) AS sales +05)--------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name]], aggr=[[sum(CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) * catalog_sales.cs_list_price)]] +06)----------Projection: catalog_sales.cs_quantity, catalog_sales.cs_list_price, customer.c_first_name, customer.c_last_name +07)------------LeftSemi Join: catalog_sales.cs_bill_customer_sk = best_ss_customer.c_customer_sk +08)--------------Projection: catalog_sales.cs_bill_customer_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, customer.c_first_name, customer.c_last_name +09)----------------Inner Join: catalog_sales.cs_item_sk = frequent_ss_items.item_sk +10)------------------Projection: catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, customer.c_first_name, customer.c_last_name +11)--------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +12)----------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, customer.c_first_name, customer.c_last_name +13)------------------------Inner Join: catalog_sales.cs_bill_customer_sk = customer.c_customer_sk +14)--------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_quantity, cs_list_price] +15)--------------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +16)----------------------Projection: date_dim.d_date_sk +17)------------------------Filter: date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(2) +18)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2000), date_dim.d_moy = Int64(2)] +19)------------------SubqueryAlias: frequent_ss_items +20)--------------------Projection: sq1.i_item_sk AS item_sk +21)----------------------Filter: count(Int64(1)) > Int64(4) +22)------------------------Projection: sq1.i_item_sk, count(Int64(1)) +23)--------------------------Aggregate: groupBy=[[sq1.itemdesc, sq1.i_item_sk, date_dim.d_date]], aggr=[[count(Int64(1))]] +24)----------------------------Projection: date_dim.d_date, sq1.itemdesc, sq1.i_item_sk +25)------------------------------Inner Join: store_sales.ss_item_sk = sq1.i_item_sk +26)--------------------------------Projection: store_sales.ss_item_sk, date_dim.d_date +27)----------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +28)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk] +29)------------------------------------Projection: date_dim.d_date_sk, date_dim.d_date +30)--------------------------------------Filter: date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)]) +31)----------------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_year], partial_filters=[date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)])] +32)--------------------------------SubqueryAlias: sq1 +33)----------------------------------Projection: substr(item.i_item_desc, Int64(1), Int64(30)) AS itemdesc, item.i_item_sk +34)------------------------------------TableScan: item projection=[i_item_sk, i_item_desc] +35)--------------SubqueryAlias: best_ss_customer +36)----------------Projection: customer.c_customer_sk +37)------------------Filter: CAST(sum(store_sales.ss_quantity * store_sales.ss_sales_price) AS Decimal128(38, 15)) > CAST(Float64(0.5) * CAST(max(max_store_sales.tpcds_cmax) AS Float64) AS Decimal128(38, 15)) +38)--------------------Aggregate: groupBy=[[customer.c_customer_sk]], aggr=[[sum(CAST(store_sales.ss_quantity AS Decimal128(20, 0)) * store_sales.ss_sales_price), max(max_store_sales.tpcds_cmax)]] +39)----------------------Cross Join: +40)------------------------Projection: store_sales.ss_quantity, store_sales.ss_sales_price, customer.c_customer_sk +41)--------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +42)----------------------------TableScan: store_sales projection=[ss_customer_sk, ss_quantity, ss_sales_price] +43)----------------------------TableScan: customer projection=[c_customer_sk] +44)------------------------SubqueryAlias: max_store_sales +45)--------------------------Projection: max(sq2.csales) AS tpcds_cmax +46)----------------------------Aggregate: groupBy=[[]], aggr=[[max(sq2.csales)]] +47)------------------------------SubqueryAlias: sq2 +48)--------------------------------Projection: sum(store_sales.ss_quantity * store_sales.ss_sales_price) AS csales +49)----------------------------------Aggregate: groupBy=[[customer.c_customer_sk]], aggr=[[sum(CAST(store_sales.ss_quantity AS Decimal128(20, 0)) * store_sales.ss_sales_price)]] +50)------------------------------------Projection: store_sales.ss_quantity, store_sales.ss_sales_price, customer.c_customer_sk +51)--------------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +52)----------------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_quantity, store_sales.ss_sales_price, customer.c_customer_sk +53)------------------------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +54)--------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_quantity, ss_sales_price] +55)--------------------------------------------TableScan: customer projection=[c_customer_sk] +56)----------------------------------------Projection: date_dim.d_date_sk +57)------------------------------------------Filter: date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)]) +58)--------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)])] +59)------Projection: customer.c_last_name, customer.c_first_name, sum(web_sales.ws_quantity * web_sales.ws_list_price) AS sales +60)--------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name]], aggr=[[sum(CAST(web_sales.ws_quantity AS Decimal128(20, 0)) * web_sales.ws_list_price)]] +61)----------Projection: web_sales.ws_quantity, web_sales.ws_list_price, customer.c_first_name, customer.c_last_name +62)------------LeftSemi Join: web_sales.ws_bill_customer_sk = best_ss_customer.c_customer_sk +63)--------------Projection: web_sales.ws_bill_customer_sk, web_sales.ws_quantity, web_sales.ws_list_price, customer.c_first_name, customer.c_last_name +64)----------------Inner Join: web_sales.ws_item_sk = frequent_ss_items.item_sk +65)------------------Projection: web_sales.ws_item_sk, web_sales.ws_bill_customer_sk, web_sales.ws_quantity, web_sales.ws_list_price, customer.c_first_name, customer.c_last_name +66)--------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +67)----------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_bill_customer_sk, web_sales.ws_quantity, web_sales.ws_list_price, customer.c_first_name, customer.c_last_name +68)------------------------Inner Join: web_sales.ws_bill_customer_sk = customer.c_customer_sk +69)--------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk, ws_quantity, ws_list_price] +70)--------------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +71)----------------------Projection: date_dim.d_date_sk +72)------------------------Filter: date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(2) +73)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2000), date_dim.d_moy = Int64(2)] +74)------------------SubqueryAlias: frequent_ss_items +75)--------------------Projection: sq1.i_item_sk AS item_sk +76)----------------------Filter: count(Int64(1)) > Int64(4) +77)------------------------Projection: sq1.i_item_sk, count(Int64(1)) +78)--------------------------Aggregate: groupBy=[[sq1.itemdesc, sq1.i_item_sk, date_dim.d_date]], aggr=[[count(Int64(1))]] +79)----------------------------Projection: date_dim.d_date, sq1.itemdesc, sq1.i_item_sk +80)------------------------------Inner Join: store_sales.ss_item_sk = sq1.i_item_sk +81)--------------------------------Projection: store_sales.ss_item_sk, date_dim.d_date +82)----------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +83)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk] +84)------------------------------------Projection: date_dim.d_date_sk, date_dim.d_date +85)--------------------------------------Filter: date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)]) +86)----------------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_year], partial_filters=[date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)])] +87)--------------------------------SubqueryAlias: sq1 +88)----------------------------------Projection: substr(item.i_item_desc, Int64(1), Int64(30)) AS itemdesc, item.i_item_sk +89)------------------------------------TableScan: item projection=[i_item_sk, i_item_desc] +90)--------------SubqueryAlias: best_ss_customer +91)----------------Projection: customer.c_customer_sk +92)------------------Filter: CAST(sum(store_sales.ss_quantity * store_sales.ss_sales_price) AS Decimal128(38, 15)) > CAST(Float64(0.5) * CAST(max(max_store_sales.tpcds_cmax) AS Float64) AS Decimal128(38, 15)) +93)--------------------Aggregate: groupBy=[[customer.c_customer_sk]], aggr=[[sum(CAST(store_sales.ss_quantity AS Decimal128(20, 0)) * store_sales.ss_sales_price), max(max_store_sales.tpcds_cmax)]] +94)----------------------Cross Join: +95)------------------------Projection: store_sales.ss_quantity, store_sales.ss_sales_price, customer.c_customer_sk +96)--------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +97)----------------------------TableScan: store_sales projection=[ss_customer_sk, ss_quantity, ss_sales_price] +98)----------------------------TableScan: customer projection=[c_customer_sk] +99)------------------------SubqueryAlias: max_store_sales +100)--------------------------Projection: max(sq2.csales) AS tpcds_cmax +101)----------------------------Aggregate: groupBy=[[]], aggr=[[max(sq2.csales)]] +102)------------------------------SubqueryAlias: sq2 +103)--------------------------------Projection: sum(store_sales.ss_quantity * store_sales.ss_sales_price) AS csales +104)----------------------------------Aggregate: groupBy=[[customer.c_customer_sk]], aggr=[[sum(CAST(store_sales.ss_quantity AS Decimal128(20, 0)) * store_sales.ss_sales_price)]] +105)------------------------------------Projection: store_sales.ss_quantity, store_sales.ss_sales_price, customer.c_customer_sk +106)--------------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +107)----------------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_quantity, store_sales.ss_sales_price, customer.c_customer_sk +108)------------------------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +109)--------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_quantity, ss_sales_price] +110)--------------------------------------------TableScan: customer projection=[c_customer_sk] +111)----------------------------------------Projection: date_dim.d_date_sk +112)------------------------------------------Filter: date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)]) +113)--------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year IN ([Int64(2000), Int64(2001), Int64(2002), Int64(2003)])] +physical_plan +01)SortPreservingMergeExec: [c_last_name@0 ASC, c_first_name@1 ASC, sales@2 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_last_name@0 ASC, c_first_name@1 ASC, sales@2 ASC], preserve_partitioning=[true] +03)----InterleaveExec +04)------ProjectionExec: expr=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price)@2 as sales] +05)--------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name], aggr=[sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price)] +06)----------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1], 4), input_partitions=4 +07)------------AggregateExec: mode=Partial, gby=[c_last_name@3 as c_last_name, c_first_name@2 as c_first_name], aggr=[sum(catalog_sales.cs_quantity * catalog_sales.cs_list_price)] +08)--------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(c_customer_sk@0, cs_bill_customer_sk@0)], projection=[cs_quantity@1, cs_list_price@2, c_first_name@3, c_last_name@4] +09)----------------CoalescePartitionsExec +10)------------------FilterExec: CAST(sum(store_sales.ss_quantity * store_sales.ss_sales_price)@1 AS Decimal128(38, 15)) > CAST(0.5 * CAST(max(max_store_sales.tpcds_cmax)@2 AS Float64) AS Decimal128(38, 15)), projection=[c_customer_sk@0] +11)--------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_sk@0 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price), max(max_store_sales.tpcds_cmax)] +12)----------------------RepartitionExec: partitioning=Hash([c_customer_sk@0], 4), input_partitions=4 +13)------------------------AggregateExec: mode=Partial, gby=[c_customer_sk@2 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price), max(max_store_sales.tpcds_cmax)] +14)--------------------------ProjectionExec: expr=[ss_quantity@1 as ss_quantity, ss_sales_price@2 as ss_sales_price, c_customer_sk@3 as c_customer_sk, tpcds_cmax@0 as tpcds_cmax] +15)----------------------------CrossJoinExec +16)------------------------------ProjectionExec: expr=[max(sq2.csales)@0 as tpcds_cmax] +17)--------------------------------AggregateExec: mode=Final, gby=[], aggr=[max(sq2.csales)] +18)----------------------------------CoalescePartitionsExec +19)------------------------------------AggregateExec: mode=Partial, gby=[], aggr=[max(sq2.csales)] +20)--------------------------------------ProjectionExec: expr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price)@1 as csales] +21)----------------------------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_sk@0 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price)] +22)------------------------------------------RepartitionExec: partitioning=Hash([c_customer_sk@0], 4), input_partitions=4 +23)--------------------------------------------AggregateExec: mode=Partial, gby=[c_customer_sk@2 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price)] +24)----------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_quantity@2, ss_sales_price@3, c_customer_sk@4] +25)------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 IN (SET) ([2000, 2001, 2002, 2003]) +26)------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[ss_sold_date_sk@1, ss_quantity@3, ss_sales_price@4, c_customer_sk@0] +27)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk], file_type=vortex +28)--------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_quantity, ss_sales_price], file_type=vortex +29)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@0)], projection=[ss_quantity@2, ss_sales_price@3, c_customer_sk@0] +30)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk], file_type=vortex +31)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_customer_sk, ss_quantity, ss_sales_price], file_type=vortex +32)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_item_sk@1, item_sk@0)], projection=[cs_bill_customer_sk@0, cs_quantity@2, cs_list_price@3, c_first_name@4, c_last_name@5] +33)------------------CoalescePartitionsExec +34)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_customer_sk@2, cs_item_sk@3, cs_quantity@4, cs_list_price@5, c_first_name@6, c_last_name@7] +35)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 AND d_moy@8 = 2 +36)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@1)], projection=[cs_sold_date_sk@3, cs_bill_customer_sk@4, cs_item_sk@5, cs_quantity@6, cs_list_price@7, c_first_name@1, c_last_name@2] +37)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +38)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_quantity, cs_list_price], file_type=vortex +39)------------------ProjectionExec: expr=[i_item_sk@0 as item_sk] +40)--------------------FilterExec: count(Int64(1))@1 > 4, projection=[i_item_sk@0] +41)----------------------ProjectionExec: expr=[i_item_sk@1 as i_item_sk, count(Int64(1))@3 as count(Int64(1))] +42)------------------------AggregateExec: mode=FinalPartitioned, gby=[itemdesc@0 as itemdesc, i_item_sk@1 as i_item_sk, d_date@2 as d_date], aggr=[count(Int64(1))] +43)--------------------------RepartitionExec: partitioning=Hash([itemdesc@0, i_item_sk@1, d_date@2], 4), input_partitions=4 +44)----------------------------AggregateExec: mode=Partial, gby=[itemdesc@1 as itemdesc, i_item_sk@2 as i_item_sk, d_date@0 as d_date], aggr=[count(Int64(1))] +45)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@1, ss_item_sk@0)], projection=[d_date@3, itemdesc@0, i_item_sk@1] +46)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[substr(i_item_desc@4, 1, 30) as itemdesc, i_item_sk], file_type=vortex +47)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, d_date@1] +48)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_year@6 IN (SET) ([2000, 2001, 2002, 2003]) +49)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk], file_type=vortex +50)------ProjectionExec: expr=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, sum(web_sales.ws_quantity * web_sales.ws_list_price)@2 as sales] +51)--------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name], aggr=[sum(web_sales.ws_quantity * web_sales.ws_list_price)] +52)----------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1], 4), input_partitions=4 +53)------------AggregateExec: mode=Partial, gby=[c_last_name@3 as c_last_name, c_first_name@2 as c_first_name], aggr=[sum(web_sales.ws_quantity * web_sales.ws_list_price)] +54)--------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(c_customer_sk@0, ws_bill_customer_sk@0)], projection=[ws_quantity@1, ws_list_price@2, c_first_name@3, c_last_name@4] +55)----------------CoalescePartitionsExec +56)------------------FilterExec: CAST(sum(store_sales.ss_quantity * store_sales.ss_sales_price)@1 AS Decimal128(38, 15)) > CAST(0.5 * CAST(max(max_store_sales.tpcds_cmax)@2 AS Float64) AS Decimal128(38, 15)), projection=[c_customer_sk@0] +57)--------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_sk@0 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price), max(max_store_sales.tpcds_cmax)] +58)----------------------RepartitionExec: partitioning=Hash([c_customer_sk@0], 4), input_partitions=4 +59)------------------------AggregateExec: mode=Partial, gby=[c_customer_sk@2 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price), max(max_store_sales.tpcds_cmax)] +60)--------------------------ProjectionExec: expr=[ss_quantity@1 as ss_quantity, ss_sales_price@2 as ss_sales_price, c_customer_sk@3 as c_customer_sk, tpcds_cmax@0 as tpcds_cmax] +61)----------------------------CrossJoinExec +62)------------------------------ProjectionExec: expr=[max(sq2.csales)@0 as tpcds_cmax] +63)--------------------------------AggregateExec: mode=Final, gby=[], aggr=[max(sq2.csales)] +64)----------------------------------CoalescePartitionsExec +65)------------------------------------AggregateExec: mode=Partial, gby=[], aggr=[max(sq2.csales)] +66)--------------------------------------ProjectionExec: expr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price)@1 as csales] +67)----------------------------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_sk@0 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price)] +68)------------------------------------------RepartitionExec: partitioning=Hash([c_customer_sk@0], 4), input_partitions=4 +69)--------------------------------------------AggregateExec: mode=Partial, gby=[c_customer_sk@2 as c_customer_sk], aggr=[sum(store_sales.ss_quantity * store_sales.ss_sales_price)] +70)----------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_quantity@2, ss_sales_price@3, c_customer_sk@4] +71)------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 IN (SET) ([2000, 2001, 2002, 2003]) +72)------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[ss_sold_date_sk@1, ss_quantity@3, ss_sales_price@4, c_customer_sk@0] +73)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk], file_type=vortex +74)--------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_quantity, ss_sales_price], file_type=vortex +75)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@0)], projection=[ss_quantity@2, ss_sales_price@3, c_customer_sk@0] +76)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk], file_type=vortex +77)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_customer_sk, ss_quantity, ss_sales_price], file_type=vortex +78)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_item_sk@0, item_sk@0)], projection=[ws_bill_customer_sk@1, ws_quantity@2, ws_list_price@3, c_first_name@4, c_last_name@5] +79)------------------CoalescePartitionsExec +80)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_bill_customer_sk@3, ws_quantity@4, ws_list_price@5, c_first_name@6, c_last_name@7] +81)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 AND d_moy@8 = 2 +82)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@2)], projection=[ws_sold_date_sk@3, ws_item_sk@4, ws_bill_customer_sk@5, ws_quantity@6, ws_list_price@7, c_first_name@1, c_last_name@2] +83)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +84)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk, ws_quantity, ws_list_price], file_type=vortex +85)------------------ProjectionExec: expr=[i_item_sk@0 as item_sk] +86)--------------------FilterExec: count(Int64(1))@1 > 4, projection=[i_item_sk@0] +87)----------------------ProjectionExec: expr=[i_item_sk@1 as i_item_sk, count(Int64(1))@3 as count(Int64(1))] +88)------------------------AggregateExec: mode=FinalPartitioned, gby=[itemdesc@0 as itemdesc, i_item_sk@1 as i_item_sk, d_date@2 as d_date], aggr=[count(Int64(1))] +89)--------------------------RepartitionExec: partitioning=Hash([itemdesc@0, i_item_sk@1, d_date@2], 4), input_partitions=4 +90)----------------------------AggregateExec: mode=Partial, gby=[itemdesc@1 as itemdesc, i_item_sk@2 as i_item_sk, d_date@0 as d_date], aggr=[count(Int64(1))] +91)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@1, ss_item_sk@0)], projection=[d_date@3, itemdesc@0, i_item_sk@1] +92)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[substr(i_item_desc@4, 1, 30) as itemdesc, i_item_sk], file_type=vortex +93)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, d_date@1] +94)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_year@6 IN (SET) ([2000, 2001, 2002, 2003]) +95)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q24.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q24.slt.no new file mode 100644 index 00000000000..c2738d9a57d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q24.slt.no @@ -0,0 +1,164 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ssales AS + (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_country <> upper(ca_country) + AND s_zip = ca_zip + AND s_market_id=8 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'peach' +GROUP BY c_last_name, + c_first_name, + s_store_name +HAVING sum(netpaid) > + (SELECT 0.05*avg(netpaid) + FROM ssales) +ORDER BY c_last_name, + c_first_name, + s_store_name ; +---- +logical_plan +01)Sort: ssales.c_last_name ASC NULLS LAST, ssales.c_first_name ASC NULLS LAST, ssales.s_store_name ASC NULLS LAST +02)--Projection: ssales.c_last_name, ssales.c_first_name, ssales.s_store_name, sum(ssales.netpaid) AS paid +03)----Filter: CAST(sum(ssales.netpaid) AS Decimal128(38, 15)) > () +04)------Subquery: +05)--------Projection: CAST(Float64(0.05) * CAST(avg(ssales.netpaid) AS Float64) AS Decimal128(38, 15)) +06)----------Aggregate: groupBy=[[]], aggr=[[avg(ssales.netpaid)]] +07)------------SubqueryAlias: ssales +08)--------------Projection: sum(store_sales.ss_net_paid) AS netpaid +09)----------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, store.s_store_name, customer_address.ca_state, store.s_state, item.i_color, item.i_current_price, item.i_manager_id, item.i_units, item.i_size]], aggr=[[sum(store_sales.ss_net_paid)]] +10)------------------Projection: store_sales.ss_net_paid, store.s_store_name, store.s_state, item.i_current_price, item.i_size, item.i_color, item.i_units, item.i_manager_id, customer.c_first_name, customer.c_last_name, customer_address.ca_state +11)--------------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk, store.s_zip = customer_address.ca_zip Filter: customer.c_birth_country != upper(customer_address.ca_country) +12)----------------------Projection: store_sales.ss_net_paid, store.s_store_name, store.s_state, store.s_zip, item.i_current_price, item.i_size, item.i_color, item.i_units, item.i_manager_id, customer.c_current_addr_sk, customer.c_first_name, customer.c_last_name, customer.c_birth_country +13)------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +14)--------------------------Projection: store_sales.ss_customer_sk, store_sales.ss_net_paid, store.s_store_name, store.s_state, store.s_zip, item.i_current_price, item.i_size, item.i_color, item.i_units, item.i_manager_id +15)----------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +16)------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_net_paid, store.s_store_name, store.s_state, store.s_zip +17)--------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +18)----------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_store_sk, store_sales.ss_net_paid +19)------------------------------------Inner Join: store_sales.ss_ticket_number = store_returns.sr_ticket_number, store_sales.ss_item_sk = store_returns.sr_item_sk +20)--------------------------------------TableScan: store_sales projection=[ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_net_paid] +21)--------------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number] +22)----------------------------------Projection: store.s_store_sk, store.s_store_name, store.s_state, store.s_zip +23)------------------------------------Filter: store.s_market_id = Int64(8) +24)--------------------------------------TableScan: store projection=[s_store_sk, s_store_name, s_market_id, s_state, s_zip], partial_filters=[store.s_market_id = Int64(8)] +25)------------------------------TableScan: item projection=[i_item_sk, i_current_price, i_size, i_color, i_units, i_manager_id] +26)--------------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name, c_birth_country] +27)----------------------TableScan: customer_address projection=[ca_address_sk, ca_state, ca_zip, ca_country] +28)------Aggregate: groupBy=[[ssales.c_last_name, ssales.c_first_name, ssales.s_store_name]], aggr=[[sum(ssales.netpaid)]] +29)--------SubqueryAlias: ssales +30)----------Projection: customer.c_last_name, customer.c_first_name, store.s_store_name, sum(store_sales.ss_net_paid) AS netpaid +31)------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, store.s_store_name, customer_address.ca_state, store.s_state, item.i_color, item.i_current_price, item.i_manager_id, item.i_units, item.i_size]], aggr=[[sum(store_sales.ss_net_paid)]] +32)--------------Projection: store_sales.ss_net_paid, store.s_store_name, store.s_state, item.i_current_price, item.i_size, item.i_color, item.i_units, item.i_manager_id, customer.c_first_name, customer.c_last_name, customer_address.ca_state +33)----------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk, store.s_zip = customer_address.ca_zip Filter: customer.c_birth_country != upper(customer_address.ca_country) +34)------------------Projection: store_sales.ss_net_paid, store.s_store_name, store.s_state, store.s_zip, item.i_current_price, item.i_size, item.i_color, item.i_units, item.i_manager_id, customer.c_current_addr_sk, customer.c_first_name, customer.c_last_name, customer.c_birth_country +35)--------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +36)----------------------Projection: store_sales.ss_customer_sk, store_sales.ss_net_paid, store.s_store_name, store.s_state, store.s_zip, item.i_current_price, item.i_size, item.i_color, item.i_units, item.i_manager_id +37)------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +38)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_net_paid, store.s_store_name, store.s_state, store.s_zip +39)----------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +40)------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_store_sk, store_sales.ss_net_paid +41)--------------------------------Inner Join: store_sales.ss_ticket_number = store_returns.sr_ticket_number, store_sales.ss_item_sk = store_returns.sr_item_sk +42)----------------------------------TableScan: store_sales projection=[ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_net_paid] +43)----------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number] +44)------------------------------Projection: store.s_store_sk, store.s_store_name, store.s_state, store.s_zip +45)--------------------------------Filter: store.s_market_id = Int64(8) +46)----------------------------------TableScan: store projection=[s_store_sk, s_store_name, s_market_id, s_state, s_zip], partial_filters=[store.s_market_id = Int64(8)] +47)--------------------------Filter: item.i_color = Utf8View("peach") +48)----------------------------TableScan: item projection=[i_item_sk, i_current_price, i_size, i_color, i_units, i_manager_id], partial_filters=[item.i_color = Utf8View("peach")] +49)----------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name, c_birth_country] +50)------------------TableScan: customer_address projection=[ca_address_sk, ca_state, ca_zip, ca_country] +physical_plan +01)ScalarSubqueryExec: subqueries=1 +02)--SortPreservingMergeExec: [c_last_name@0 ASC NULLS LAST, c_first_name@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST] +03)----ProjectionExec: expr=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, s_store_name@2 as s_store_name, sum(ssales.netpaid)@3 as paid] +04)------SortExec: expr=[c_last_name@0 ASC NULLS LAST, c_first_name@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST], preserve_partitioning=[true] +05)--------FilterExec: CAST(sum(ssales.netpaid)@3 AS Decimal128(38, 15)) > scalar_subquery() +06)----------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, s_store_name@2 as s_store_name], aggr=[sum(ssales.netpaid)] +07)------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, s_store_name@2], 4), input_partitions=4 +08)--------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, s_store_name@2 as s_store_name], aggr=[sum(ssales.netpaid)] +09)----------------ProjectionExec: expr=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, s_store_name@2 as s_store_name, sum(store_sales.ss_net_paid)@10 as netpaid] +10)------------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, s_store_name@2 as s_store_name, ca_state@3 as ca_state, s_state@4 as s_state, i_color@5 as i_color, i_current_price@6 as i_current_price, i_manager_id@7 as i_manager_id, i_units@8 as i_units, i_size@9 as i_size], aggr=[sum(store_sales.ss_net_paid)], ordering_mode=PartiallySorted([5]) +11)--------------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, s_store_name@2, ca_state@3, s_state@4, i_color@5, i_current_price@6, i_manager_id@7, i_units@8, i_size@9], 4), input_partitions=4 +12)----------------------AggregateExec: mode=Partial, gby=[c_last_name@9 as c_last_name, c_first_name@8 as c_first_name, s_store_name@1 as s_store_name, ca_state@10 as ca_state, s_state@2 as s_state, i_color@5 as i_color, i_current_price@3 as i_current_price, i_manager_id@7 as i_manager_id, i_units@6 as i_units, i_size@4 as i_size], aggr=[sum(store_sales.ss_net_paid)], ordering_mode=PartiallySorted([5]) +13)------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_addr_sk@9, ca_address_sk@0), (s_zip@3, ca_zip@2)], filter=c_birth_country@0 != upper(ca_country@1), projection=[ss_net_paid@0, s_store_name@1, s_state@2, i_current_price@4, i_size@5, i_color@6, i_units@7, i_manager_id@8, c_first_name@10, c_last_name@11, ca_state@14] +15)----------------------------CoalescePartitionsExec +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_customer_sk@0, c_customer_sk@0)], projection=[ss_net_paid@1, s_store_name@2, s_state@3, s_zip@4, i_current_price@5, i_size@6, i_color@7, i_units@8, i_manager_id@9, c_current_addr_sk@11, c_first_name@12, c_last_name@13, c_birth_country@14] +17)--------------------------------CoalescePartitionsExec +18)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_item_sk@0, i_item_sk@0)], projection=[ss_customer_sk@1, ss_net_paid@2, s_store_name@3, s_state@4, s_zip@5, i_current_price@7, i_size@8, i_color@9, i_units@10, i_manager_id@11] +19)------------------------------------CoalescePartitionsExec +20)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[ss_item_sk@4, ss_customer_sk@5, ss_net_paid@7, s_store_name@1, s_state@2, s_zip@3] +21)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_state, s_zip], file_type=vortex, predicate: s_market_id@10 = 8 +22)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_ticket_number@1, ss_ticket_number@3), (sr_item_sk@0, ss_item_sk@0)], projection=[ss_item_sk@2, ss_customer_sk@3, ss_store_sk@4, ss_net_paid@6] +23)------------------------------------------CoalescePartitionsExec +24)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number], file_type=vortex +25)------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_net_paid], file_type=vortex +26)------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +27)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_current_price, i_size, i_color, i_units, i_manager_id], file_type=vortex, predicate: i_color@17 = peach +28)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +29)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name, c_birth_country], file_type=vortex +30)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state, ca_zip, ca_country], file_type=vortex +31)--ProjectionExec: expr=[CAST(0.05 * CAST(avg(ssales.netpaid)@0 AS Float64) AS Decimal128(38, 15)) as Float64(0.05) * avg(ssales.netpaid)] +32)----AggregateExec: mode=Final, gby=[], aggr=[avg(ssales.netpaid)] +33)------CoalescePartitionsExec +34)--------AggregateExec: mode=Partial, gby=[], aggr=[avg(ssales.netpaid)] +35)----------ProjectionExec: expr=[sum(store_sales.ss_net_paid)@10 as netpaid] +36)------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, s_store_name@2 as s_store_name, ca_state@3 as ca_state, s_state@4 as s_state, i_color@5 as i_color, i_current_price@6 as i_current_price, i_manager_id@7 as i_manager_id, i_units@8 as i_units, i_size@9 as i_size], aggr=[sum(store_sales.ss_net_paid)] +37)--------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, s_store_name@2, ca_state@3, s_state@4, i_color@5, i_current_price@6, i_manager_id@7, i_units@8, i_size@9], 4), input_partitions=4 +38)----------------AggregateExec: mode=Partial, gby=[c_last_name@9 as c_last_name, c_first_name@8 as c_first_name, s_store_name@1 as s_store_name, ca_state@10 as ca_state, s_state@2 as s_state, i_color@5 as i_color, i_current_price@3 as i_current_price, i_manager_id@7 as i_manager_id, i_units@6 as i_units, i_size@4 as i_size], aggr=[sum(store_sales.ss_net_paid)] +39)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +40)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_addr_sk@9, ca_address_sk@0), (s_zip@3, ca_zip@2)], filter=c_birth_country@0 != upper(ca_country@1), projection=[ss_net_paid@0, s_store_name@1, s_state@2, i_current_price@4, i_size@5, i_color@6, i_units@7, i_manager_id@8, c_first_name@10, c_last_name@11, ca_state@14] +41)----------------------CoalescePartitionsExec +42)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_customer_sk@0, c_customer_sk@0)], projection=[ss_net_paid@1, s_store_name@2, s_state@3, s_zip@4, i_current_price@5, i_size@6, i_color@7, i_units@8, i_manager_id@9, c_current_addr_sk@11, c_first_name@12, c_last_name@13, c_birth_country@14] +43)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_item_sk@0, i_item_sk@0)], projection=[ss_customer_sk@1, ss_net_paid@2, s_store_name@3, s_state@4, s_zip@5, i_current_price@7, i_size@8, i_color@9, i_units@10, i_manager_id@11] +44)----------------------------CoalescePartitionsExec +45)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[ss_item_sk@4, ss_customer_sk@5, ss_net_paid@7, s_store_name@1, s_state@2, s_zip@3] +46)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_state, s_zip], file_type=vortex, predicate: s_market_id@10 = 8 +47)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_ticket_number@1, ss_ticket_number@3), (sr_item_sk@0, ss_item_sk@0)], projection=[ss_item_sk@2, ss_customer_sk@3, ss_store_sk@4, ss_net_paid@6] +48)----------------------------------CoalescePartitionsExec +49)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number], file_type=vortex +50)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_net_paid], file_type=vortex +51)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_current_price, i_size, i_color, i_units, i_manager_id], file_type=vortex +52)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +53)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name, c_birth_country], file_type=vortex +54)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state, ca_zip, ca_country], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q25.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q25.slt.no new file mode 100644 index 00000000000..c9632f922ff --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q25.slt.no @@ -0,0 +1,109 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id , + i_item_desc , + s_store_id , + s_store_name , + sum(ss_net_profit) AS store_sales_profit , + sum(sr_net_loss) AS store_returns_loss , + sum(cs_net_profit) AS catalog_sales_profit +FROM store_sales , + store_returns , + catalog_sales , + date_dim d1 , + date_dim d2 , + date_dim d3 , + store , + item +WHERE d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +ORDER BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS LAST, item.i_item_desc ASC NULLS LAST, store.s_store_id ASC NULLS LAST, store.s_store_name ASC NULLS LAST, fetch=100 +02)--Projection: item.i_item_id, item.i_item_desc, store.s_store_id, store.s_store_name, sum(store_sales.ss_net_profit) AS store_sales_profit, sum(store_returns.sr_net_loss) AS store_returns_loss, sum(catalog_sales.cs_net_profit) AS catalog_sales_profit +03)----Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, store.s_store_id, store.s_store_name]], aggr=[[sum(store_sales.ss_net_profit), sum(store_returns.sr_net_loss), sum(catalog_sales.cs_net_profit)]] +04)------Projection: store_sales.ss_net_profit, store_returns.sr_net_loss, catalog_sales.cs_net_profit, store.s_store_id, store.s_store_name, item.i_item_id, item.i_item_desc +05)--------Inner Join: store_sales.ss_item_sk = item.i_item_sk +06)----------Projection: store_sales.ss_item_sk, store_sales.ss_net_profit, store_returns.sr_net_loss, catalog_sales.cs_net_profit, store.s_store_id, store.s_store_name +07)------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +08)--------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_net_profit, store_returns.sr_net_loss, catalog_sales.cs_net_profit +09)----------------Inner Join: catalog_sales.cs_sold_date_sk = d3.d_date_sk +10)------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_net_profit, store_returns.sr_net_loss, catalog_sales.cs_sold_date_sk, catalog_sales.cs_net_profit +11)--------------------Inner Join: store_returns.sr_returned_date_sk = d2.d_date_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_net_profit, store_returns.sr_returned_date_sk, store_returns.sr_net_loss, catalog_sales.cs_sold_date_sk, catalog_sales.cs_net_profit +13)------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +14)--------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_net_profit, store_returns.sr_returned_date_sk, store_returns.sr_net_loss, catalog_sales.cs_sold_date_sk, catalog_sales.cs_net_profit +15)----------------------------Inner Join: store_returns.sr_customer_sk = catalog_sales.cs_bill_customer_sk, store_returns.sr_item_sk = catalog_sales.cs_item_sk +16)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_net_profit, store_returns.sr_returned_date_sk, store_returns.sr_item_sk, store_returns.sr_customer_sk, store_returns.sr_net_loss +17)--------------------------------Inner Join: store_sales.ss_customer_sk = store_returns.sr_customer_sk, store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +18)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_net_profit] +19)----------------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number, sr_net_loss] +20)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_net_profit] +21)--------------------------SubqueryAlias: d1 +22)----------------------------Projection: date_dim.d_date_sk +23)------------------------------Filter: date_dim.d_moy = Int64(4) AND date_dim.d_year = Int64(2001) +24)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(4), date_dim.d_year = Int64(2001)] +25)----------------------SubqueryAlias: d2 +26)------------------------Projection: date_dim.d_date_sk +27)--------------------------Filter: date_dim.d_moy >= Int64(4) AND date_dim.d_moy <= Int64(10) AND date_dim.d_year = Int64(2001) +28)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy >= Int64(4), date_dim.d_moy <= Int64(10), date_dim.d_year = Int64(2001)] +29)------------------SubqueryAlias: d3 +30)--------------------Projection: date_dim.d_date_sk +31)----------------------Filter: date_dim.d_moy >= Int64(4) AND date_dim.d_moy <= Int64(10) AND date_dim.d_year = Int64(2001) +32)------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy >= Int64(4), date_dim.d_moy <= Int64(10), date_dim.d_year = Int64(2001)] +33)--------------TableScan: store projection=[s_store_sk, s_store_id, s_store_name] +34)----------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST, i_item_desc@1 ASC NULLS LAST, s_store_id@2 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, s_store_id@2 as s_store_id, s_store_name@3 as s_store_name, sum(store_sales.ss_net_profit)@4 as store_sales_profit, sum(store_returns.sr_net_loss)@5 as store_returns_loss, sum(catalog_sales.cs_net_profit)@6 as catalog_sales_profit] +03)----SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST, i_item_desc@1 ASC NULLS LAST, s_store_id@2 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, s_store_id@2 as s_store_id, s_store_name@3 as s_store_name], aggr=[sum(store_sales.ss_net_profit), sum(store_returns.sr_net_loss), sum(catalog_sales.cs_net_profit)] +05)--------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, s_store_id@2, s_store_name@3], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_item_id@5 as i_item_id, i_item_desc@6 as i_item_desc, s_store_id@3 as s_store_id, s_store_name@4 as s_store_name], aggr=[sum(store_sales.ss_net_profit), sum(store_returns.sr_net_loss), sum(catalog_sales.cs_net_profit)] +07)------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_item_sk@0, i_item_sk@0)], projection=[ss_net_profit@1, sr_net_loss@2, cs_net_profit@3, s_store_id@4, s_store_name@5, i_item_id@7, i_item_desc@8] +09)----------------CoalescePartitionsExec +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@3, ss_net_profit@5, sr_net_loss@6, cs_net_profit@7, s_store_id@1, s_store_name@2] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id, s_store_name], file_type=vortex +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@4)], projection=[ss_item_sk@1, ss_store_sk@2, ss_net_profit@3, sr_net_loss@4, cs_net_profit@6] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 >= 4 AND d_moy@8 <= 10 AND d_year@6 = 2001 +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@3)], projection=[ss_item_sk@1, ss_store_sk@2, ss_net_profit@3, sr_net_loss@5, cs_sold_date_sk@6, cs_net_profit@7] +15)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 >= 4 AND d_moy@8 <= 10 AND d_year@6 = 2001 +16)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_net_profit@4, sr_returned_date_sk@5, sr_net_loss@6, cs_sold_date_sk@7, cs_net_profit@8] +17)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 4 AND d_year@6 = 2001 +18)--------------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(cs_bill_customer_sk@1, sr_customer_sk@6), (cs_item_sk@2, sr_item_sk@5)], projection=[ss_sold_date_sk@4, ss_item_sk@5, ss_store_sk@6, ss_net_profit@7, sr_returned_date_sk@8, sr_net_loss@11, cs_sold_date_sk@0, cs_net_profit@3] +19)----------------------------RepartitionExec: partitioning=Hash([cs_bill_customer_sk@1, cs_item_sk@2], 4), input_partitions=4 +20)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_net_profit], file_type=vortex +21)----------------------------RepartitionExec: partitioning=Hash([sr_customer_sk@6, sr_item_sk@5], 4), input_partitions=4 +22)------------------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(sr_customer_sk@2, ss_customer_sk@2), (sr_item_sk@1, ss_item_sk@1), (sr_ticket_number@3, ss_ticket_number@4)], projection=[ss_sold_date_sk@5, ss_item_sk@6, ss_store_sk@8, ss_net_profit@10, sr_returned_date_sk@0, sr_item_sk@1, sr_customer_sk@2, sr_net_loss@4] +23)--------------------------------RepartitionExec: partitioning=Hash([sr_customer_sk@2, sr_item_sk@1, sr_ticket_number@3], 4), input_partitions=4 +24)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number, sr_net_loss], file_type=vortex +25)--------------------------------RepartitionExec: partitioning=Hash([ss_customer_sk@2, ss_item_sk@1, ss_ticket_number@4], 4), input_partitions=4 +26)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_net_profit], file_type=vortex +27)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q26.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q26.slt.no new file mode 100644 index 00000000000..9f152c4410b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q26.slt.no @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + avg(cs_quantity) agg1, + avg(cs_list_price) agg2, + avg(cs_coupon_amt) agg3, + avg(cs_sales_price) agg4 +FROM catalog_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS LAST, fetch=100 +02)--Projection: item.i_item_id, avg(catalog_sales.cs_quantity) AS agg1, avg(catalog_sales.cs_list_price) AS agg2, avg(catalog_sales.cs_coupon_amt) AS agg3, avg(catalog_sales.cs_sales_price) AS agg4 +03)----Aggregate: groupBy=[[item.i_item_id]], aggr=[[avg(CAST(catalog_sales.cs_quantity AS Float64)), avg(catalog_sales.cs_list_price), avg(catalog_sales.cs_coupon_amt), avg(catalog_sales.cs_sales_price)]] +04)------Projection: catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, item.i_item_id +05)--------Inner Join: catalog_sales.cs_promo_sk = promotion.p_promo_sk +06)----------Projection: catalog_sales.cs_promo_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt, item.i_item_id +07)------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +08)--------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt +09)----------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +10)------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_quantity, catalog_sales.cs_list_price, catalog_sales.cs_sales_price, catalog_sales.cs_coupon_amt +11)--------------------Inner Join: catalog_sales.cs_bill_cdemo_sk = customer_demographics.cd_demo_sk +12)----------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_cdemo_sk, cs_item_sk, cs_promo_sk, cs_quantity, cs_list_price, cs_sales_price, cs_coupon_amt] +13)----------------------Projection: customer_demographics.cd_demo_sk +14)------------------------Filter: customer_demographics.cd_gender = Utf8View("M") AND customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") +15)--------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_gender = Utf8View("M"), customer_demographics.cd_marital_status = Utf8View("S"), customer_demographics.cd_education_status = Utf8View("College")] +16)------------------Projection: date_dim.d_date_sk +17)--------------------Filter: date_dim.d_year = Int64(2000) +18)----------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +19)--------------TableScan: item projection=[i_item_sk, i_item_id] +20)----------Projection: promotion.p_promo_sk +21)------------Filter: promotion.p_channel_email = Utf8View("N") OR promotion.p_channel_event = Utf8View("N") +22)--------------TableScan: promotion projection=[p_promo_sk, p_channel_email, p_channel_event], partial_filters=[promotion.p_channel_email = Utf8View("N") OR promotion.p_channel_event = Utf8View("N")] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_item_id@0 as i_item_id, avg(catalog_sales.cs_quantity)@1 as agg1, avg(catalog_sales.cs_list_price)@2 as agg2, avg(catalog_sales.cs_coupon_amt)@3 as agg3, avg(catalog_sales.cs_sales_price)@4 as agg4] +03)----SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[avg(catalog_sales.cs_quantity), avg(catalog_sales.cs_list_price), avg(catalog_sales.cs_coupon_amt), avg(catalog_sales.cs_sales_price)] +05)--------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_item_id@4 as i_item_id], aggr=[avg(catalog_sales.cs_quantity), avg(catalog_sales.cs_list_price), avg(catalog_sales.cs_coupon_amt), avg(catalog_sales.cs_sales_price)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, cs_promo_sk@0)], projection=[cs_quantity@2, cs_list_price@3, cs_sales_price@4, cs_coupon_amt@5, i_item_id@6] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex, predicate: p_channel_email@9 = N OR p_channel_event@14 = N +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@0)], projection=[cs_promo_sk@3, cs_quantity@4, cs_list_price@5, cs_sales_price@6, cs_coupon_amt@7, i_item_id@1] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_item_sk@2, cs_promo_sk@3, cs_quantity@4, cs_list_price@5, cs_sales_price@6, cs_coupon_amt@7] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, cs_bill_cdemo_sk@1)], projection=[cs_sold_date_sk@1, cs_item_sk@3, cs_promo_sk@4, cs_quantity@5, cs_list_price@6, cs_sales_price@7, cs_coupon_amt@8] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex, predicate: cd_gender@1 = M AND cd_marital_status@2 = S AND cd_education_status@3 = College +15)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_cdemo_sk, cs_item_sk, cs_promo_sk, cs_quantity, cs_list_price, cs_sales_price, cs_coupon_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q27.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q27.slt.no new file mode 100644 index 00000000000..182b9886de8 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q27.slt.no @@ -0,0 +1,181 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH results AS + (SELECT i_item_id, + s_state, + 0 AS g_state, + ss_quantity agg1, + ss_list_price agg2, + ss_coupon_amt agg3, + ss_sales_price agg4 + FROM store_sales, + customer_demographics, + date_dim, + store, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND d_year = 2002 + AND s_state = 'TN' ) +SELECT i_item_id, + s_state, + g_state, + agg1, + agg2, + agg3, + agg4 +FROM + ( SELECT i_item_id, + s_state, + 0 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id , + s_state + UNION ALL SELECT i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id + UNION ALL SELECT NULL AS i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results ) foo +ORDER BY i_item_id NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: foo.i_item_id ASC NULLS FIRST, foo.s_state ASC NULLS FIRST, fetch=100 +02)--SubqueryAlias: foo +03)----Union +04)------Projection: results.i_item_id, results.s_state, Int64(0) AS g_state, avg(results.agg1) AS agg1, avg(results.agg2) AS agg2, avg(results.agg3) AS agg3, avg(results.agg4) AS agg4 +05)--------Aggregate: groupBy=[[results.i_item_id, results.s_state]], aggr=[[avg(CAST(results.agg1 AS Float64)), avg(results.agg2), avg(results.agg3), avg(results.agg4)]] +06)----------SubqueryAlias: results +07)------------Projection: item.i_item_id, store.s_state, store_sales.ss_quantity AS agg1, store_sales.ss_list_price AS agg2, store_sales.ss_coupon_amt AS agg3, store_sales.ss_sales_price AS agg4 +08)--------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +09)----------------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt, store.s_state +10)------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +11)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +12)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +13)------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +14)--------------------------Inner Join: store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk +15)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_store_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt] +16)----------------------------Projection: customer_demographics.cd_demo_sk +17)------------------------------Filter: customer_demographics.cd_gender = Utf8View("M") AND customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") +18)--------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_gender = Utf8View("M"), customer_demographics.cd_marital_status = Utf8View("S"), customer_demographics.cd_education_status = Utf8View("College")] +19)------------------------Projection: date_dim.d_date_sk +20)--------------------------Filter: date_dim.d_year = Int64(2002) +21)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +22)--------------------Filter: store.s_state = Utf8View("TN") +23)----------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +24)----------------TableScan: item projection=[i_item_sk, i_item_id] +25)------Projection: results.i_item_id, Utf8View(NULL) AS s_state, Int64(1) AS g_state, avg(results.agg1) AS agg1, avg(results.agg2) AS agg2, avg(results.agg3) AS agg3, avg(results.agg4) AS agg4 +26)--------Aggregate: groupBy=[[results.i_item_id]], aggr=[[avg(CAST(results.agg1 AS Float64)), avg(results.agg2), avg(results.agg3), avg(results.agg4)]] +27)----------SubqueryAlias: results +28)------------Projection: item.i_item_id, store_sales.ss_quantity AS agg1, store_sales.ss_list_price AS agg2, store_sales.ss_coupon_amt AS agg3, store_sales.ss_sales_price AS agg4 +29)--------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +30)----------------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +31)------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +32)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +33)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +34)------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +35)--------------------------Inner Join: store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk +36)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_store_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt] +37)----------------------------Projection: customer_demographics.cd_demo_sk +38)------------------------------Filter: customer_demographics.cd_gender = Utf8View("M") AND customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") +39)--------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_gender = Utf8View("M"), customer_demographics.cd_marital_status = Utf8View("S"), customer_demographics.cd_education_status = Utf8View("College")] +40)------------------------Projection: date_dim.d_date_sk +41)--------------------------Filter: date_dim.d_year = Int64(2002) +42)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +43)--------------------Projection: store.s_store_sk +44)----------------------Filter: store.s_state = Utf8View("TN") +45)------------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +46)----------------TableScan: item projection=[i_item_sk, i_item_id] +47)------Projection: Utf8View(NULL) AS i_item_id, Utf8View(NULL) AS s_state, Int64(1) AS g_state, avg(results.agg1) AS agg1, avg(results.agg2) AS agg2, avg(results.agg3) AS agg3, avg(results.agg4) AS agg4 +48)--------Aggregate: groupBy=[[]], aggr=[[avg(CAST(results.agg1 AS Float64)), avg(results.agg2), avg(results.agg3), avg(results.agg4)]] +49)----------SubqueryAlias: results +50)------------Projection: store_sales.ss_quantity AS agg1, store_sales.ss_list_price AS agg2, store_sales.ss_coupon_amt AS agg3, store_sales.ss_sales_price AS agg4 +51)--------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +52)----------------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +53)------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +54)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +55)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +56)------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +57)--------------------------Inner Join: store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk +58)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_store_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt] +59)----------------------------Projection: customer_demographics.cd_demo_sk +60)------------------------------Filter: customer_demographics.cd_gender = Utf8View("M") AND customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") +61)--------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_gender = Utf8View("M"), customer_demographics.cd_marital_status = Utf8View("S"), customer_demographics.cd_education_status = Utf8View("College")] +62)------------------------Projection: date_dim.d_date_sk +63)--------------------------Filter: date_dim.d_year = Int64(2002) +64)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +65)--------------------Projection: store.s_store_sk +66)----------------------Filter: store.s_state = Utf8View("TN") +67)------------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +68)----------------TableScan: item projection=[i_item_sk] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC, s_state@1 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC], preserve_partitioning=[true] +03)----UnionExec +04)------ProjectionExec: expr=[i_item_id@0 as i_item_id, s_state@1 as s_state, 0 as g_state, avg(results.agg1)@2 as agg1, avg(results.agg2)@3 as agg2, avg(results.agg3)@4 as agg3, avg(results.agg4)@5 as agg4] +05)--------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, s_state@1 as s_state], aggr=[avg(results.agg1), avg(results.agg2), avg(results.agg3), avg(results.agg4)], ordering_mode=PartiallySorted([1]) +06)----------RepartitionExec: partitioning=Hash([i_item_id@0, s_state@1], 4), input_partitions=4 +07)------------AggregateExec: mode=Partial, gby=[i_item_id@0 as i_item_id, s_state@1 as s_state], aggr=[avg(results.agg1), avg(results.agg2), avg(results.agg3), avg(results.agg4)], ordering_mode=PartiallySorted([1]) +08)--------------ProjectionExec: expr=[i_item_id@0 as i_item_id, s_state@1 as s_state, ss_quantity@2 as agg1, ss_list_price@3 as agg2, ss_coupon_amt@4 as agg3, ss_sales_price@5 as agg4] +09)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[i_item_id@1, s_state@7, ss_quantity@3, ss_list_price@4, ss_coupon_amt@6, ss_sales_price@5] +10)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +11)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@2, ss_quantity@4, ss_list_price@5, ss_sales_price@6, ss_coupon_amt@7, s_state@1] +12)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_state], file_type=vortex, predicate: s_state@24 = TN +13)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_quantity@4, ss_list_price@5, ss_sales_price@6, ss_coupon_amt@7] +14)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 +15)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, ss_cdemo_sk@2)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_store_sk@4, ss_quantity@5, ss_list_price@6, ss_sales_price@7, ss_coupon_amt@8] +16)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex, predicate: cd_gender@1 = M AND cd_marital_status@2 = S AND cd_education_status@3 = College +17)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_store_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt], file_type=vortex +18)------ProjectionExec: expr=[i_item_id@0 as i_item_id, NULL as s_state, 1 as g_state, avg(results.agg1)@1 as agg1, avg(results.agg2)@2 as agg2, avg(results.agg3)@3 as agg3, avg(results.agg4)@4 as agg4] +19)--------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[avg(results.agg1), avg(results.agg2), avg(results.agg3), avg(results.agg4)] +20)----------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +21)------------AggregateExec: mode=Partial, gby=[i_item_id@0 as i_item_id], aggr=[avg(results.agg1), avg(results.agg2), avg(results.agg3), avg(results.agg4)] +22)--------------ProjectionExec: expr=[i_item_id@0 as i_item_id, ss_quantity@1 as agg1, ss_list_price@2 as agg2, ss_coupon_amt@3 as agg3, ss_sales_price@4 as agg4] +23)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[i_item_id@1, ss_quantity@3, ss_list_price@4, ss_coupon_amt@6, ss_sales_price@5] +24)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +25)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@1, ss_quantity@3, ss_list_price@4, ss_sales_price@5, ss_coupon_amt@6] +26)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_state@24 = TN +27)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_quantity@4, ss_list_price@5, ss_sales_price@6, ss_coupon_amt@7] +28)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 +29)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, ss_cdemo_sk@2)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_store_sk@4, ss_quantity@5, ss_list_price@6, ss_sales_price@7, ss_coupon_amt@8] +30)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex, predicate: cd_gender@1 = M AND cd_marital_status@2 = S AND cd_education_status@3 = College +31)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_store_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt], file_type=vortex +32)------ProjectionExec: expr=[NULL as i_item_id, NULL as s_state, 1 as g_state, avg(results.agg1)@0 as agg1, avg(results.agg2)@1 as agg2, avg(results.agg3)@2 as agg3, avg(results.agg4)@3 as agg4] +33)--------AggregateExec: mode=Final, gby=[], aggr=[avg(results.agg1), avg(results.agg2), avg(results.agg3), avg(results.agg4)] +34)----------CoalescePartitionsExec +35)------------AggregateExec: mode=Partial, gby=[], aggr=[avg(results.agg1), avg(results.agg2), avg(results.agg3), avg(results.agg4)] +36)--------------ProjectionExec: expr=[ss_quantity@0 as agg1, ss_list_price@1 as agg2, ss_coupon_amt@2 as agg3, ss_sales_price@3 as agg4] +37)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_quantity@2, ss_list_price@3, ss_coupon_amt@5, ss_sales_price@4] +38)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex +39)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@1, ss_quantity@3, ss_list_price@4, ss_sales_price@5, ss_coupon_amt@6] +40)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_state@24 = TN +41)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_quantity@4, ss_list_price@5, ss_sales_price@6, ss_coupon_amt@7] +42)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 +43)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, ss_cdemo_sk@2)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_store_sk@4, ss_quantity@5, ss_list_price@6, ss_sales_price@7, ss_coupon_amt@8] +44)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex, predicate: cd_gender@1 = M AND cd_marital_status@2 = S AND cd_education_status@3 = College +45)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_store_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q28.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q28.slt.no new file mode 100644 index 00000000000..545b0525138 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q28.slt.no @@ -0,0 +1,161 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * +FROM + (SELECT avg(ss_list_price) B1_LP, + count(ss_list_price) B1_CNT, + count(DISTINCT ss_list_price) B1_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 0 AND 5 + AND (ss_list_price BETWEEN 8 AND 8+10 + OR ss_coupon_amt BETWEEN 459 AND 459+1000 + OR ss_wholesale_cost BETWEEN 57 AND 57+20)) B1, + (SELECT avg(ss_list_price) B2_LP, + count(ss_list_price) B2_CNT, + count(DISTINCT ss_list_price) B2_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 6 AND 10 + AND (ss_list_price BETWEEN 90 AND 90+10 + OR ss_coupon_amt BETWEEN 2323 AND 2323+1000 + OR ss_wholesale_cost BETWEEN 31 AND 31+20)) B2, + (SELECT avg(ss_list_price) B3_LP, + count(ss_list_price) B3_CNT, + count(DISTINCT ss_list_price) B3_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 11 AND 15 + AND (ss_list_price BETWEEN 142 AND 142+10 + OR ss_coupon_amt BETWEEN 12214 AND 12214+1000 + OR ss_wholesale_cost BETWEEN 79 AND 79+20)) B3, + (SELECT avg(ss_list_price) B4_LP, + count(ss_list_price) B4_CNT, + count(DISTINCT ss_list_price) B4_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 16 AND 20 + AND (ss_list_price BETWEEN 135 AND 135+10 + OR ss_coupon_amt BETWEEN 6071 AND 6071+1000 + OR ss_wholesale_cost BETWEEN 38 AND 38+20)) B4, + (SELECT avg(ss_list_price) B5_LP, + count(ss_list_price) B5_CNT, + count(DISTINCT ss_list_price) B5_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 25 + AND (ss_list_price BETWEEN 122 AND 122+10 + OR ss_coupon_amt BETWEEN 836 AND 836+1000 + OR ss_wholesale_cost BETWEEN 17 AND 17+20)) B5, + (SELECT avg(ss_list_price) B6_LP, + count(ss_list_price) B6_CNT, + count(DISTINCT ss_list_price) B6_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 26 AND 30 + AND (ss_list_price BETWEEN 154 AND 154+10 + OR ss_coupon_amt BETWEEN 7326 AND 7326+1000 + OR ss_wholesale_cost BETWEEN 7 AND 7+20)) B6 +LIMIT 100; +---- +logical_plan +01)Limit: skip=0, fetch=100 +02)--Cross Join: +03)----Limit: skip=0, fetch=100 +04)------Cross Join: +05)--------Limit: skip=0, fetch=100 +06)----------Cross Join: +07)------------Limit: skip=0, fetch=100 +08)--------------Cross Join: +09)----------------Limit: skip=0, fetch=100 +10)------------------Cross Join: +11)--------------------SubqueryAlias: b1 +12)----------------------Projection: avg(store_sales.ss_list_price) AS b1_lp, count(store_sales.ss_list_price) AS b1_cnt, count(DISTINCT store_sales.ss_list_price) AS b1_cntd +13)------------------------Limit: skip=0, fetch=100 +14)--------------------------Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)]] +15)----------------------------Projection: store_sales.ss_list_price +16)------------------------------Filter: store_sales.ss_quantity >= Int64(0) AND store_sales.ss_quantity <= Int64(5) AND (store_sales.ss_list_price >= Decimal128(8.00,7,2) AND store_sales.ss_list_price <= Decimal128(18.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(459.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(1459.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(57.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(77.00,7,2)) +17)--------------------------------TableScan: store_sales projection=[ss_quantity, ss_wholesale_cost, ss_list_price, ss_coupon_amt], partial_filters=[store_sales.ss_quantity >= Int64(0), store_sales.ss_quantity <= Int64(5), store_sales.ss_list_price >= Decimal128(8.00,7,2) AND store_sales.ss_list_price <= Decimal128(18.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(459.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(1459.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(57.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(77.00,7,2)] +18)--------------------SubqueryAlias: b2 +19)----------------------Projection: avg(store_sales.ss_list_price) AS b2_lp, count(store_sales.ss_list_price) AS b2_cnt, count(DISTINCT store_sales.ss_list_price) AS b2_cntd +20)------------------------Limit: skip=0, fetch=100 +21)--------------------------Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)]] +22)----------------------------Projection: store_sales.ss_list_price +23)------------------------------Filter: store_sales.ss_quantity >= Int64(6) AND store_sales.ss_quantity <= Int64(10) AND (store_sales.ss_list_price >= Decimal128(90.00,7,2) AND store_sales.ss_list_price <= Decimal128(100.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(2323.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(3323.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(31.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(51.00,7,2)) +24)--------------------------------TableScan: store_sales projection=[ss_quantity, ss_wholesale_cost, ss_list_price, ss_coupon_amt], partial_filters=[store_sales.ss_quantity >= Int64(6), store_sales.ss_quantity <= Int64(10), store_sales.ss_list_price >= Decimal128(90.00,7,2) AND store_sales.ss_list_price <= Decimal128(100.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(2323.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(3323.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(31.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(51.00,7,2)] +25)----------------SubqueryAlias: b3 +26)------------------Projection: avg(store_sales.ss_list_price) AS b3_lp, count(store_sales.ss_list_price) AS b3_cnt, count(DISTINCT store_sales.ss_list_price) AS b3_cntd +27)--------------------Limit: skip=0, fetch=100 +28)----------------------Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)]] +29)------------------------Projection: store_sales.ss_list_price +30)--------------------------Filter: store_sales.ss_quantity >= Int64(11) AND store_sales.ss_quantity <= Int64(15) AND (store_sales.ss_list_price >= Decimal128(142.00,7,2) AND store_sales.ss_list_price <= Decimal128(152.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(12214.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(13214.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(79.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(99.00,7,2)) +31)----------------------------TableScan: store_sales projection=[ss_quantity, ss_wholesale_cost, ss_list_price, ss_coupon_amt], partial_filters=[store_sales.ss_quantity >= Int64(11), store_sales.ss_quantity <= Int64(15), store_sales.ss_list_price >= Decimal128(142.00,7,2) AND store_sales.ss_list_price <= Decimal128(152.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(12214.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(13214.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(79.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(99.00,7,2)] +32)------------SubqueryAlias: b4 +33)--------------Projection: avg(store_sales.ss_list_price) AS b4_lp, count(store_sales.ss_list_price) AS b4_cnt, count(DISTINCT store_sales.ss_list_price) AS b4_cntd +34)----------------Limit: skip=0, fetch=100 +35)------------------Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)]] +36)--------------------Projection: store_sales.ss_list_price +37)----------------------Filter: store_sales.ss_quantity >= Int64(16) AND store_sales.ss_quantity <= Int64(20) AND (store_sales.ss_list_price >= Decimal128(135.00,7,2) AND store_sales.ss_list_price <= Decimal128(145.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(6071.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(7071.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(38.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(58.00,7,2)) +38)------------------------TableScan: store_sales projection=[ss_quantity, ss_wholesale_cost, ss_list_price, ss_coupon_amt], partial_filters=[store_sales.ss_quantity >= Int64(16), store_sales.ss_quantity <= Int64(20), store_sales.ss_list_price >= Decimal128(135.00,7,2) AND store_sales.ss_list_price <= Decimal128(145.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(6071.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(7071.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(38.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(58.00,7,2)] +39)--------SubqueryAlias: b5 +40)----------Projection: avg(store_sales.ss_list_price) AS b5_lp, count(store_sales.ss_list_price) AS b5_cnt, count(DISTINCT store_sales.ss_list_price) AS b5_cntd +41)------------Limit: skip=0, fetch=100 +42)--------------Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)]] +43)----------------Projection: store_sales.ss_list_price +44)------------------Filter: store_sales.ss_quantity >= Int64(21) AND store_sales.ss_quantity <= Int64(25) AND (store_sales.ss_list_price >= Decimal128(122.00,7,2) AND store_sales.ss_list_price <= Decimal128(132.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(836.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(1836.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(17.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(37.00,7,2)) +45)--------------------TableScan: store_sales projection=[ss_quantity, ss_wholesale_cost, ss_list_price, ss_coupon_amt], partial_filters=[store_sales.ss_quantity >= Int64(21), store_sales.ss_quantity <= Int64(25), store_sales.ss_list_price >= Decimal128(122.00,7,2) AND store_sales.ss_list_price <= Decimal128(132.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(836.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(1836.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(17.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(37.00,7,2)] +46)----SubqueryAlias: b6 +47)------Projection: avg(store_sales.ss_list_price) AS b6_lp, count(store_sales.ss_list_price) AS b6_cnt, count(DISTINCT store_sales.ss_list_price) AS b6_cntd +48)--------Limit: skip=0, fetch=100 +49)----------Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)]] +50)------------Projection: store_sales.ss_list_price +51)--------------Filter: store_sales.ss_quantity >= Int64(26) AND store_sales.ss_quantity <= Int64(30) AND (store_sales.ss_list_price >= Decimal128(154.00,7,2) AND store_sales.ss_list_price <= Decimal128(164.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(7326.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(8326.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(7.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(27.00,7,2)) +52)----------------TableScan: store_sales projection=[ss_quantity, ss_wholesale_cost, ss_list_price, ss_coupon_amt], partial_filters=[store_sales.ss_quantity >= Int64(26), store_sales.ss_quantity <= Int64(30), store_sales.ss_list_price >= Decimal128(154.00,7,2) AND store_sales.ss_list_price <= Decimal128(164.00,7,2) OR store_sales.ss_coupon_amt >= Decimal128(7326.00,7,2) AND store_sales.ss_coupon_amt <= Decimal128(8326.00,7,2) OR store_sales.ss_wholesale_cost >= Decimal128(7.00,7,2) AND store_sales.ss_wholesale_cost <= Decimal128(27.00,7,2)] +physical_plan +01)ProjectionExec: expr=[b1_lp@3 as b1_lp, b1_cnt@4 as b1_cnt, b1_cntd@5 as b1_cntd, b2_lp@6 as b2_lp, b2_cnt@7 as b2_cnt, b2_cntd@8 as b2_cntd, b3_lp@9 as b3_lp, b3_cnt@10 as b3_cnt, b3_cntd@11 as b3_cntd, b4_lp@12 as b4_lp, b4_cnt@13 as b4_cnt, b4_cntd@14 as b4_cntd, b5_lp@15 as b5_lp, b5_cnt@16 as b5_cnt, b5_cntd@17 as b5_cntd, b6_lp@0 as b6_lp, b6_cnt@1 as b6_cnt, b6_cntd@2 as b6_cntd] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----CrossJoinExec +04)------ProjectionExec: expr=[avg(store_sales.ss_list_price)@0 as b6_lp, count(store_sales.ss_list_price)@1 as b6_cnt, count(DISTINCT store_sales.ss_list_price)@2 as b6_cntd] +05)--------GlobalLimitExec: skip=0, fetch=100 +06)----------AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +07)------------CoalescePartitionsExec +08)--------------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +09)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_list_price], file_type=vortex, predicate: ss_quantity@10 >= 26 AND ss_quantity@10 <= 30 AND (ss_list_price@12 >= 154.00 AND ss_list_price@12 <= 164.00 OR ss_coupon_amt@19 >= 7326.00 AND ss_coupon_amt@19 <= 8326.00 OR ss_wholesale_cost@11 >= 7.00 AND ss_wholesale_cost@11 <= 27.00) +10)------ProjectionExec: expr=[b1_lp@3 as b1_lp, b1_cnt@4 as b1_cnt, b1_cntd@5 as b1_cntd, b2_lp@6 as b2_lp, b2_cnt@7 as b2_cnt, b2_cntd@8 as b2_cntd, b3_lp@9 as b3_lp, b3_cnt@10 as b3_cnt, b3_cntd@11 as b3_cntd, b4_lp@12 as b4_lp, b4_cnt@13 as b4_cnt, b4_cntd@14 as b4_cntd, b5_lp@0 as b5_lp, b5_cnt@1 as b5_cnt, b5_cntd@2 as b5_cntd] +11)--------GlobalLimitExec: skip=0, fetch=100 +12)----------CrossJoinExec +13)------------ProjectionExec: expr=[avg(store_sales.ss_list_price)@0 as b5_lp, count(store_sales.ss_list_price)@1 as b5_cnt, count(DISTINCT store_sales.ss_list_price)@2 as b5_cntd] +14)--------------GlobalLimitExec: skip=0, fetch=100 +15)----------------AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +16)------------------CoalescePartitionsExec +17)--------------------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +18)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_list_price], file_type=vortex, predicate: ss_quantity@10 >= 21 AND ss_quantity@10 <= 25 AND (ss_list_price@12 >= 122.00 AND ss_list_price@12 <= 132.00 OR ss_coupon_amt@19 >= 836.00 AND ss_coupon_amt@19 <= 1836.00 OR ss_wholesale_cost@11 >= 17.00 AND ss_wholesale_cost@11 <= 37.00) +19)------------ProjectionExec: expr=[b1_lp@3 as b1_lp, b1_cnt@4 as b1_cnt, b1_cntd@5 as b1_cntd, b2_lp@6 as b2_lp, b2_cnt@7 as b2_cnt, b2_cntd@8 as b2_cntd, b3_lp@9 as b3_lp, b3_cnt@10 as b3_cnt, b3_cntd@11 as b3_cntd, b4_lp@0 as b4_lp, b4_cnt@1 as b4_cnt, b4_cntd@2 as b4_cntd] +20)--------------GlobalLimitExec: skip=0, fetch=100 +21)----------------CrossJoinExec +22)------------------ProjectionExec: expr=[avg(store_sales.ss_list_price)@0 as b4_lp, count(store_sales.ss_list_price)@1 as b4_cnt, count(DISTINCT store_sales.ss_list_price)@2 as b4_cntd] +23)--------------------GlobalLimitExec: skip=0, fetch=100 +24)----------------------AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +25)------------------------CoalescePartitionsExec +26)--------------------------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +27)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_list_price], file_type=vortex, predicate: ss_quantity@10 >= 16 AND ss_quantity@10 <= 20 AND (ss_list_price@12 >= 135.00 AND ss_list_price@12 <= 145.00 OR ss_coupon_amt@19 >= 6071.00 AND ss_coupon_amt@19 <= 7071.00 OR ss_wholesale_cost@11 >= 38.00 AND ss_wholesale_cost@11 <= 58.00) +28)------------------ProjectionExec: expr=[b1_lp@3 as b1_lp, b1_cnt@4 as b1_cnt, b1_cntd@5 as b1_cntd, b2_lp@6 as b2_lp, b2_cnt@7 as b2_cnt, b2_cntd@8 as b2_cntd, b3_lp@0 as b3_lp, b3_cnt@1 as b3_cnt, b3_cntd@2 as b3_cntd] +29)--------------------GlobalLimitExec: skip=0, fetch=100 +30)----------------------CrossJoinExec +31)------------------------ProjectionExec: expr=[avg(store_sales.ss_list_price)@0 as b3_lp, count(store_sales.ss_list_price)@1 as b3_cnt, count(DISTINCT store_sales.ss_list_price)@2 as b3_cntd] +32)--------------------------GlobalLimitExec: skip=0, fetch=100 +33)----------------------------AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +34)------------------------------CoalescePartitionsExec +35)--------------------------------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +36)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_list_price], file_type=vortex, predicate: ss_quantity@10 >= 11 AND ss_quantity@10 <= 15 AND (ss_list_price@12 >= 142.00 AND ss_list_price@12 <= 152.00 OR ss_coupon_amt@19 >= 12214.00 AND ss_coupon_amt@19 <= 13214.00 OR ss_wholesale_cost@11 >= 79.00 AND ss_wholesale_cost@11 <= 99.00) +37)------------------------GlobalLimitExec: skip=0, fetch=100 +38)--------------------------CrossJoinExec +39)----------------------------ProjectionExec: expr=[avg(store_sales.ss_list_price)@0 as b1_lp, count(store_sales.ss_list_price)@1 as b1_cnt, count(DISTINCT store_sales.ss_list_price)@2 as b1_cntd] +40)------------------------------GlobalLimitExec: skip=0, fetch=100 +41)--------------------------------AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +42)----------------------------------CoalescePartitionsExec +43)------------------------------------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +44)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_list_price], file_type=vortex, predicate: ss_quantity@10 >= 0 AND ss_quantity@10 <= 5 AND (ss_list_price@12 >= 8.00 AND ss_list_price@12 <= 18.00 OR ss_coupon_amt@19 >= 459.00 AND ss_coupon_amt@19 <= 1459.00 OR ss_wholesale_cost@11 >= 57.00 AND ss_wholesale_cost@11 <= 77.00) +45)----------------------------ProjectionExec: expr=[avg(store_sales.ss_list_price)@0 as b2_lp, count(store_sales.ss_list_price)@1 as b2_cnt, count(DISTINCT store_sales.ss_list_price)@2 as b2_cntd] +46)------------------------------GlobalLimitExec: skip=0, fetch=100 +47)--------------------------------AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +48)----------------------------------CoalescePartitionsExec +49)------------------------------------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_list_price), count(store_sales.ss_list_price), count(DISTINCT store_sales.ss_list_price)] +50)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_list_price], file_type=vortex, predicate: ss_quantity@10 >= 6 AND ss_quantity@10 <= 10 AND (ss_list_price@12 >= 90.00 AND ss_list_price@12 <= 100.00 OR ss_coupon_amt@19 >= 2323.00 AND ss_coupon_amt@19 <= 3323.00 OR ss_wholesale_cost@11 >= 31.00 AND ss_wholesale_cost@11 <= 51.00) diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q29.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q29.slt.no new file mode 100644 index 00000000000..99149ded3d4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q29.slt.no @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_quantity) AS store_sales_quantity, + sum(sr_return_quantity) AS store_returns_quantity, + sum(cs_quantity) AS catalog_sales_quantity +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_moy = 9 + AND d1.d_year = 1999 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 9 AND 9 + 3 + AND d2.d_year = 1999 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN (1999, + 1999+1, + 1999+2) +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS LAST, item.i_item_desc ASC NULLS LAST, store.s_store_id ASC NULLS LAST, store.s_store_name ASC NULLS LAST, fetch=100 +02)--Projection: item.i_item_id, item.i_item_desc, store.s_store_id, store.s_store_name, sum(store_sales.ss_quantity) AS store_sales_quantity, sum(store_returns.sr_return_quantity) AS store_returns_quantity, sum(catalog_sales.cs_quantity) AS catalog_sales_quantity +03)----Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, store.s_store_id, store.s_store_name]], aggr=[[sum(store_sales.ss_quantity), sum(store_returns.sr_return_quantity), sum(catalog_sales.cs_quantity)]] +04)------Projection: store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_quantity, store.s_store_id, store.s_store_name, item.i_item_id, item.i_item_desc +05)--------Inner Join: store_sales.ss_item_sk = item.i_item_sk +06)----------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_quantity, store.s_store_id, store.s_store_name +07)------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +08)--------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_quantity +09)----------------Inner Join: catalog_sales.cs_sold_date_sk = d3.d_date_sk +10)------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_return_quantity, catalog_sales.cs_sold_date_sk, catalog_sales.cs_quantity +11)--------------------Inner Join: store_returns.sr_returned_date_sk = d2.d_date_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_returned_date_sk, store_returns.sr_return_quantity, catalog_sales.cs_sold_date_sk, catalog_sales.cs_quantity +13)------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +14)--------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_returned_date_sk, store_returns.sr_return_quantity, catalog_sales.cs_sold_date_sk, catalog_sales.cs_quantity +15)----------------------------Inner Join: store_returns.sr_customer_sk = catalog_sales.cs_bill_customer_sk, store_returns.sr_item_sk = catalog_sales.cs_item_sk +16)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_returns.sr_returned_date_sk, store_returns.sr_item_sk, store_returns.sr_customer_sk, store_returns.sr_return_quantity +17)--------------------------------Inner Join: store_sales.ss_customer_sk = store_returns.sr_customer_sk, store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +18)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_quantity] +19)----------------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number, sr_return_quantity] +20)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_quantity] +21)--------------------------SubqueryAlias: d1 +22)----------------------------Projection: date_dim.d_date_sk +23)------------------------------Filter: date_dim.d_moy = Int64(9) AND date_dim.d_year = Int64(1999) +24)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(9), date_dim.d_year = Int64(1999)] +25)----------------------SubqueryAlias: d2 +26)------------------------Projection: date_dim.d_date_sk +27)--------------------------Filter: date_dim.d_moy >= Int64(9) AND date_dim.d_moy <= Int64(12) AND date_dim.d_year = Int64(1999) +28)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy >= Int64(9), date_dim.d_moy <= Int64(12), date_dim.d_year = Int64(1999)] +29)------------------SubqueryAlias: d3 +30)--------------------Projection: date_dim.d_date_sk +31)----------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001) +32)------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)] +33)--------------TableScan: store projection=[s_store_sk, s_store_id, s_store_name] +34)----------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST, i_item_desc@1 ASC NULLS LAST, s_store_id@2 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, s_store_id@2 as s_store_id, s_store_name@3 as s_store_name, sum(store_sales.ss_quantity)@4 as store_sales_quantity, sum(store_returns.sr_return_quantity)@5 as store_returns_quantity, sum(catalog_sales.cs_quantity)@6 as catalog_sales_quantity] +03)----SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST, i_item_desc@1 ASC NULLS LAST, s_store_id@2 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, s_store_id@2 as s_store_id, s_store_name@3 as s_store_name], aggr=[sum(store_sales.ss_quantity), sum(store_returns.sr_return_quantity), sum(catalog_sales.cs_quantity)] +05)--------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, s_store_id@2, s_store_name@3], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_item_id@5 as i_item_id, i_item_desc@6 as i_item_desc, s_store_id@3 as s_store_id, s_store_name@4 as s_store_name], aggr=[sum(store_sales.ss_quantity), sum(store_returns.sr_return_quantity), sum(catalog_sales.cs_quantity)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_quantity@4, sr_return_quantity@5, cs_quantity@6, s_store_id@7, s_store_name@8, i_item_id@1, i_item_desc@2] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc], file_type=vortex +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@3, ss_quantity@5, sr_return_quantity@6, cs_quantity@7, s_store_id@1, s_store_name@2] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id, s_store_name], file_type=vortex +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@4)], projection=[ss_item_sk@1, ss_store_sk@2, ss_quantity@3, sr_return_quantity@4, cs_quantity@6] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 2000 OR d_year@6 = 2001 +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@3)], projection=[ss_item_sk@1, ss_store_sk@2, ss_quantity@3, sr_return_quantity@5, cs_sold_date_sk@6, cs_quantity@7] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 >= 9 AND d_moy@8 <= 12 AND d_year@6 = 1999 +15)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_quantity@4, sr_returned_date_sk@5, sr_return_quantity@6, cs_sold_date_sk@7, cs_quantity@8] +16)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 9 AND d_year@6 = 1999 +17)----------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(cs_bill_customer_sk@1, sr_customer_sk@6), (cs_item_sk@2, sr_item_sk@5)], projection=[ss_sold_date_sk@4, ss_item_sk@5, ss_store_sk@6, ss_quantity@7, sr_returned_date_sk@8, sr_return_quantity@11, cs_sold_date_sk@0, cs_quantity@3] +18)------------------------RepartitionExec: partitioning=Hash([cs_bill_customer_sk@1, cs_item_sk@2], 4), input_partitions=4 +19)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_quantity], file_type=vortex +20)------------------------RepartitionExec: partitioning=Hash([sr_customer_sk@6, sr_item_sk@5], 4), input_partitions=4 +21)--------------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(sr_customer_sk@2, ss_customer_sk@2), (sr_item_sk@1, ss_item_sk@1), (sr_ticket_number@3, ss_ticket_number@4)], projection=[ss_sold_date_sk@5, ss_item_sk@6, ss_store_sk@8, ss_quantity@10, sr_returned_date_sk@0, sr_item_sk@1, sr_customer_sk@2, sr_return_quantity@4] +22)----------------------------RepartitionExec: partitioning=Hash([sr_customer_sk@2, sr_item_sk@1, sr_ticket_number@3], 4), input_partitions=4 +23)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number, sr_return_quantity], file_type=vortex +24)----------------------------RepartitionExec: partitioning=Hash([ss_customer_sk@2, ss_item_sk@1, ss_ticket_number@4], 4), input_partitions=4 +25)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number, ss_quantity], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q3.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q3.slt.no new file mode 100644 index 00000000000..edbf8ebab9d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q3.slt.no @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) sum_agg +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 128 + AND dt.d_moy=11 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + sum_agg DESC, + brand_id +LIMIT 100; +---- +logical_plan +01)Sort: dt.d_year ASC NULLS LAST, sum_agg DESC NULLS FIRST, brand_id ASC NULLS LAST, fetch=100 +02)--Projection: dt.d_year, item.i_brand_id AS brand_id, item.i_brand AS brand, sum(store_sales.ss_ext_sales_price) AS sum_agg +03)----Aggregate: groupBy=[[dt.d_year, item.i_brand, item.i_brand_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +04)------Projection: dt.d_year, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand +05)--------Inner Join: store_sales.ss_item_sk = item.i_item_sk +06)----------Projection: dt.d_year, store_sales.ss_item_sk, store_sales.ss_ext_sales_price +07)------------Inner Join: dt.d_date_sk = store_sales.ss_sold_date_sk +08)--------------SubqueryAlias: dt +09)----------------Projection: date_dim.d_date_sk, date_dim.d_year +10)------------------Filter: date_dim.d_moy = Int64(11) +11)--------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11)] +12)--------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price] +13)----------Projection: item.i_item_sk, item.i_brand_id, item.i_brand +14)------------Filter: item.i_manufact_id = Int64(128) +15)--------------TableScan: item projection=[i_item_sk, i_brand_id, i_brand, i_manufact_id], partial_filters=[item.i_manufact_id = Int64(128)] +physical_plan +01)SortPreservingMergeExec: [d_year@0 ASC NULLS LAST, sum_agg@3 DESC, brand_id@1 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[d_year@0 as d_year, i_brand_id@2 as brand_id, i_brand@1 as brand, sum(store_sales.ss_ext_sales_price)@3 as sum_agg] +03)----SortExec: TopK(fetch=100), expr=[d_year@0 ASC NULLS LAST, sum(store_sales.ss_ext_sales_price)@3 DESC, i_brand_id@2 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_brand@1 as i_brand, i_brand_id@2 as i_brand_id], aggr=[sum(store_sales.ss_ext_sales_price)] +05)--------RepartitionExec: partitioning=Hash([d_year@0, i_brand@1, i_brand_id@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_brand@3 as i_brand, i_brand_id@2 as i_brand_id], aggr=[sum(store_sales.ss_ext_sales_price)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[d_year@3, ss_ext_sales_price@5, i_brand_id@1, i_brand@2] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_brand], file_type=vortex, predicate: i_manufact_id@13 = 128 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[d_year@1, ss_item_sk@3, ss_ext_sales_price@4] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_moy@8 = 11 +11)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q30.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q30.slt.no new file mode 100644 index 00000000000..879881fc0ed --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q30.slt.no @@ -0,0 +1,131 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH customer_total_return AS + (SELECT wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(wr_return_amt) AS ctr_total_return + FROM web_returns, + date_dim, + customer_address + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2002 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +FROM customer_total_return ctr1, + customer_address, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id NULLS FIRST, + c_salutation NULLS FIRST, + c_first_name NULLS FIRST, + c_last_name NULLS FIRST, + c_preferred_cust_flag NULLS FIRST, + c_birth_day NULLS FIRST, + c_birth_month NULLS FIRST, + c_birth_year NULLS FIRST, + c_birth_country NULLS FIRST, + c_login NULLS FIRST, + c_email_address NULLS FIRST, + c_last_review_date_sk NULLS FIRST, + ctr_total_return NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: customer.c_customer_id ASC NULLS FIRST, customer.c_salutation ASC NULLS FIRST, customer.c_first_name ASC NULLS FIRST, customer.c_last_name ASC NULLS FIRST, customer.c_preferred_cust_flag ASC NULLS FIRST, customer.c_birth_day ASC NULLS FIRST, customer.c_birth_month ASC NULLS FIRST, customer.c_birth_year ASC NULLS FIRST, customer.c_birth_country ASC NULLS FIRST, customer.c_login ASC NULLS FIRST, customer.c_email_address ASC NULLS FIRST, customer.c_last_review_date_sk ASC NULLS FIRST, ctr1.ctr_total_return ASC NULLS FIRST, fetch=100 +02)--Projection: customer.c_customer_id, customer.c_salutation, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_day, customer.c_birth_month, customer.c_birth_year, customer.c_birth_country, customer.c_login, customer.c_email_address, customer.c_last_review_date_sk, ctr1.ctr_total_return +03)----LeftSemi Join: ctr1.ctr_state = __scalar_sq_1.ctr_state Filter: CAST(ctr1.ctr_total_return AS Decimal128(30, 15)) > __scalar_sq_1.avg(ctr2.ctr_total_return) * Float64(1.2) +04)------Projection: ctr1.ctr_state, ctr1.ctr_total_return, customer.c_customer_id, customer.c_salutation, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_day, customer.c_birth_month, customer.c_birth_year, customer.c_birth_country, customer.c_login, customer.c_email_address, customer.c_last_review_date_sk +05)--------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +06)----------Projection: ctr1.ctr_state, ctr1.ctr_total_return, customer.c_customer_id, customer.c_current_addr_sk, customer.c_salutation, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_day, customer.c_birth_month, customer.c_birth_year, customer.c_birth_country, customer.c_login, customer.c_email_address, customer.c_last_review_date_sk +07)------------Inner Join: ctr1.ctr_customer_sk = customer.c_customer_sk +08)--------------SubqueryAlias: ctr1 +09)----------------SubqueryAlias: customer_total_return +10)------------------Projection: web_returns.wr_returning_customer_sk AS ctr_customer_sk, customer_address.ca_state AS ctr_state, sum(web_returns.wr_return_amt) AS ctr_total_return +11)--------------------Aggregate: groupBy=[[web_returns.wr_returning_customer_sk, customer_address.ca_state]], aggr=[[sum(web_returns.wr_return_amt)]] +12)----------------------Projection: web_returns.wr_returning_customer_sk, web_returns.wr_return_amt, customer_address.ca_state +13)------------------------Inner Join: web_returns.wr_returning_addr_sk = customer_address.ca_address_sk +14)--------------------------Projection: web_returns.wr_returning_customer_sk, web_returns.wr_returning_addr_sk, web_returns.wr_return_amt +15)----------------------------Inner Join: web_returns.wr_returned_date_sk = date_dim.d_date_sk +16)------------------------------TableScan: web_returns projection=[wr_returned_date_sk, wr_returning_customer_sk, wr_returning_addr_sk, wr_return_amt] +17)------------------------------Projection: date_dim.d_date_sk +18)--------------------------------Filter: date_dim.d_year = Int64(2002) +19)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +20)--------------------------TableScan: customer_address projection=[ca_address_sk, ca_state] +21)--------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_current_addr_sk, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_day, c_birth_month, c_birth_year, c_birth_country, c_login, c_email_address, c_last_review_date_sk] +22)----------Projection: customer_address.ca_address_sk +23)------------Filter: customer_address.ca_state = Utf8View("GA") +24)--------------TableScan: customer_address projection=[ca_address_sk, ca_state], partial_filters=[customer_address.ca_state = Utf8View("GA")] +25)------SubqueryAlias: __scalar_sq_1 +26)--------Projection: CAST(CAST(avg(ctr2.ctr_total_return) AS Float64) * Float64(1.2) AS Decimal128(30, 15)), ctr2.ctr_state +27)----------Aggregate: groupBy=[[ctr2.ctr_state]], aggr=[[avg(ctr2.ctr_total_return)]] +28)------------SubqueryAlias: ctr2 +29)--------------SubqueryAlias: customer_total_return +30)----------------Projection: customer_address.ca_state AS ctr_state, sum(web_returns.wr_return_amt) AS ctr_total_return +31)------------------Aggregate: groupBy=[[web_returns.wr_returning_customer_sk, customer_address.ca_state]], aggr=[[sum(web_returns.wr_return_amt)]] +32)--------------------Projection: web_returns.wr_returning_customer_sk, web_returns.wr_return_amt, customer_address.ca_state +33)----------------------Inner Join: web_returns.wr_returning_addr_sk = customer_address.ca_address_sk +34)------------------------Projection: web_returns.wr_returning_customer_sk, web_returns.wr_returning_addr_sk, web_returns.wr_return_amt +35)--------------------------Inner Join: web_returns.wr_returned_date_sk = date_dim.d_date_sk +36)----------------------------TableScan: web_returns projection=[wr_returned_date_sk, wr_returning_customer_sk, wr_returning_addr_sk, wr_return_amt] +37)----------------------------Projection: date_dim.d_date_sk +38)------------------------------Filter: date_dim.d_year = Int64(2002) +39)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +40)------------------------TableScan: customer_address projection=[ca_address_sk, ca_state] +physical_plan +01)SortPreservingMergeExec: [c_customer_id@0 ASC, c_salutation@1 ASC, c_first_name@2 ASC, c_last_name@3 ASC, c_preferred_cust_flag@4 ASC, c_birth_day@5 ASC, c_birth_month@6 ASC, c_birth_year@7 ASC, c_birth_country@8 ASC, c_login@9 ASC, c_email_address@10 ASC, c_last_review_date_sk@11 ASC, ctr_total_return@12 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_customer_id@0 ASC, c_salutation@1 ASC, c_first_name@2 ASC, c_last_name@3 ASC, c_preferred_cust_flag@4 ASC, c_birth_day@5 ASC, c_birth_month@6 ASC, c_birth_year@7 ASC, c_birth_country@8 ASC, c_login@9 ASC, c_email_address@10 ASC, c_last_review_date_sk@11 ASC, ctr_total_return@12 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ctr_state@0, ctr_state@1)], filter=CAST(ctr_total_return@0 AS Decimal128(30, 15)) > avg(ctr2.ctr_total_return) * Float64(1.2)@1, projection=[c_customer_id@2, c_salutation@3, c_first_name@4, c_last_name@5, c_preferred_cust_flag@6, c_birth_day@7, c_birth_month@8, c_birth_year@9, c_birth_country@10, c_login@11, c_email_address@12, c_last_review_date_sk@13, ctr_total_return@1] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@3)], projection=[ctr_state@1, ctr_total_return@2, c_customer_id@3, c_salutation@5, c_first_name@6, c_last_name@7, c_preferred_cust_flag@8, c_birth_day@9, c_birth_month@10, c_birth_year@11, c_birth_country@12, c_login@13, c_email_address@14, c_last_review_date_sk@15] +06)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_state@8 = GA +07)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ctr_customer_sk@0, c_customer_sk@0)], projection=[ctr_state@1, ctr_total_return@2, c_customer_id@4, c_current_addr_sk@5, c_salutation@6, c_first_name@7, c_last_name@8, c_preferred_cust_flag@9, c_birth_day@10, c_birth_month@11, c_birth_year@12, c_birth_country@13, c_login@14, c_email_address@15, c_last_review_date_sk@16] +08)------------CoalescePartitionsExec +09)--------------ProjectionExec: expr=[wr_returning_customer_sk@0 as ctr_customer_sk, ca_state@1 as ctr_state, sum(web_returns.wr_return_amt)@2 as ctr_total_return] +10)----------------AggregateExec: mode=FinalPartitioned, gby=[wr_returning_customer_sk@0 as wr_returning_customer_sk, ca_state@1 as ca_state], aggr=[sum(web_returns.wr_return_amt)] +11)------------------RepartitionExec: partitioning=Hash([wr_returning_customer_sk@0, ca_state@1], 4), input_partitions=4 +12)--------------------AggregateExec: mode=Partial, gby=[wr_returning_customer_sk@0 as wr_returning_customer_sk, ca_state@2 as ca_state], aggr=[sum(web_returns.wr_return_amt)] +13)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wr_returning_addr_sk@1, ca_address_sk@0)], projection=[wr_returning_customer_sk@0, wr_return_amt@2, ca_state@4] +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, wr_returned_date_sk@0)], projection=[wr_returning_customer_sk@2, wr_returning_addr_sk@3, wr_return_amt@4] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 +17)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_returned_date_sk, wr_returning_customer_sk, wr_returning_addr_sk, wr_return_amt], file_type=vortex +18)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex +19)------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +20)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_current_addr_sk, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_day, c_birth_month, c_birth_year, c_birth_country, c_login, c_email_address, c_last_review_date_sk], file_type=vortex +21)------ProjectionExec: expr=[CAST(CAST(avg(ctr2.ctr_total_return)@1 AS Float64) * 1.2 AS Decimal128(30, 15)) as avg(ctr2.ctr_total_return) * Float64(1.2), ctr_state@0 as ctr_state] +22)--------AggregateExec: mode=FinalPartitioned, gby=[ctr_state@0 as ctr_state], aggr=[avg(ctr2.ctr_total_return)] +23)----------RepartitionExec: partitioning=Hash([ctr_state@0], 4), input_partitions=4 +24)------------AggregateExec: mode=Partial, gby=[ctr_state@0 as ctr_state], aggr=[avg(ctr2.ctr_total_return)] +25)--------------ProjectionExec: expr=[ca_state@1 as ctr_state, sum(web_returns.wr_return_amt)@2 as ctr_total_return] +26)----------------AggregateExec: mode=FinalPartitioned, gby=[wr_returning_customer_sk@0 as wr_returning_customer_sk, ca_state@1 as ca_state], aggr=[sum(web_returns.wr_return_amt)] +27)------------------RepartitionExec: partitioning=Hash([wr_returning_customer_sk@0, ca_state@1], 4), input_partitions=4 +28)--------------------AggregateExec: mode=Partial, gby=[wr_returning_customer_sk@0 as wr_returning_customer_sk, ca_state@2 as ca_state], aggr=[sum(web_returns.wr_return_amt)] +29)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +30)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wr_returning_addr_sk@1, ca_address_sk@0)], projection=[wr_returning_customer_sk@0, wr_return_amt@2, ca_state@4] +31)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, wr_returned_date_sk@0)], projection=[wr_returning_customer_sk@2, wr_returning_addr_sk@3, wr_return_amt@4] +32)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 +33)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_returned_date_sk, wr_returning_customer_sk, wr_returning_addr_sk, wr_return_amt], file_type=vortex +34)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q31.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q31.slt.no new file mode 100644 index 00000000000..0052185be85 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q31.slt.no @@ -0,0 +1,234 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ss AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ss_ext_sales_price) AS store_sales + FROM store_sales, + date_dim, + customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year), + ws AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ws_ext_sales_price) AS web_sales + FROM web_sales, + date_dim, + customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year) +SELECT ss1.ca_county , + ss1.d_year , + (ws2.web_sales*1.0000)/ws1.web_sales web_q1_q2_increase , + (ss2.store_sales*1.0000)/ss1.store_sales store_q1_q2_increase , + (ws3.web_sales*1.0000)/ws2.web_sales web_q2_q3_increase , + (ss3.store_sales*1.0000)/ss2.store_sales store_q2_q3_increase +FROM ss ss1 , + ss ss2 , + ss ss3 , + ws ws1 , + ws ws2 , + ws ws3 +WHERE ss1.d_qoy = 1 + AND ss1.d_year = 2000 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2000 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2000 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2000 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2000 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2000 + AND CASE + WHEN ws1.web_sales > 0 THEN (ws2.web_sales*1.0000)/ws1.web_sales + ELSE NULL + END > CASE + WHEN ss1.store_sales > 0 THEN (ss2.store_sales*1.0000)/ss1.store_sales + ELSE NULL + END + AND CASE + WHEN ws2.web_sales > 0 THEN (ws3.web_sales*1.0000)/ws2.web_sales + ELSE NULL + END > CASE + WHEN ss2.store_sales > 0 THEN (ss3.store_sales*1.0000)/ss2.store_sales + ELSE NULL + END +ORDER BY ss1.ca_county; +---- +logical_plan +01)Sort: ss1.ca_county ASC NULLS LAST +02)--Projection: ss1.ca_county, ss1.d_year, __common_expr_1 / CAST(ws1.web_sales AS Float64) AS web_q1_q2_increase, __common_expr_2 / CAST(ss1.store_sales AS Float64) AS store_q1_q2_increase, CAST(ws3.web_sales AS Float64) / __common_expr_1 AS web_q2_q3_increase, CAST(ss3.store_sales AS Float64) / __common_expr_2 AS store_q2_q3_increase +03)----Projection: CAST(ws2.web_sales AS Float64) AS __common_expr_1, CAST(ss2.store_sales AS Float64) AS __common_expr_2, ss1.ca_county, ss1.d_year, ss1.store_sales, ss3.store_sales, ws1.web_sales, ws3.web_sales +04)------Inner Join: ws1.ca_county = ws3.ca_county Filter: CASE WHEN ws2.web_sales > Decimal128(0.00,17,2) THEN CAST(ws3.web_sales AS Float64) / CAST(ws2.web_sales AS Float64) ELSE Float64(NULL) END > CASE WHEN ss2.store_sales > Decimal128(0.00,17,2) THEN CAST(ss3.store_sales AS Float64) / CAST(ss2.store_sales AS Float64) ELSE Float64(NULL) END +05)--------Projection: ss1.ca_county, ss1.d_year, ss1.store_sales, ss2.store_sales, ss3.store_sales, ws1.ca_county, ws1.web_sales, ws2.web_sales +06)----------Inner Join: ws1.ca_county = ws2.ca_county Filter: CASE WHEN ws1.web_sales > Decimal128(0.00,17,2) THEN CAST(ws2.web_sales AS Float64) / CAST(ws1.web_sales AS Float64) ELSE Float64(NULL) END > CASE WHEN ss1.store_sales > Decimal128(0.00,17,2) THEN CAST(ss2.store_sales AS Float64) / CAST(ss1.store_sales AS Float64) ELSE Float64(NULL) END +07)------------Inner Join: ss1.ca_county = ws1.ca_county +08)--------------Projection: ss1.ca_county, ss1.d_year, ss1.store_sales, ss2.store_sales, ss3.store_sales +09)----------------Inner Join: ss2.ca_county = ss3.ca_county +10)------------------Inner Join: ss1.ca_county = ss2.ca_county +11)--------------------SubqueryAlias: ss1 +12)----------------------SubqueryAlias: ss +13)------------------------Projection: customer_address.ca_county, date_dim.d_year, sum(store_sales.ss_ext_sales_price) AS store_sales +14)--------------------------Aggregate: groupBy=[[customer_address.ca_county, date_dim.d_qoy, date_dim.d_year]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +15)----------------------------Projection: store_sales.ss_ext_sales_price, date_dim.d_year, date_dim.d_qoy, customer_address.ca_county +16)------------------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +17)--------------------------------Projection: store_sales.ss_addr_sk, store_sales.ss_ext_sales_price, date_dim.d_year, date_dim.d_qoy +18)----------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +19)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_addr_sk, ss_ext_sales_price] +20)------------------------------------Filter: date_dim.d_qoy = Int64(1) AND date_dim.d_year = Int64(2000) +21)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(1), date_dim.d_year = Int64(2000)] +22)--------------------------------TableScan: customer_address projection=[ca_address_sk, ca_county] +23)--------------------SubqueryAlias: ss2 +24)----------------------SubqueryAlias: ss +25)------------------------Projection: customer_address.ca_county, sum(store_sales.ss_ext_sales_price) AS store_sales +26)--------------------------Aggregate: groupBy=[[customer_address.ca_county, date_dim.d_qoy, date_dim.d_year]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +27)----------------------------Projection: store_sales.ss_ext_sales_price, date_dim.d_year, date_dim.d_qoy, customer_address.ca_county +28)------------------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +29)--------------------------------Projection: store_sales.ss_addr_sk, store_sales.ss_ext_sales_price, date_dim.d_year, date_dim.d_qoy +30)----------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +31)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_addr_sk, ss_ext_sales_price] +32)------------------------------------Filter: date_dim.d_qoy = Int64(2) AND date_dim.d_year = Int64(2000) +33)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(2), date_dim.d_year = Int64(2000)] +34)--------------------------------TableScan: customer_address projection=[ca_address_sk, ca_county] +35)------------------SubqueryAlias: ss3 +36)--------------------SubqueryAlias: ss +37)----------------------Projection: customer_address.ca_county, sum(store_sales.ss_ext_sales_price) AS store_sales +38)------------------------Aggregate: groupBy=[[customer_address.ca_county, date_dim.d_qoy, date_dim.d_year]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +39)--------------------------Projection: store_sales.ss_ext_sales_price, date_dim.d_year, date_dim.d_qoy, customer_address.ca_county +40)----------------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +41)------------------------------Projection: store_sales.ss_addr_sk, store_sales.ss_ext_sales_price, date_dim.d_year, date_dim.d_qoy +42)--------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +43)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_addr_sk, ss_ext_sales_price] +44)----------------------------------Filter: date_dim.d_qoy = Int64(3) AND date_dim.d_year = Int64(2000) +45)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(3), date_dim.d_year = Int64(2000)] +46)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_county] +47)--------------SubqueryAlias: ws1 +48)----------------SubqueryAlias: ws +49)------------------Projection: customer_address.ca_county, sum(web_sales.ws_ext_sales_price) AS web_sales +50)--------------------Aggregate: groupBy=[[customer_address.ca_county, date_dim.d_qoy, date_dim.d_year]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +51)----------------------Projection: web_sales.ws_ext_sales_price, date_dim.d_year, date_dim.d_qoy, customer_address.ca_county +52)------------------------Inner Join: web_sales.ws_bill_addr_sk = customer_address.ca_address_sk +53)--------------------------Projection: web_sales.ws_bill_addr_sk, web_sales.ws_ext_sales_price, date_dim.d_year, date_dim.d_qoy +54)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +55)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_addr_sk, ws_ext_sales_price] +56)------------------------------Filter: date_dim.d_qoy = Int64(1) AND date_dim.d_year = Int64(2000) +57)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(1), date_dim.d_year = Int64(2000)] +58)--------------------------TableScan: customer_address projection=[ca_address_sk, ca_county] +59)------------SubqueryAlias: ws2 +60)--------------SubqueryAlias: ws +61)----------------Projection: customer_address.ca_county, sum(web_sales.ws_ext_sales_price) AS web_sales +62)------------------Aggregate: groupBy=[[customer_address.ca_county, date_dim.d_qoy, date_dim.d_year]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +63)--------------------Projection: web_sales.ws_ext_sales_price, date_dim.d_year, date_dim.d_qoy, customer_address.ca_county +64)----------------------Inner Join: web_sales.ws_bill_addr_sk = customer_address.ca_address_sk +65)------------------------Projection: web_sales.ws_bill_addr_sk, web_sales.ws_ext_sales_price, date_dim.d_year, date_dim.d_qoy +66)--------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +67)----------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_addr_sk, ws_ext_sales_price] +68)----------------------------Filter: date_dim.d_qoy = Int64(2) AND date_dim.d_year = Int64(2000) +69)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(2), date_dim.d_year = Int64(2000)] +70)------------------------TableScan: customer_address projection=[ca_address_sk, ca_county] +71)--------SubqueryAlias: ws3 +72)----------SubqueryAlias: ws +73)------------Projection: customer_address.ca_county, sum(web_sales.ws_ext_sales_price) AS web_sales +74)--------------Aggregate: groupBy=[[customer_address.ca_county, date_dim.d_qoy, date_dim.d_year]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +75)----------------Projection: web_sales.ws_ext_sales_price, date_dim.d_year, date_dim.d_qoy, customer_address.ca_county +76)------------------Inner Join: web_sales.ws_bill_addr_sk = customer_address.ca_address_sk +77)--------------------Projection: web_sales.ws_bill_addr_sk, web_sales.ws_ext_sales_price, date_dim.d_year, date_dim.d_qoy +78)----------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +79)------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_addr_sk, ws_ext_sales_price] +80)------------------------Filter: date_dim.d_qoy = Int64(3) AND date_dim.d_year = Int64(2000) +81)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(3), date_dim.d_year = Int64(2000)] +82)--------------------TableScan: customer_address projection=[ca_address_sk, ca_county] +physical_plan +01)SortPreservingMergeExec: [ca_county@0 ASC NULLS LAST] +02)--SortExec: expr=[ca_county@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[ca_county@2 as ca_county, d_year@3 as d_year, __common_expr_1@0 / CAST(web_sales@6 AS Float64) as web_q1_q2_increase, __common_expr_2@1 / CAST(store_sales@4 AS Float64) as store_q1_q2_increase, CAST(web_sales@7 AS Float64) / __common_expr_1@0 as web_q2_q3_increase, CAST(store_sales@5 AS Float64) / __common_expr_2@1 as store_q2_q3_increase] +04)------ProjectionExec: expr=[CAST(web_sales@0 AS Float64) as __common_expr_1, CAST(store_sales@1 AS Float64) as __common_expr_2, ca_county@2 as ca_county, d_year@3 as d_year, store_sales@4 as store_sales, store_sales@5 as store_sales, web_sales@6 as web_sales, web_sales@7 as web_sales] +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_county@5, ca_county@0)], filter=CASE WHEN web_sales@2 > 0.00 THEN CAST(web_sales@3 AS Float64) / CAST(web_sales@2 AS Float64) END > CASE WHEN store_sales@0 > 0.00 THEN CAST(store_sales@1 AS Float64) / CAST(store_sales@0 AS Float64) END, projection=[web_sales@7, store_sales@3, ca_county@0, d_year@1, store_sales@2, store_sales@4, web_sales@6, web_sales@9] +06)----------CoalescePartitionsExec +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_county@5, ca_county@0)], filter=CASE WHEN web_sales@2 > 0.00 THEN CAST(web_sales@3 AS Float64) / CAST(web_sales@2 AS Float64) END > CASE WHEN store_sales@0 > 0.00 THEN CAST(store_sales@1 AS Float64) / CAST(store_sales@0 AS Float64) END, projection=[ca_county@0, d_year@1, store_sales@2, store_sales@3, store_sales@4, ca_county@5, web_sales@6, web_sales@8] +08)--------------CoalescePartitionsExec +09)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_county@0, ca_county@0)], projection=[ca_county@2, d_year@3, store_sales@4, store_sales@5, store_sales@6, ca_county@0, web_sales@1] +10)------------------CoalescePartitionsExec +11)--------------------ProjectionExec: expr=[ca_county@0 as ca_county, sum(web_sales.ws_ext_sales_price)@3 as web_sales] +12)----------------------AggregateExec: mode=FinalPartitioned, gby=[ca_county@0 as ca_county, d_qoy@1 as d_qoy, d_year@2 as d_year], aggr=[sum(web_sales.ws_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +13)------------------------RepartitionExec: partitioning=Hash([ca_county@0, d_qoy@1, d_year@2], 4), input_partitions=4 +14)--------------------------AggregateExec: mode=Partial, gby=[ca_county@3 as ca_county, d_qoy@2 as d_qoy, d_year@1 as d_year], aggr=[sum(web_sales.ws_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +15)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_bill_addr_sk@0, ca_address_sk@0)], projection=[ws_ext_sales_price@1, d_year@2, d_qoy@3, ca_county@5] +17)--------------------------------CoalescePartitionsExec +18)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_addr_sk@4, ws_ext_sales_price@5, d_year@1, d_qoy@2] +19)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex, predicate: d_qoy@10 = 1 AND d_year@6 = 2000 +20)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_addr_sk, ws_ext_sales_price], file_type=vortex +21)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county], file_type=vortex +22)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_county@3, ca_county@0)], projection=[ca_county@0, d_year@1, store_sales@2, store_sales@4, store_sales@6] +23)--------------------CoalescePartitionsExec +24)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_county@0, ca_county@0)] +25)------------------------CoalescePartitionsExec +26)--------------------------ProjectionExec: expr=[ca_county@0 as ca_county, d_year@2 as d_year, sum(store_sales.ss_ext_sales_price)@3 as store_sales] +27)----------------------------AggregateExec: mode=FinalPartitioned, gby=[ca_county@0 as ca_county, d_qoy@1 as d_qoy, d_year@2 as d_year], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +28)------------------------------RepartitionExec: partitioning=Hash([ca_county@0, d_qoy@1, d_year@2], 4), input_partitions=4 +29)--------------------------------AggregateExec: mode=Partial, gby=[ca_county@3 as ca_county, d_qoy@2 as d_qoy, d_year@1 as d_year], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +30)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@0)], projection=[ss_ext_sales_price@3, d_year@4, d_qoy@5, ca_county@1] +31)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county], file_type=vortex +32)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_addr_sk@4, ss_ext_sales_price@5, d_year@1, d_qoy@2] +33)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex, predicate: d_qoy@10 = 1 AND d_year@6 = 2000 +34)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_addr_sk, ss_ext_sales_price], file_type=vortex +35)------------------------ProjectionExec: expr=[ca_county@0 as ca_county, sum(store_sales.ss_ext_sales_price)@3 as store_sales] +36)--------------------------AggregateExec: mode=FinalPartitioned, gby=[ca_county@0 as ca_county, d_qoy@1 as d_qoy, d_year@2 as d_year], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +37)----------------------------RepartitionExec: partitioning=Hash([ca_county@0, d_qoy@1, d_year@2], 4), input_partitions=4 +38)------------------------------AggregateExec: mode=Partial, gby=[ca_county@3 as ca_county, d_qoy@2 as d_qoy, d_year@1 as d_year], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +39)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@0)], projection=[ss_ext_sales_price@3, d_year@4, d_qoy@5, ca_county@1] +40)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county], file_type=vortex +41)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_addr_sk@4, ss_ext_sales_price@5, d_year@1, d_qoy@2] +42)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex, predicate: d_qoy@10 = 2 AND d_year@6 = 2000 +43)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_addr_sk, ss_ext_sales_price], file_type=vortex +44)--------------------ProjectionExec: expr=[ca_county@0 as ca_county, sum(store_sales.ss_ext_sales_price)@3 as store_sales] +45)----------------------AggregateExec: mode=FinalPartitioned, gby=[ca_county@0 as ca_county, d_qoy@1 as d_qoy, d_year@2 as d_year], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +46)------------------------RepartitionExec: partitioning=Hash([ca_county@0, d_qoy@1, d_year@2], 4), input_partitions=4 +47)--------------------------AggregateExec: mode=Partial, gby=[ca_county@3 as ca_county, d_qoy@2 as d_qoy, d_year@1 as d_year], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +48)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@0)], projection=[ss_ext_sales_price@3, d_year@4, d_qoy@5, ca_county@1] +49)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county], file_type=vortex +50)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_addr_sk@4, ss_ext_sales_price@5, d_year@1, d_qoy@2] +51)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex, predicate: d_qoy@10 = 3 AND d_year@6 = 2000 +52)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_addr_sk, ss_ext_sales_price], file_type=vortex +53)--------------ProjectionExec: expr=[ca_county@0 as ca_county, sum(web_sales.ws_ext_sales_price)@3 as web_sales] +54)----------------AggregateExec: mode=FinalPartitioned, gby=[ca_county@0 as ca_county, d_qoy@1 as d_qoy, d_year@2 as d_year], aggr=[sum(web_sales.ws_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +55)------------------RepartitionExec: partitioning=Hash([ca_county@0, d_qoy@1, d_year@2], 4), input_partitions=4 +56)--------------------AggregateExec: mode=Partial, gby=[ca_county@3 as ca_county, d_qoy@2 as d_qoy, d_year@1 as d_year], aggr=[sum(web_sales.ws_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +57)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +58)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_bill_addr_sk@0, ca_address_sk@0)], projection=[ws_ext_sales_price@1, d_year@2, d_qoy@3, ca_county@5] +59)--------------------------CoalescePartitionsExec +60)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_addr_sk@4, ws_ext_sales_price@5, d_year@1, d_qoy@2] +61)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex, predicate: d_qoy@10 = 2 AND d_year@6 = 2000 +62)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_addr_sk, ws_ext_sales_price], file_type=vortex +63)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county], file_type=vortex +64)----------ProjectionExec: expr=[ca_county@0 as ca_county, sum(web_sales.ws_ext_sales_price)@3 as web_sales] +65)------------AggregateExec: mode=FinalPartitioned, gby=[ca_county@0 as ca_county, d_qoy@1 as d_qoy, d_year@2 as d_year], aggr=[sum(web_sales.ws_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +66)--------------RepartitionExec: partitioning=Hash([ca_county@0, d_qoy@1, d_year@2], 4), input_partitions=4 +67)----------------AggregateExec: mode=Partial, gby=[ca_county@3 as ca_county, d_qoy@2 as d_qoy, d_year@1 as d_year], aggr=[sum(web_sales.ws_ext_sales_price)], ordering_mode=PartiallySorted([1, 2]) +68)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +69)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_bill_addr_sk@0, ca_address_sk@0)], projection=[ws_ext_sales_price@1, d_year@2, d_qoy@3, ca_county@5] +70)----------------------CoalescePartitionsExec +71)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_addr_sk@4, ws_ext_sales_price@5, d_year@1, d_qoy@2] +72)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex, predicate: d_qoy@10 = 3 AND d_year@6 = 2000 +73)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_addr_sk, ws_ext_sales_price], file_type=vortex +74)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q32.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q32.slt.no new file mode 100644 index 00000000000..e3aefd7def5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q32.slt.no @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT sum(cs_ext_discount_amt) AS "excess discount amount" +FROM catalog_sales , + item , + date_dim +WHERE i_manufact_id = 977 + AND i_item_sk = cs_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk + AND cs_ext_discount_amt > + ( SELECT 1.3 * avg(cs_ext_discount_amt) + FROM catalog_sales , + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk ) +LIMIT 100; +---- +logical_plan +01)Projection: sum(catalog_sales.cs_ext_discount_amt) AS excess discount amount +02)--Limit: skip=0, fetch=100 +03)----Aggregate: groupBy=[[]], aggr=[[sum(catalog_sales.cs_ext_discount_amt)]] +04)------Projection: catalog_sales.cs_ext_discount_amt +05)--------LeftSemi Join: item.i_item_sk = __scalar_sq_1.cs_item_sk Filter: CAST(catalog_sales.cs_ext_discount_amt AS Decimal128(30, 15)) > __scalar_sq_1.Float64(1.3) * avg(catalog_sales.cs_ext_discount_amt) +06)----------Projection: catalog_sales.cs_ext_discount_amt, item.i_item_sk +07)------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +08)--------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ext_discount_amt, item.i_item_sk +09)----------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +10)------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_ext_discount_amt] +11)------------------Projection: item.i_item_sk +12)--------------------Filter: item.i_manufact_id = Int64(977) +13)----------------------TableScan: item projection=[i_item_sk, i_manufact_id], partial_filters=[item.i_manufact_id = Int64(977)] +14)--------------Projection: date_dim.d_date_sk +15)----------------Filter: date_dim.d_date >= Date32("2000-01-27") AND date_dim.d_date <= Date32("2000-04-26") +16)------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-01-27"), date_dim.d_date <= Date32("2000-04-26")] +17)----------SubqueryAlias: __scalar_sq_1 +18)------------Projection: CAST(Float64(1.3) * CAST(avg(catalog_sales.cs_ext_discount_amt) AS Float64) AS Decimal128(30, 15)), catalog_sales.cs_item_sk +19)--------------Aggregate: groupBy=[[catalog_sales.cs_item_sk]], aggr=[[avg(catalog_sales.cs_ext_discount_amt)]] +20)----------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_ext_discount_amt +21)------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +22)--------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_ext_discount_amt] +23)--------------------Projection: date_dim.d_date_sk +24)----------------------Filter: date_dim.d_date >= Date32("2000-01-27") AND date_dim.d_date <= Date32("2000-04-26") +25)------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-01-27"), date_dim.d_date <= Date32("2000-04-26")] +physical_plan +01)ProjectionExec: expr=[sum(catalog_sales.cs_ext_discount_amt)@0 as excess discount amount] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[sum(catalog_sales.cs_ext_discount_amt)] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[sum(catalog_sales.cs_ext_discount_amt)] +06)----------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_item_sk@1, cs_item_sk@1)], filter=CAST(cs_ext_discount_amt@0 AS Decimal128(30, 15)) > Float64(1.3) * avg(catalog_sales.cs_ext_discount_amt)@1, projection=[cs_ext_discount_amt@0] +07)------------CoalescePartitionsExec +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ext_discount_amt@2, i_item_sk@3] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-01-27 AND d_date@2 <= 2000-04-26 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@1, cs_ext_discount_amt@3, i_item_sk@0] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_manufact_id@13 = 977 +12)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_ext_discount_amt], file_type=vortex +13)------------ProjectionExec: expr=[CAST(1.3 * CAST(avg(catalog_sales.cs_ext_discount_amt)@1 AS Float64) AS Decimal128(30, 15)) as Float64(1.3) * avg(catalog_sales.cs_ext_discount_amt), cs_item_sk@0 as cs_item_sk] +14)--------------AggregateExec: mode=FinalPartitioned, gby=[cs_item_sk@0 as cs_item_sk], aggr=[avg(catalog_sales.cs_ext_discount_amt)] +15)----------------RepartitionExec: partitioning=Hash([cs_item_sk@0], 4), input_partitions=4 +16)------------------AggregateExec: mode=Partial, gby=[cs_item_sk@0 as cs_item_sk], aggr=[avg(catalog_sales.cs_ext_discount_amt)] +17)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_item_sk@2, cs_ext_discount_amt@3] +18)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-01-27 AND d_date@2 <= 2000-04-26 +19)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_ext_discount_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q33.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q33.slt.no new file mode 100644 index 00000000000..411a8c4d6be --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q33.slt.no @@ -0,0 +1,191 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ss AS + ( SELECT i_manufact_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + cs AS + ( SELECT i_manufact_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws AS + ( SELECT i_manufact_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT i_manufact_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100; +---- +logical_plan +01)Sort: total_sales ASC NULLS LAST, fetch=100 +02)--Projection: tmp1.i_manufact_id, sum(tmp1.total_sales) AS total_sales +03)----Aggregate: groupBy=[[tmp1.i_manufact_id]], aggr=[[sum(tmp1.total_sales)]] +04)------SubqueryAlias: tmp1 +05)--------Union +06)----------SubqueryAlias: ss +07)------------Projection: item.i_manufact_id, sum(store_sales.ss_ext_sales_price) AS total_sales +08)--------------Aggregate: groupBy=[[item.i_manufact_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +09)----------------LeftSemi Join: item.i_manufact_id = __correlated_sq_1.i_manufact_id +10)------------------Projection: store_sales.ss_ext_sales_price, item.i_manufact_id +11)--------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price +13)------------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +14)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_ext_sales_price +15)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +16)------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_addr_sk, ss_ext_sales_price] +17)------------------------------Projection: date_dim.d_date_sk +18)--------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(5) +19)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(5)] +20)--------------------------Projection: customer_address.ca_address_sk +21)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +22)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +23)----------------------TableScan: item projection=[i_item_sk, i_manufact_id] +24)------------------SubqueryAlias: __correlated_sq_1 +25)--------------------Projection: item.i_manufact_id +26)----------------------Filter: item.i_category = Utf8View("Electronics") +27)------------------------TableScan: item projection=[i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Electronics")] +28)----------SubqueryAlias: cs +29)------------Projection: item.i_manufact_id, sum(catalog_sales.cs_ext_sales_price) AS total_sales +30)--------------Aggregate: groupBy=[[item.i_manufact_id]], aggr=[[sum(catalog_sales.cs_ext_sales_price)]] +31)----------------LeftSemi Join: item.i_manufact_id = __correlated_sq_2.i_manufact_id +32)------------------Projection: catalog_sales.cs_ext_sales_price, item.i_manufact_id +33)--------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +34)----------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +35)------------------------Inner Join: catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk +36)--------------------------Projection: catalog_sales.cs_bill_addr_sk, catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +37)----------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +38)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_addr_sk, cs_item_sk, cs_ext_sales_price] +39)------------------------------Projection: date_dim.d_date_sk +40)--------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(5) +41)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(5)] +42)--------------------------Projection: customer_address.ca_address_sk +43)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +44)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +45)----------------------TableScan: item projection=[i_item_sk, i_manufact_id] +46)------------------SubqueryAlias: __correlated_sq_2 +47)--------------------Projection: item.i_manufact_id +48)----------------------Filter: item.i_category = Utf8View("Electronics") +49)------------------------TableScan: item projection=[i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Electronics")] +50)----------SubqueryAlias: ws +51)------------Projection: item.i_manufact_id, sum(web_sales.ws_ext_sales_price) AS total_sales +52)--------------Aggregate: groupBy=[[item.i_manufact_id]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +53)----------------LeftSemi Join: item.i_manufact_id = __correlated_sq_3.i_manufact_id +54)------------------Projection: web_sales.ws_ext_sales_price, item.i_manufact_id +55)--------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +56)----------------------Projection: web_sales.ws_item_sk, web_sales.ws_ext_sales_price +57)------------------------Inner Join: web_sales.ws_bill_addr_sk = customer_address.ca_address_sk +58)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_bill_addr_sk, web_sales.ws_ext_sales_price +59)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +60)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_addr_sk, ws_ext_sales_price] +61)------------------------------Projection: date_dim.d_date_sk +62)--------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(5) +63)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(5)] +64)--------------------------Projection: customer_address.ca_address_sk +65)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +66)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +67)----------------------TableScan: item projection=[i_item_sk, i_manufact_id] +68)------------------SubqueryAlias: __correlated_sq_3 +69)--------------------Projection: item.i_manufact_id +70)----------------------Filter: item.i_category = Utf8View("Electronics") +71)------------------------TableScan: item projection=[i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Electronics")] +physical_plan +01)SortPreservingMergeExec: [total_sales@1 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_manufact_id@0 as i_manufact_id, sum(tmp1.total_sales)@1 as total_sales] +03)----SortExec: TopK(fetch=100), expr=[sum(tmp1.total_sales)@1 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=SinglePartitioned, gby=[i_manufact_id@0 as i_manufact_id], aggr=[sum(tmp1.total_sales)] +05)--------InterleaveExec +06)----------ProjectionExec: expr=[i_manufact_id@0 as i_manufact_id, sum(store_sales.ss_ext_sales_price)@1 as total_sales] +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_manufact_id@0 as i_manufact_id], aggr=[sum(store_sales.ss_ext_sales_price)] +08)--------------RepartitionExec: partitioning=Hash([i_manufact_id@0], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_manufact_id@1 as i_manufact_id], aggr=[sum(store_sales.ss_ext_sales_price)] +10)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_manufact_id@0, i_manufact_id@1)] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_manufact_id], file_type=vortex, predicate: i_category@12 = Electronics +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_ext_sales_price@3, i_manufact_id@1] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_manufact_id], file_type=vortex +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_item_sk@1, ss_ext_sales_price@3] +15)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +16)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_addr_sk@3, ss_ext_sales_price@4] +17)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 5 +18)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_addr_sk, ss_ext_sales_price], file_type=vortex +19)----------ProjectionExec: expr=[i_manufact_id@0 as i_manufact_id, sum(catalog_sales.cs_ext_sales_price)@1 as total_sales] +20)------------AggregateExec: mode=FinalPartitioned, gby=[i_manufact_id@0 as i_manufact_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +21)--------------RepartitionExec: partitioning=Hash([i_manufact_id@0], 4), input_partitions=4 +22)----------------AggregateExec: mode=Partial, gby=[i_manufact_id@1 as i_manufact_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +23)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_manufact_id@0, i_manufact_id@1)] +24)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_manufact_id], file_type=vortex, predicate: i_category@12 = Electronics +25)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@0)], projection=[cs_ext_sales_price@3, i_manufact_id@1] +26)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_manufact_id], file_type=vortex +27)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, cs_bill_addr_sk@0)], projection=[cs_item_sk@2, cs_ext_sales_price@3] +28)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +29)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_addr_sk@2, cs_item_sk@3, cs_ext_sales_price@4] +30)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 5 +31)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_addr_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex +32)----------ProjectionExec: expr=[i_manufact_id@0 as i_manufact_id, sum(web_sales.ws_ext_sales_price)@1 as total_sales] +33)------------AggregateExec: mode=FinalPartitioned, gby=[i_manufact_id@0 as i_manufact_id], aggr=[sum(web_sales.ws_ext_sales_price)] +34)--------------RepartitionExec: partitioning=Hash([i_manufact_id@0], 4), input_partitions=4 +35)----------------AggregateExec: mode=Partial, gby=[i_manufact_id@1 as i_manufact_id], aggr=[sum(web_sales.ws_ext_sales_price)] +36)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_manufact_id@0, i_manufact_id@1)] +37)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_manufact_id], file_type=vortex, predicate: i_category@12 = Electronics +38)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +39)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_item_sk@0, i_item_sk@0)], projection=[ws_ext_sales_price@1, i_manufact_id@3] +40)------------------------CoalescePartitionsExec +41)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ws_bill_addr_sk@1)], projection=[ws_item_sk@1, ws_ext_sales_price@3] +42)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +43)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_bill_addr_sk@3, ws_ext_sales_price@4] +44)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 5 +45)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_bill_addr_sk, ws_ext_sales_price], file_type=vortex +46)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_manufact_id], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q34.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q34.slt.no new file mode 100644 index 00000000000..a5ccd4bdac5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q34.slt.no @@ -0,0 +1,88 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT c_last_name , + c_first_name , + c_salutation , + c_preferred_cust_flag , + ss_ticket_number , + cnt +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (date_dim.d_dom BETWEEN 1 AND 3 + OR date_dim.d_dom BETWEEN 25 AND 28) + AND (household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'Unknown') + AND household_demographics.hd_vehicle_count > 0 + AND (CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END) > 1.2 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county = 'Williamson County' + GROUP BY ss_ticket_number, + ss_customer_sk) dn, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + c_salutation NULLS FIRST, + c_preferred_cust_flag DESC NULLS FIRST, + ss_ticket_number NULLS FIRST; +---- +logical_plan +01)Sort: customer.c_last_name ASC NULLS FIRST, customer.c_first_name ASC NULLS FIRST, customer.c_salutation ASC NULLS FIRST, customer.c_preferred_cust_flag DESC NULLS FIRST, dn.ss_ticket_number ASC NULLS FIRST +02)--Projection: customer.c_last_name, customer.c_first_name, customer.c_salutation, customer.c_preferred_cust_flag, dn.ss_ticket_number, dn.cnt +03)----Inner Join: dn.ss_customer_sk = customer.c_customer_sk +04)------SubqueryAlias: dn +05)--------Projection: store_sales.ss_ticket_number, store_sales.ss_customer_sk, count(Int64(1)) AS count(*) AS cnt +06)----------Filter: count(Int64(1)) >= Int64(15) AND count(Int64(1)) <= Int64(20) +07)------------Aggregate: groupBy=[[store_sales.ss_ticket_number, store_sales.ss_customer_sk]], aggr=[[count(Int64(1))]] +08)--------------Projection: store_sales.ss_customer_sk, store_sales.ss_ticket_number +09)----------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +10)------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_ticket_number +11)--------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +12)----------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_store_sk, store_sales.ss_ticket_number +13)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_store_sk, ss_ticket_number] +15)--------------------------Projection: date_dim.d_date_sk +16)----------------------------Filter: (date_dim.d_dom >= Int64(1) AND date_dim.d_dom <= Int64(3) OR date_dim.d_dom >= Int64(25) AND date_dim.d_dom <= Int64(28)) AND (date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)) +17)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_dom], partial_filters=[date_dim.d_dom >= Int64(1) AND date_dim.d_dom <= Int64(3) OR date_dim.d_dom >= Int64(25) AND date_dim.d_dom <= Int64(28), date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)] +18)----------------------Projection: store.s_store_sk +19)------------------------Filter: store.s_county = Utf8View("Williamson County") +20)--------------------------TableScan: store projection=[s_store_sk, s_county], partial_filters=[store.s_county = Utf8View("Williamson County")] +21)------------------Projection: household_demographics.hd_demo_sk +22)--------------------Filter: (household_demographics.hd_buy_potential = Utf8View(">10000") OR household_demographics.hd_buy_potential = Utf8View("Unknown")) AND household_demographics.hd_vehicle_count > Int32(0) AND CASE WHEN household_demographics.hd_vehicle_count > Int32(0) THEN CAST(household_demographics.hd_dep_count AS Float64) / CAST(household_demographics.hd_vehicle_count AS Float64) ELSE Float64(NULL) END > Float64(1.2) +23)----------------------TableScan: household_demographics projection=[hd_demo_sk, hd_buy_potential, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_buy_potential = Utf8View(">10000") OR household_demographics.hd_buy_potential = Utf8View("Unknown"), household_demographics.hd_vehicle_count > Int32(0), CASE WHEN household_demographics.hd_vehicle_count > Int32(0) THEN CAST(household_demographics.hd_dep_count AS Float64) / CAST(household_demographics.hd_vehicle_count AS Float64) ELSE Float64(NULL) END > Float64(1.2)] +24)------TableScan: customer projection=[c_customer_sk, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag] +physical_plan +01)SortPreservingMergeExec: [c_last_name@0 ASC, c_first_name@1 ASC, c_salutation@2 ASC, c_preferred_cust_flag@3 DESC, ss_ticket_number@4 ASC] +02)--SortExec: expr=[c_last_name@0 ASC, c_first_name@1 ASC, c_salutation@2 ASC, c_preferred_cust_flag@3 DESC, ss_ticket_number@4 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_last_name@3, c_first_name@2, c_salutation@1, c_preferred_cust_flag@4, ss_ticket_number@5, cnt@7] +04)------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag], file_type=vortex +05)------ProjectionExec: expr=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, count(Int64(1))@2 as cnt] +06)--------FilterExec: count(Int64(1))@2 >= 15 AND count(Int64(1))@2 <= 20 +07)----------AggregateExec: mode=FinalPartitioned, gby=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk], aggr=[count(Int64(1))] +08)------------RepartitionExec: partitioning=Hash([ss_ticket_number@0, ss_customer_sk@1], 4), input_partitions=4 +09)--------------AggregateExec: mode=Partial, gby=[ss_ticket_number@1 as ss_ticket_number, ss_customer_sk@0 as ss_customer_sk], aggr=[count(Int64(1))] +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_customer_sk@1, ss_ticket_number@3] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: (hd_buy_potential@2 = >10000 OR hd_buy_potential@2 = Unknown) AND hd_vehicle_count@4 > 0 AND CASE WHEN hd_vehicle_count@4 > 0 THEN CAST(hd_dep_count@3 AS Float64) / CAST(hd_vehicle_count@4 AS Float64) END > 1.2 +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[ss_customer_sk@1, ss_hdemo_sk@2, ss_ticket_number@4] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_county@23 = Williamson County +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@2, ss_hdemo_sk@3, ss_store_sk@4, ss_ticket_number@5] +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: (d_dom@9 >= 1 AND d_dom@9 <= 3 OR d_dom@9 >= 25 AND d_dom@9 <= 28) AND (d_year@6 = 1999 OR d_year@6 = 2000 OR d_year@6 = 2001) +16)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_store_sk, ss_ticket_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q35.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q35.slt.no new file mode 100644 index 00000000000..aa6fa04b01e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q35.slt.no @@ -0,0 +1,137 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + count(*) cnt1, + min(cd_dep_count) min1, + max(cd_dep_count) max1, + avg(cd_dep_count) avg1, + cd_dep_employed_count, + count(*) cnt2, + min(cd_dep_employed_count) min2, + max(cd_dep_employed_count) max2, + avg(cd_dep_employed_count) avg2, + cd_dep_college_count, + count(*) cnt3, + min(cd_dep_college_count), + max(cd_dep_college_count), + avg(cd_dep_college_count) +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4)) +GROUP BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY ca_state NULLS FIRST, + cd_gender NULLS FIRST, + cd_marital_status NULLS FIRST, + cd_dep_count NULLS FIRST, + cd_dep_employed_count NULLS FIRST, + cd_dep_college_count NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: ca.ca_state ASC NULLS FIRST, customer_demographics.cd_gender ASC NULLS FIRST, customer_demographics.cd_marital_status ASC NULLS FIRST, customer_demographics.cd_dep_count ASC NULLS FIRST, customer_demographics.cd_dep_employed_count ASC NULLS FIRST, customer_demographics.cd_dep_college_count ASC NULLS FIRST, fetch=100 +02)--Projection: ca.ca_state, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_dep_count, count(Int64(1)) AS count(*) AS cnt1, min(customer_demographics.cd_dep_count) AS min1, max(customer_demographics.cd_dep_count) AS max1, avg(customer_demographics.cd_dep_count) AS avg1, customer_demographics.cd_dep_employed_count, count(Int64(1)) AS count(*) AS cnt2, min(customer_demographics.cd_dep_employed_count) AS min2, max(customer_demographics.cd_dep_employed_count) AS max2, avg(customer_demographics.cd_dep_employed_count) AS avg2, customer_demographics.cd_dep_college_count, count(Int64(1)) AS count(*) AS cnt3, min(customer_demographics.cd_dep_college_count), max(customer_demographics.cd_dep_college_count), avg(customer_demographics.cd_dep_college_count) +03)----Aggregate: groupBy=[[ca.ca_state, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count]], aggr=[[count(Int64(1)), min(customer_demographics.cd_dep_count), max(customer_demographics.cd_dep_count), avg(CAST(customer_demographics.cd_dep_count AS Float64)), min(customer_demographics.cd_dep_employed_count), max(customer_demographics.cd_dep_employed_count), avg(CAST(customer_demographics.cd_dep_employed_count AS Float64)), min(customer_demographics.cd_dep_college_count), max(customer_demographics.cd_dep_college_count), avg(CAST(customer_demographics.cd_dep_college_count AS Float64))]] +04)------Projection: ca.ca_state, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count +05)--------Filter: __correlated_sq_2.mark OR __correlated_sq_3.mark +06)----------Projection: ca.ca_state, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count, __correlated_sq_2.mark, __correlated_sq_3.mark +07)------------LeftMark Join: c.c_customer_sk = __correlated_sq_3.cs_ship_customer_sk +08)--------------LeftMark Join: c.c_customer_sk = __correlated_sq_2.ws_bill_customer_sk +09)----------------LeftSemi Join: c.c_customer_sk = __correlated_sq_1.ss_customer_sk +10)------------------Projection: c.c_customer_sk, ca.ca_state, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_dep_count, customer_demographics.cd_dep_employed_count, customer_demographics.cd_dep_college_count +11)--------------------Inner Join: c.c_current_cdemo_sk = customer_demographics.cd_demo_sk +12)----------------------Projection: c.c_customer_sk, c.c_current_cdemo_sk, ca.ca_state +13)------------------------Inner Join: c.c_current_addr_sk = ca.ca_address_sk +14)--------------------------SubqueryAlias: c +15)----------------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk] +16)--------------------------SubqueryAlias: ca +17)----------------------------TableScan: customer_address projection=[ca_address_sk, ca_state] +18)----------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_dep_count, cd_dep_employed_count, cd_dep_college_count] +19)------------------SubqueryAlias: __correlated_sq_1 +20)--------------------Projection: store_sales.ss_customer_sk +21)----------------------LeftSemi Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +22)------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk] +23)------------------------Projection: date_dim.d_date_sk +24)--------------------------Filter: date_dim.d_year = Int64(2002) AND date_dim.d_qoy < Int64(4) +25)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_year = Int64(2002), date_dim.d_qoy < Int64(4)] +26)----------------SubqueryAlias: __correlated_sq_2 +27)------------------Projection: web_sales.ws_bill_customer_sk +28)--------------------LeftSemi Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +29)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk] +30)----------------------Projection: date_dim.d_date_sk +31)------------------------Filter: date_dim.d_year = Int64(2002) AND date_dim.d_qoy < Int64(4) +32)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_year = Int64(2002), date_dim.d_qoy < Int64(4)] +33)--------------SubqueryAlias: __correlated_sq_3 +34)----------------Projection: catalog_sales.cs_ship_customer_sk +35)------------------LeftSemi Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +36)--------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ship_customer_sk] +37)--------------------Projection: date_dim.d_date_sk +38)----------------------Filter: date_dim.d_year = Int64(2002) AND date_dim.d_qoy < Int64(4) +39)------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_year = Int64(2002), date_dim.d_qoy < Int64(4)] +physical_plan +01)SortPreservingMergeExec: [ca_state@0 ASC, cd_gender@1 ASC, cd_marital_status@2 ASC, cd_dep_count@3 ASC, cd_dep_employed_count@8 ASC, cd_dep_college_count@13 ASC], fetch=100 +02)--ProjectionExec: expr=[ca_state@0 as ca_state, cd_gender@1 as cd_gender, cd_marital_status@2 as cd_marital_status, cd_dep_count@3 as cd_dep_count, count(Int64(1))@6 as cnt1, min(customer_demographics.cd_dep_count)@7 as min1, max(customer_demographics.cd_dep_count)@8 as max1, avg(customer_demographics.cd_dep_count)@9 as avg1, cd_dep_employed_count@4 as cd_dep_employed_count, count(Int64(1))@6 as cnt2, min(customer_demographics.cd_dep_employed_count)@10 as min2, max(customer_demographics.cd_dep_employed_count)@11 as max2, avg(customer_demographics.cd_dep_employed_count)@12 as avg2, cd_dep_college_count@5 as cd_dep_college_count, count(Int64(1))@6 as cnt3, min(customer_demographics.cd_dep_college_count)@13 as min(customer_demographics.cd_dep_college_count), max(customer_demographics.cd_dep_college_count)@14 as max(customer_demographics.cd_dep_college_count), avg(customer_demographics.cd_dep_college_count)@15 as avg(customer_demographics.cd_dep_college_count)] +03)----SortExec: TopK(fetch=100), expr=[ca_state@0 ASC, cd_gender@1 ASC, cd_marital_status@2 ASC, cd_dep_count@3 ASC, cd_dep_employed_count@4 ASC, cd_dep_college_count@5 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[ca_state@0 as ca_state, cd_gender@1 as cd_gender, cd_marital_status@2 as cd_marital_status, cd_dep_count@3 as cd_dep_count, cd_dep_employed_count@4 as cd_dep_employed_count, cd_dep_college_count@5 as cd_dep_college_count], aggr=[count(Int64(1)), min(customer_demographics.cd_dep_count), max(customer_demographics.cd_dep_count), avg(customer_demographics.cd_dep_count), min(customer_demographics.cd_dep_employed_count), max(customer_demographics.cd_dep_employed_count), avg(customer_demographics.cd_dep_employed_count), min(customer_demographics.cd_dep_college_count), max(customer_demographics.cd_dep_college_count), avg(customer_demographics.cd_dep_college_count)] +05)--------RepartitionExec: partitioning=Hash([ca_state@0, cd_gender@1, cd_marital_status@2, cd_dep_count@3, cd_dep_employed_count@4, cd_dep_college_count@5], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[ca_state@0 as ca_state, cd_gender@1 as cd_gender, cd_marital_status@2 as cd_marital_status, cd_dep_count@3 as cd_dep_count, cd_dep_employed_count@4 as cd_dep_employed_count, cd_dep_college_count@5 as cd_dep_college_count], aggr=[count(Int64(1)), min(customer_demographics.cd_dep_count), max(customer_demographics.cd_dep_count), avg(customer_demographics.cd_dep_count), min(customer_demographics.cd_dep_employed_count), max(customer_demographics.cd_dep_employed_count), avg(customer_demographics.cd_dep_employed_count), min(customer_demographics.cd_dep_college_count), max(customer_demographics.cd_dep_college_count), avg(customer_demographics.cd_dep_college_count)] +07)------------FilterExec: mark@6 OR mark@7, projection=[ca_state@0, cd_gender@1, cd_marital_status@2, cd_dep_count@3, cd_dep_employed_count@4, cd_dep_college_count@5] +08)--------------HashJoinExec: mode=CollectLeft, join_type=LeftMark, on=[(c_customer_sk@0, cs_ship_customer_sk@0)], projection=[ca_state@1, cd_gender@2, cd_marital_status@3, cd_dep_count@4, cd_dep_employed_count@5, cd_dep_college_count@6, mark@7, mark@8] +09)----------------CoalescePartitionsExec +10)------------------HashJoinExec: mode=CollectLeft, join_type=LeftMark, on=[(c_customer_sk@0, ws_bill_customer_sk@0)] +11)--------------------CoalescePartitionsExec +12)----------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(c_customer_sk@0, ss_customer_sk@0)] +13)------------------------CoalescePartitionsExec +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@1, cd_demo_sk@0)], projection=[c_customer_sk@0, ca_state@2, cd_gender@4, cd_marital_status@5, cd_dep_count@6, cd_dep_employed_count@7, cd_dep_college_count@8] +15)----------------------------CoalescePartitionsExec +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@2)], projection=[c_customer_sk@2, c_current_cdemo_sk@3, ca_state@1] +17)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex +18)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +19)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk], file_type=vortex +20)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +21)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_dep_count, cd_dep_employed_count, cd_dep_college_count], file_type=vortex +22)------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@1] +23)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 AND d_qoy@10 < 4 +24)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk], file_type=vortex +25)--------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_customer_sk@1] +26)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 AND d_qoy@10 < 4 +27)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk], file_type=vortex +28)----------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ship_customer_sk@1] +29)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2002 AND d_qoy@10 < 4 +30)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_ship_customer_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q36.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q36.slt.no new file mode 100644 index 00000000000..7b397768e64 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q36.slt.no @@ -0,0 +1,184 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH results AS + (SELECT sum(ss_net_profit) AS ss_net_profit, + sum(ss_ext_sales_price) AS ss_ext_sales_price, + (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin , + i_category , + i_class , + 0 AS g_category, + 0 AS g_class + FROM store_sales , + date_dim d1 , + item , + store + WHERE d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state ='TN' + GROUP BY i_category, + i_class) , + results_rollup AS + (SELECT gross_margin, + i_category, + i_class, + 0 AS t_category, + 0 AS t_class, + 0 AS lochierarchy + FROM results + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + i_category, + NULL AS i_class, + 0 AS t_category, + 1 AS t_class, + 1 AS lochierarchy + FROM results + GROUP BY i_category + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + NULL AS i_category, + NULL AS i_class, + 1 AS t_category, + 1 AS t_class, + 2 AS lochierarchy + FROM results) +SELECT gross_margin, + i_category, + i_class, + lochierarchy, + rank() OVER ( PARTITION BY lochierarchy, + CASE + WHEN t_class = 0 THEN i_category + END + ORDER BY gross_margin ASC) AS rank_within_parent +FROM results_rollup +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN lochierarchy = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: results_rollup.lochierarchy DESC NULLS FIRST, CASE WHEN results_rollup.lochierarchy = Int64(0) THEN results_rollup.i_category END ASC NULLS FIRST, rank_within_parent ASC NULLS FIRST, fetch=100 +02)--Projection: results_rollup.gross_margin, results_rollup.i_category, results_rollup.i_class, results_rollup.lochierarchy, rank() PARTITION BY [results_rollup.lochierarchy, CASE WHEN results_rollup.t_class = Int64(0) THEN results_rollup.i_category END] ORDER BY [results_rollup.gross_margin ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rank_within_parent +03)----WindowAggr: windowExpr=[[rank() PARTITION BY [results_rollup.lochierarchy, CASE WHEN results_rollup.t_class = Int64(0) THEN results_rollup.i_category END] ORDER BY [results_rollup.gross_margin ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +04)------SubqueryAlias: results_rollup +05)--------Projection: gross_margin, i_category, i_class, t_class, lochierarchy +06)----------Aggregate: groupBy=[[gross_margin, i_category, i_class, t_category, t_class, lochierarchy]], aggr=[[]] +07)------------Union +08)--------------Projection: results.gross_margin, results.i_category, results.i_class, Int64(0) AS t_category, Int64(0) AS t_class, Int64(0) AS lochierarchy +09)----------------SubqueryAlias: results +10)------------------Projection: CAST(sum(store_sales.ss_net_profit) AS Float64) / CAST(sum(store_sales.ss_ext_sales_price) AS Float64) AS gross_margin, item.i_category, item.i_class +11)--------------------Aggregate: groupBy=[[item.i_category, item.i_class]], aggr=[[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)]] +12)----------------------Projection: store_sales.ss_ext_sales_price, store_sales.ss_net_profit, item.i_class, item.i_category +13)------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +14)--------------------------Projection: store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, item.i_class, item.i_category +15)----------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +16)------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit +17)--------------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +18)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit] +19)----------------------------------SubqueryAlias: d1 +20)------------------------------------Projection: date_dim.d_date_sk +21)--------------------------------------Filter: date_dim.d_year = Int64(2001) +22)----------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +23)------------------------------TableScan: item projection=[i_item_sk, i_class, i_category] +24)--------------------------Projection: store.s_store_sk +25)----------------------------Filter: store.s_state = Utf8View("TN") +26)------------------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +27)--------------Projection: CAST(sum(results.ss_net_profit) AS Float64) / CAST(sum(results.ss_ext_sales_price) AS Float64) AS gross_margin, results.i_category, Utf8View(NULL) AS i_class, Int64(0) AS t_category, Int64(1) AS t_class, Int64(1) AS lochierarchy +28)----------------Aggregate: groupBy=[[results.i_category]], aggr=[[sum(results.ss_net_profit), sum(results.ss_ext_sales_price)]] +29)------------------SubqueryAlias: results +30)--------------------Projection: sum(store_sales.ss_net_profit) AS ss_net_profit, sum(store_sales.ss_ext_sales_price) AS ss_ext_sales_price, item.i_category +31)----------------------Aggregate: groupBy=[[item.i_category, item.i_class]], aggr=[[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)]] +32)------------------------Projection: store_sales.ss_ext_sales_price, store_sales.ss_net_profit, item.i_class, item.i_category +33)--------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +34)----------------------------Projection: store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, item.i_class, item.i_category +35)------------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +36)--------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit +37)----------------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +38)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit] +39)------------------------------------SubqueryAlias: d1 +40)--------------------------------------Projection: date_dim.d_date_sk +41)----------------------------------------Filter: date_dim.d_year = Int64(2001) +42)------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +43)--------------------------------TableScan: item projection=[i_item_sk, i_class, i_category] +44)----------------------------Projection: store.s_store_sk +45)------------------------------Filter: store.s_state = Utf8View("TN") +46)--------------------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +47)--------------Projection: CAST(sum(results.ss_net_profit) AS Float64) / CAST(sum(results.ss_ext_sales_price) AS Float64) AS gross_margin, Utf8View(NULL) AS i_category, Utf8View(NULL) AS i_class, Int64(1) AS t_category, Int64(1) AS t_class, Int64(2) AS lochierarchy +48)----------------Aggregate: groupBy=[[]], aggr=[[sum(results.ss_net_profit), sum(results.ss_ext_sales_price)]] +49)------------------SubqueryAlias: results +50)--------------------Projection: sum(store_sales.ss_net_profit) AS ss_net_profit, sum(store_sales.ss_ext_sales_price) AS ss_ext_sales_price +51)----------------------Aggregate: groupBy=[[item.i_category, item.i_class]], aggr=[[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)]] +52)------------------------Projection: store_sales.ss_ext_sales_price, store_sales.ss_net_profit, item.i_class, item.i_category +53)--------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +54)----------------------------Projection: store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, item.i_class, item.i_category +55)------------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +56)--------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit +57)----------------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +58)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit] +59)------------------------------------SubqueryAlias: d1 +60)--------------------------------------Projection: date_dim.d_date_sk +61)----------------------------------------Filter: date_dim.d_year = Int64(2001) +62)------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +63)--------------------------------TableScan: item projection=[i_item_sk, i_class, i_category] +64)----------------------------Projection: store.s_store_sk +65)------------------------------Filter: store.s_state = Utf8View("TN") +66)--------------------------------TableScan: store projection=[s_store_sk, s_state], partial_filters=[store.s_state = Utf8View("TN")] +physical_plan +01)SortPreservingMergeExec: [lochierarchy@3 DESC, CASE WHEN lochierarchy@3 = 0 THEN i_category@1 END ASC, rank_within_parent@4 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[lochierarchy@3 DESC, CASE WHEN lochierarchy@3 = 0 THEN i_category@1 END ASC, rank_within_parent@4 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[gross_margin@0 as gross_margin, i_category@1 as i_category, i_class@2 as i_class, lochierarchy@4 as lochierarchy, rank() PARTITION BY [results_rollup.lochierarchy, CASE WHEN results_rollup.t_class = Int64(0) THEN results_rollup.i_category END] ORDER BY [results_rollup.gross_margin ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@5 as rank_within_parent] +04)------BoundedWindowAggExec: wdw=[rank() PARTITION BY [results_rollup.lochierarchy, CASE WHEN results_rollup.t_class = Int64(0) THEN results_rollup.i_category END] ORDER BY [results_rollup.gross_margin ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [results_rollup.lochierarchy, CASE WHEN results_rollup.t_class = Int64(0) THEN results_rollup.i_category END] ORDER BY [results_rollup.gross_margin ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +05)--------SortExec: expr=[lochierarchy@4 ASC NULLS LAST, CASE WHEN t_class@3 = 0 THEN i_category@1 END ASC NULLS LAST, gross_margin@0 ASC NULLS LAST], preserve_partitioning=[true] +06)----------RepartitionExec: partitioning=Hash([lochierarchy@4, CASE WHEN t_class@3 = 0 THEN i_category@1 END], 4), input_partitions=4 +07)------------ProjectionExec: expr=[gross_margin@0 as gross_margin, i_category@1 as i_category, i_class@2 as i_class, t_class@4 as t_class, lochierarchy@5 as lochierarchy] +08)--------------AggregateExec: mode=FinalPartitioned, gby=[gross_margin@0 as gross_margin, i_category@1 as i_category, i_class@2 as i_class, t_category@3 as t_category, t_class@4 as t_class, lochierarchy@5 as lochierarchy], aggr=[] +09)----------------RepartitionExec: partitioning=Hash([gross_margin@0, i_category@1, i_class@2, t_category@3, t_class@4, lochierarchy@5], 4), input_partitions=9 +10)------------------AggregateExec: mode=Partial, gby=[gross_margin@0 as gross_margin, i_category@1 as i_category, i_class@2 as i_class, t_category@3 as t_category, t_class@4 as t_class, lochierarchy@5 as lochierarchy], aggr=[], ordering_mode=PartiallySorted([3, 4, 5]) +11)--------------------UnionExec +12)----------------------ProjectionExec: expr=[CAST(sum(store_sales.ss_net_profit)@2 AS Float64) / CAST(sum(store_sales.ss_ext_sales_price)@3 AS Float64) as gross_margin, i_category@0 as i_category, i_class@1 as i_class, 0 as t_category, 0 as t_class, 0 as lochierarchy] +13)------------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_class@1 as i_class], aggr=[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)] +14)--------------------------RepartitionExec: partitioning=Hash([i_category@0, i_class@1], 4), input_partitions=4 +15)----------------------------AggregateExec: mode=Partial, gby=[i_category@3 as i_category, i_class@2 as i_class], aggr=[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)] +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[ss_ext_sales_price@2, ss_net_profit@3, i_class@4, i_category@5] +17)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_state@24 = TN +18)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_store_sk@4, ss_ext_sales_price@5, ss_net_profit@6, i_class@1, i_category@2] +19)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_class, i_category], file_type=vortex +20)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_ext_sales_price@4, ss_net_profit@5] +21)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 +22)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit], file_type=vortex +23)----------------------ProjectionExec: expr=[CAST(sum(results.ss_net_profit)@1 AS Float64) / CAST(sum(results.ss_ext_sales_price)@2 AS Float64) as gross_margin, i_category@0 as i_category, NULL as i_class, 0 as t_category, 1 as t_class, 1 as lochierarchy] +24)------------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category], aggr=[sum(results.ss_net_profit), sum(results.ss_ext_sales_price)] +25)--------------------------RepartitionExec: partitioning=Hash([i_category@0], 4), input_partitions=4 +26)----------------------------AggregateExec: mode=Partial, gby=[i_category@2 as i_category], aggr=[sum(results.ss_net_profit), sum(results.ss_ext_sales_price)] +27)------------------------------ProjectionExec: expr=[sum(store_sales.ss_net_profit)@2 as ss_net_profit, sum(store_sales.ss_ext_sales_price)@3 as ss_ext_sales_price, i_category@0 as i_category] +28)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_class@1 as i_class], aggr=[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)] +29)----------------------------------RepartitionExec: partitioning=Hash([i_category@0, i_class@1], 4), input_partitions=4 +30)------------------------------------AggregateExec: mode=Partial, gby=[i_category@3 as i_category, i_class@2 as i_class], aggr=[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)] +31)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[ss_ext_sales_price@2, ss_net_profit@3, i_class@4, i_category@5] +32)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_state@24 = TN +33)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_store_sk@4, ss_ext_sales_price@5, ss_net_profit@6, i_class@1, i_category@2] +34)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_class, i_category], file_type=vortex +35)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_ext_sales_price@4, ss_net_profit@5] +36)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 +37)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit], file_type=vortex +38)----------------------ProjectionExec: expr=[CAST(sum(results.ss_net_profit)@0 AS Float64) / CAST(sum(results.ss_ext_sales_price)@1 AS Float64) as gross_margin, NULL as i_category, NULL as i_class, 1 as t_category, 1 as t_class, 2 as lochierarchy] +39)------------------------AggregateExec: mode=Final, gby=[], aggr=[sum(results.ss_net_profit), sum(results.ss_ext_sales_price)] +40)--------------------------CoalescePartitionsExec +41)----------------------------AggregateExec: mode=Partial, gby=[], aggr=[sum(results.ss_net_profit), sum(results.ss_ext_sales_price)] +42)------------------------------ProjectionExec: expr=[sum(store_sales.ss_net_profit)@2 as ss_net_profit, sum(store_sales.ss_ext_sales_price)@3 as ss_ext_sales_price] +43)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_class@1 as i_class], aggr=[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)] +44)----------------------------------RepartitionExec: partitioning=Hash([i_category@0, i_class@1], 4), input_partitions=4 +45)------------------------------------AggregateExec: mode=Partial, gby=[i_category@3 as i_category, i_class@2 as i_class], aggr=[sum(store_sales.ss_net_profit), sum(store_sales.ss_ext_sales_price)] +46)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[ss_ext_sales_price@2, ss_net_profit@3, i_class@4, i_category@5] +47)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_state@24 = TN +48)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_store_sk@4, ss_ext_sales_price@5, ss_net_profit@6, i_class@1, i_category@2] +49)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_class, i_category], file_type=vortex +50)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_ext_sales_price@4, ss_net_profit@5] +51)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 +52)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q37.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q37.slt.no new file mode 100644 index 00000000000..f8fc0d01f73 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q37.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + i_item_desc, + i_current_price +FROM item, + inventory, + date_dim, + catalog_sales +WHERE i_current_price BETWEEN 68 AND 68 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-02-01' AS date) AND cast('2000-04-01' AS date) + AND i_manufact_id IN (677, + 940, + 694, + 808) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND cs_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS LAST, fetch=100 +02)--Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, item.i_current_price]], aggr=[[]] +03)----Projection: item.i_item_id, item.i_item_desc, item.i_current_price +04)------LeftSemi Join: item.i_item_sk = catalog_sales.cs_item_sk +05)--------Projection: item.i_item_sk, item.i_item_id, item.i_item_desc, item.i_current_price +06)----------LeftSemi Join: inventory.inv_date_sk = date_dim.d_date_sk +07)------------Projection: item.i_item_sk, item.i_item_id, item.i_item_desc, item.i_current_price, inventory.inv_date_sk +08)--------------Inner Join: item.i_item_sk = inventory.inv_item_sk +09)----------------Projection: item.i_item_sk, item.i_item_id, item.i_item_desc, item.i_current_price +10)------------------Filter: item.i_current_price >= Decimal128(68.00,7,2) AND item.i_current_price <= Decimal128(98.00,7,2) AND item.i_manufact_id IN ([Int64(677), Int64(940), Int64(694), Int64(808)]) +11)--------------------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_manufact_id], partial_filters=[item.i_current_price >= Decimal128(68.00,7,2), item.i_current_price <= Decimal128(98.00,7,2), item.i_manufact_id IN ([Int64(677), Int64(940), Int64(694), Int64(808)])] +12)----------------Projection: inventory.inv_date_sk, inventory.inv_item_sk +13)------------------Filter: inventory.inv_quantity_on_hand >= Int32(100) AND inventory.inv_quantity_on_hand <= Int32(500) +14)--------------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_quantity_on_hand], partial_filters=[inventory.inv_quantity_on_hand >= Int32(100), inventory.inv_quantity_on_hand <= Int32(500)] +15)------------Projection: date_dim.d_date_sk +16)--------------Filter: date_dim.d_date >= Date32("2000-02-01") AND date_dim.d_date <= Date32("2000-04-01") +17)----------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-02-01"), date_dim.d_date <= Date32("2000-04-01")] +18)--------TableScan: catalog_sales projection=[cs_item_sk] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_current_price@2 as i_current_price], aggr=[] +04)------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, i_current_price@2], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_current_price@2 as i_current_price], aggr=[] +06)----------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_item_sk@0, cs_item_sk@0)], projection=[i_item_id@1, i_item_desc@2, i_current_price@3] +07)------------CoalescePartitionsExec +08)--------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, inv_date_sk@4)], projection=[i_item_sk@0, i_item_id@1, i_item_desc@2, i_current_price@3] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-02-01 AND d_date@2 <= 2000-04-01 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, inv_item_sk@1)], projection=[i_item_sk@0, i_item_id@1, i_item_desc@2, i_current_price@3, inv_date_sk@4] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc, i_current_price], file_type=vortex, predicate: i_current_price@5 >= 68.00 AND i_current_price@5 <= 98.00 AND i_manufact_id@13 IN (SET) ([677, 940, 694, 808]) +12)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk], file_type=vortex, predicate: inv_quantity_on_hand@3 >= 100 AND inv_quantity_on_hand@3 <= 500 +14)------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_item_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q38.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q38.slt.no new file mode 100644 index 00000000000..67467cf5ecd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q38.slt.no @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT count(*) +FROM + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 ) hot_cust +LIMIT 100; +---- +logical_plan +01)Projection: count(Int64(1)) AS count(*) +02)--Limit: skip=0, fetch=100 +03)----Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +04)------SubqueryAlias: hot_cust +05)--------Projection: +06)----------LeftSemi Join: left.c_last_name = customer.c_last_name, left.c_first_name = customer.c_first_name, left.d_date = date_dim.d_date +07)------------LeftSemi Join: left.c_last_name = right.c_last_name, left.c_first_name = right.c_first_name, left.d_date = right.d_date +08)--------------SubqueryAlias: left +09)----------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, date_dim.d_date]], aggr=[[]] +10)------------------Projection: customer.c_last_name, customer.c_first_name, date_dim.d_date +11)--------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +12)----------------------Projection: store_sales.ss_customer_sk, date_dim.d_date +13)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk] +15)--------------------------Projection: date_dim.d_date_sk, date_dim.d_date +16)----------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +17)------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +18)----------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +19)--------------SubqueryAlias: right +20)----------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, date_dim.d_date]], aggr=[[]] +21)------------------Projection: customer.c_last_name, customer.c_first_name, date_dim.d_date +22)--------------------Inner Join: catalog_sales.cs_bill_customer_sk = customer.c_customer_sk +23)----------------------Projection: catalog_sales.cs_bill_customer_sk, date_dim.d_date +24)------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +25)--------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk] +26)--------------------------Projection: date_dim.d_date_sk, date_dim.d_date +27)----------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +28)------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +29)----------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +30)------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, date_dim.d_date]], aggr=[[]] +31)--------------Projection: customer.c_last_name, customer.c_first_name, date_dim.d_date +32)----------------Inner Join: web_sales.ws_bill_customer_sk = customer.c_customer_sk +33)------------------Projection: web_sales.ws_bill_customer_sk, date_dim.d_date +34)--------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +35)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk] +36)----------------------Projection: date_dim.d_date_sk, date_dim.d_date +37)------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +38)--------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +39)------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +physical_plan +01)ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +06)----------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(c_last_name@0, c_last_name@0), (c_first_name@1, c_first_name@1), (d_date@2, d_date@2)], projection=[], NullsEqual: true +07)------------CoalescePartitionsExec +08)--------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(c_last_name@0, c_last_name@0), (c_first_name@1, c_first_name@1), (d_date@2, d_date@2)], NullsEqual: true +09)----------------CoalescePartitionsExec +10)------------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +11)--------------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, d_date@2], 4), input_partitions=4 +12)----------------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@0)], projection=[c_last_name@2, c_first_name@1, d_date@4] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_customer_sk@3, d_date@1] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk], file_type=vortex +18)----------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +19)------------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, d_date@2], 4), input_partitions=4 +20)--------------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +21)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@0)], projection=[c_last_name@2, c_first_name@1, d_date@4] +22)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +23)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@3, d_date@1] +24)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +25)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk], file_type=vortex +26)------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +27)--------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, d_date@2], 4), input_partitions=4 +28)----------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +29)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@0)], projection=[c_last_name@2, c_first_name@1, d_date@4] +30)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +31)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_customer_sk@3, d_date@1] +32)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +33)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q39.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q39.slt.no new file mode 100644 index 00000000000..7e01dffa4e6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q39.slt.no @@ -0,0 +1,144 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH inv AS + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 THEN NULL + ELSE stdev/mean + END cov + FROM + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand)*1.000 stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year =2001 + GROUP BY w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy) foo + WHERE CASE mean + WHEN 0 THEN 0 + ELSE stdev/mean + END > 1) +SELECT inv1.w_warehouse_sk wsk1, + inv1.i_item_sk isk1, + inv1.d_moy dmoy1, + inv1.mean mean1, + inv1.cov cov1, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy=1 + AND inv2.d_moy=1+1 +ORDER BY inv1.w_warehouse_sk NULLS FIRST, + inv1.i_item_sk NULLS FIRST, + inv1.d_moy NULLS FIRST, + inv1.mean NULLS FIRST, + inv1.cov NULLS FIRST, + inv2.d_moy NULLS FIRST, + inv2.mean NULLS FIRST, + inv2.cov NULLS FIRST; +---- +logical_plan +01)Sort: wsk1 ASC NULLS FIRST, isk1 ASC NULLS FIRST, dmoy1 ASC NULLS FIRST, mean1 ASC NULLS FIRST, cov1 ASC NULLS FIRST, inv2.d_moy ASC NULLS FIRST, inv2.mean ASC NULLS FIRST, inv2.cov ASC NULLS FIRST +02)--Projection: inv1.w_warehouse_sk AS wsk1, inv1.i_item_sk AS isk1, inv1.d_moy AS dmoy1, inv1.mean AS mean1, inv1.cov AS cov1, inv2.w_warehouse_sk, inv2.i_item_sk, inv2.d_moy, inv2.mean, inv2.cov +03)----Inner Join: inv1.i_item_sk = inv2.i_item_sk, inv1.w_warehouse_sk = inv2.w_warehouse_sk +04)------SubqueryAlias: inv1 +05)--------SubqueryAlias: inv +06)----------Projection: foo.w_warehouse_sk, foo.i_item_sk, foo.d_moy, foo.mean, CASE foo.mean WHEN Float64(0) THEN Float64(NULL) ELSE foo.stdev / foo.mean END AS cov +07)------------SubqueryAlias: foo +08)--------------Projection: warehouse.w_warehouse_sk, item.i_item_sk, date_dim.d_moy, stddev(inventory.inv_quantity_on_hand) AS stdev, avg(inventory.inv_quantity_on_hand) AS mean +09)----------------Filter: CASE avg(inventory.inv_quantity_on_hand) WHEN Float64(0) THEN Float64(0) ELSE stddev(inventory.inv_quantity_on_hand) / avg(inventory.inv_quantity_on_hand) END > Float64(1) +10)------------------Projection: warehouse.w_warehouse_sk, item.i_item_sk, date_dim.d_moy, stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand) +11)--------------------Aggregate: groupBy=[[warehouse.w_warehouse_name, warehouse.w_warehouse_sk, item.i_item_sk, date_dim.d_moy]], aggr=[[stddev(__common_expr_1 AS inventory.inv_quantity_on_hand), avg(__common_expr_1 AS inventory.inv_quantity_on_hand)]] +12)----------------------Projection: CAST(inventory.inv_quantity_on_hand AS Float64) AS __common_expr_1, item.i_item_sk, warehouse.w_warehouse_sk, warehouse.w_warehouse_name, date_dim.d_moy +13)------------------------Inner Join: inventory.inv_date_sk = date_dim.d_date_sk +14)--------------------------Projection: inventory.inv_date_sk, inventory.inv_quantity_on_hand, item.i_item_sk, warehouse.w_warehouse_sk, warehouse.w_warehouse_name +15)----------------------------Inner Join: inventory.inv_warehouse_sk = warehouse.w_warehouse_sk +16)------------------------------Projection: inventory.inv_date_sk, inventory.inv_warehouse_sk, inventory.inv_quantity_on_hand, item.i_item_sk +17)--------------------------------Inner Join: inventory.inv_item_sk = item.i_item_sk +18)----------------------------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand] +19)----------------------------------TableScan: item projection=[i_item_sk] +20)------------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name] +21)--------------------------Projection: date_dim.d_date_sk, date_dim.d_moy +22)----------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(1) +23)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(1)] +24)------SubqueryAlias: inv2 +25)--------SubqueryAlias: inv +26)----------Projection: foo.w_warehouse_sk, foo.i_item_sk, foo.d_moy, foo.mean, CASE foo.mean WHEN Float64(0) THEN Float64(NULL) ELSE foo.stdev / foo.mean END AS cov +27)------------SubqueryAlias: foo +28)--------------Projection: warehouse.w_warehouse_sk, item.i_item_sk, date_dim.d_moy, stddev(inventory.inv_quantity_on_hand) AS stdev, avg(inventory.inv_quantity_on_hand) AS mean +29)----------------Filter: CASE avg(inventory.inv_quantity_on_hand) WHEN Float64(0) THEN Float64(0) ELSE stddev(inventory.inv_quantity_on_hand) / avg(inventory.inv_quantity_on_hand) END > Float64(1) +30)------------------Projection: warehouse.w_warehouse_sk, item.i_item_sk, date_dim.d_moy, stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand) +31)--------------------Aggregate: groupBy=[[warehouse.w_warehouse_name, warehouse.w_warehouse_sk, item.i_item_sk, date_dim.d_moy]], aggr=[[stddev(__common_expr_2 AS inventory.inv_quantity_on_hand), avg(__common_expr_2 AS inventory.inv_quantity_on_hand)]] +32)----------------------Projection: CAST(inventory.inv_quantity_on_hand AS Float64) AS __common_expr_2, item.i_item_sk, warehouse.w_warehouse_sk, warehouse.w_warehouse_name, date_dim.d_moy +33)------------------------Inner Join: inventory.inv_date_sk = date_dim.d_date_sk +34)--------------------------Projection: inventory.inv_date_sk, inventory.inv_quantity_on_hand, item.i_item_sk, warehouse.w_warehouse_sk, warehouse.w_warehouse_name +35)----------------------------Inner Join: inventory.inv_warehouse_sk = warehouse.w_warehouse_sk +36)------------------------------Projection: inventory.inv_date_sk, inventory.inv_warehouse_sk, inventory.inv_quantity_on_hand, item.i_item_sk +37)--------------------------------Inner Join: inventory.inv_item_sk = item.i_item_sk +38)----------------------------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand] +39)----------------------------------TableScan: item projection=[i_item_sk] +40)------------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name] +41)--------------------------Projection: date_dim.d_date_sk, date_dim.d_moy +42)----------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(2) +43)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(2)] +physical_plan +01)SortPreservingMergeExec: [wsk1@0 ASC, isk1@1 ASC, dmoy1@2 ASC, mean1@3 ASC, cov1@4 ASC, d_moy@7 ASC, mean@8 ASC, cov@9 ASC] +02)--ProjectionExec: expr=[w_warehouse_sk@0 as wsk1, i_item_sk@1 as isk1, d_moy@2 as dmoy1, mean@3 as mean1, cov@4 as cov1, w_warehouse_sk@5 as w_warehouse_sk, i_item_sk@6 as i_item_sk, d_moy@7 as d_moy, mean@8 as mean, cov@9 as cov] +03)----SortExec: expr=[w_warehouse_sk@0 ASC, i_item_sk@1 ASC, mean@3 ASC, cov@4 ASC, mean@8 ASC, cov@9 ASC], preserve_partitioning=[true] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@1, i_item_sk@1), (w_warehouse_sk@0, w_warehouse_sk@0)] +05)--------CoalescePartitionsExec +06)----------ProjectionExec: expr=[w_warehouse_sk@0 as w_warehouse_sk, i_item_sk@1 as i_item_sk, d_moy@2 as d_moy, avg(inventory.inv_quantity_on_hand)@4 as mean, CASE avg(inventory.inv_quantity_on_hand)@4 WHEN 0 THEN NULL ELSE stddev(inventory.inv_quantity_on_hand)@3 / avg(inventory.inv_quantity_on_hand)@4 END as cov] +07)------------FilterExec: CASE avg(inventory.inv_quantity_on_hand)@4 WHEN 0 THEN 0 ELSE stddev(inventory.inv_quantity_on_hand)@3 / avg(inventory.inv_quantity_on_hand)@4 END > 1 +08)--------------ProjectionExec: expr=[w_warehouse_sk@1 as w_warehouse_sk, i_item_sk@2 as i_item_sk, d_moy@3 as d_moy, stddev(inventory.inv_quantity_on_hand)@4 as stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand)@5 as avg(inventory.inv_quantity_on_hand)] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sk@1 as w_warehouse_sk, i_item_sk@2 as i_item_sk, d_moy@3 as d_moy], aggr=[stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand)], ordering_mode=PartiallySorted([3]) +10)------------------RepartitionExec: partitioning=Hash([w_warehouse_name@0, w_warehouse_sk@1, i_item_sk@2, d_moy@3], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[w_warehouse_name@3 as w_warehouse_name, w_warehouse_sk@2 as w_warehouse_sk, i_item_sk@1 as i_item_sk, d_moy@4 as d_moy], aggr=[stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand)], ordering_mode=PartiallySorted([3]) +12)----------------------ProjectionExec: expr=[CAST(inv_quantity_on_hand@0 AS Float64) as __common_expr_1, i_item_sk@1 as i_item_sk, w_warehouse_sk@2 as w_warehouse_sk, w_warehouse_name@3 as w_warehouse_name, d_moy@4 as d_moy] +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, inv_date_sk@0)], projection=[inv_quantity_on_hand@3, i_item_sk@4, w_warehouse_sk@5, w_warehouse_name@6, d_moy@1] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_moy], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 1 +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, inv_warehouse_sk@1)], projection=[inv_date_sk@2, inv_quantity_on_hand@4, i_item_sk@5, w_warehouse_sk@0, w_warehouse_name@1] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_warehouse_name], file_type=vortex +17)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, inv_item_sk@1)], projection=[inv_date_sk@1, inv_warehouse_sk@3, inv_quantity_on_hand@4, i_item_sk@0] +18)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex +19)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +20)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand], file_type=vortex +21)--------ProjectionExec: expr=[w_warehouse_sk@0 as w_warehouse_sk, i_item_sk@1 as i_item_sk, d_moy@2 as d_moy, avg(inventory.inv_quantity_on_hand)@4 as mean, CASE avg(inventory.inv_quantity_on_hand)@4 WHEN 0 THEN NULL ELSE stddev(inventory.inv_quantity_on_hand)@3 / avg(inventory.inv_quantity_on_hand)@4 END as cov] +22)----------FilterExec: CASE avg(inventory.inv_quantity_on_hand)@4 WHEN 0 THEN 0 ELSE stddev(inventory.inv_quantity_on_hand)@3 / avg(inventory.inv_quantity_on_hand)@4 END > 1 +23)------------ProjectionExec: expr=[w_warehouse_sk@1 as w_warehouse_sk, i_item_sk@2 as i_item_sk, d_moy@3 as d_moy, stddev(inventory.inv_quantity_on_hand)@4 as stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand)@5 as avg(inventory.inv_quantity_on_hand)] +24)--------------AggregateExec: mode=FinalPartitioned, gby=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sk@1 as w_warehouse_sk, i_item_sk@2 as i_item_sk, d_moy@3 as d_moy], aggr=[stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand)], ordering_mode=PartiallySorted([3]) +25)----------------RepartitionExec: partitioning=Hash([w_warehouse_name@0, w_warehouse_sk@1, i_item_sk@2, d_moy@3], 4), input_partitions=4 +26)------------------AggregateExec: mode=Partial, gby=[w_warehouse_name@3 as w_warehouse_name, w_warehouse_sk@2 as w_warehouse_sk, i_item_sk@1 as i_item_sk, d_moy@4 as d_moy], aggr=[stddev(inventory.inv_quantity_on_hand), avg(inventory.inv_quantity_on_hand)], ordering_mode=PartiallySorted([3]) +27)--------------------ProjectionExec: expr=[CAST(inv_quantity_on_hand@0 AS Float64) as __common_expr_2, i_item_sk@1 as i_item_sk, w_warehouse_sk@2 as w_warehouse_sk, w_warehouse_name@3 as w_warehouse_name, d_moy@4 as d_moy] +28)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, inv_date_sk@0)], projection=[inv_quantity_on_hand@3, i_item_sk@4, w_warehouse_sk@5, w_warehouse_name@6, d_moy@1] +29)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_moy], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 2 +30)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, inv_warehouse_sk@1)], projection=[inv_date_sk@2, inv_quantity_on_hand@4, i_item_sk@5, w_warehouse_sk@0, w_warehouse_name@1] +31)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_warehouse_name], file_type=vortex +32)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, inv_item_sk@1)], projection=[inv_date_sk@1, inv_warehouse_sk@3, inv_quantity_on_hand@4, i_item_sk@0] +33)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex +34)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +35)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q4.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q4.slt.no new file mode 100644 index 00000000000..eaced5a2cd9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q4.slt.no @@ -0,0 +1,287 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2)) year_total, + 'c' sale_type + FROM customer, + catalog_sales, + date_dim + WHERE c_customer_sk = cs_bill_customer_sk + AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2)) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: t_s_secyear.customer_id ASC NULLS FIRST, t_s_secyear.customer_first_name ASC NULLS FIRST, t_s_secyear.customer_last_name ASC NULLS FIRST, t_s_secyear.customer_preferred_cust_flag ASC NULLS FIRST, fetch=100 +02)--Projection: t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.customer_preferred_cust_flag +03)----Inner Join: t_s_firstyear.customer_id = t_w_secyear.customer_id Filter: CASE WHEN t_c_firstyear.year_total > Decimal128(0.000000,24,6) THEN t_c_secyear.year_total / t_c_firstyear.year_total ELSE Decimal128(NULL,34,10) END > CASE WHEN t_w_firstyear.year_total > Decimal128(0.000000,24,6) THEN t_w_secyear.year_total / t_w_firstyear.year_total ELSE Decimal128(NULL,34,10) END +04)------Projection: t_s_firstyear.customer_id, t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.customer_preferred_cust_flag, t_c_firstyear.year_total, t_c_secyear.year_total, t_w_firstyear.year_total +05)--------Inner Join: t_s_firstyear.customer_id = t_w_firstyear.customer_id +06)----------Projection: t_s_firstyear.customer_id, t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.customer_preferred_cust_flag, t_c_firstyear.year_total, t_c_secyear.year_total +07)------------Inner Join: t_s_firstyear.customer_id = t_c_secyear.customer_id Filter: CASE WHEN t_c_firstyear.year_total > Decimal128(0.000000,24,6) THEN t_c_secyear.year_total / t_c_firstyear.year_total ELSE Decimal128(NULL,34,10) END > CASE WHEN t_s_firstyear.year_total > Decimal128(0.000000,24,6) THEN t_s_secyear.year_total / t_s_firstyear.year_total ELSE Decimal128(NULL,34,10) END +08)--------------Projection: t_s_firstyear.customer_id, t_s_firstyear.year_total, t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.customer_preferred_cust_flag, t_s_secyear.year_total, t_c_firstyear.year_total +09)----------------Inner Join: t_s_firstyear.customer_id = t_c_firstyear.customer_id +10)------------------Inner Join: t_s_firstyear.customer_id = t_s_secyear.customer_id +11)--------------------SubqueryAlias: t_s_firstyear +12)----------------------SubqueryAlias: year_total +13)------------------------Projection: customer.c_customer_id AS customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2)) AS year_total +14)--------------------------Filter: sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2)) > Decimal128(0.000000,24,6) +15)----------------------------Projection: customer.c_customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2)) +16)------------------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum((store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price) / Decimal128(2,20,0)) AS sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))]] +17)--------------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_ext_discount_amt, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_ext_list_price, date_dim.d_year +18)----------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +19)------------------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_sold_date_sk, store_sales.ss_ext_discount_amt, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_ext_list_price +20)--------------------------------------Inner Join: customer.c_customer_sk = store_sales.ss_customer_sk +21)----------------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +22)----------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_sales_price, ss_ext_wholesale_cost, ss_ext_list_price] +23)------------------------------------Filter: date_dim.d_year = Int64(2001) +24)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +25)--------------------SubqueryAlias: t_s_secyear +26)----------------------SubqueryAlias: year_total +27)------------------------Projection: customer.c_customer_id AS customer_id, customer.c_first_name AS customer_first_name, customer.c_last_name AS customer_last_name, customer.c_preferred_cust_flag AS customer_preferred_cust_flag, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2)) AS year_total +28)--------------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum((store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price) / Decimal128(2,20,0)) AS sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))]] +29)----------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_ext_discount_amt, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_ext_list_price, date_dim.d_year +30)------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +31)--------------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, store_sales.ss_sold_date_sk, store_sales.ss_ext_discount_amt, store_sales.ss_ext_sales_price, store_sales.ss_ext_wholesale_cost, store_sales.ss_ext_list_price +32)----------------------------------Inner Join: customer.c_customer_sk = store_sales.ss_customer_sk +33)------------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +34)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_sales_price, ss_ext_wholesale_cost, ss_ext_list_price] +35)--------------------------------Filter: date_dim.d_year = Int64(2002) +36)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +37)------------------SubqueryAlias: t_c_firstyear +38)--------------------SubqueryAlias: year_total +39)----------------------Projection: customer.c_customer_id AS customer_id, sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2)) AS year_total +40)------------------------Filter: sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2)) > Decimal128(0.000000,24,6) +41)--------------------------Projection: customer.c_customer_id, sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2)) +42)----------------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum((catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price) / Decimal128(2,20,0)) AS sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))]] +43)------------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, catalog_sales.cs_ext_discount_amt, catalog_sales.cs_ext_sales_price, catalog_sales.cs_ext_wholesale_cost, catalog_sales.cs_ext_list_price, date_dim.d_year +44)--------------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +45)----------------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, catalog_sales.cs_sold_date_sk, catalog_sales.cs_ext_discount_amt, catalog_sales.cs_ext_sales_price, catalog_sales.cs_ext_wholesale_cost, catalog_sales.cs_ext_list_price +46)------------------------------------Inner Join: customer.c_customer_sk = catalog_sales.cs_bill_customer_sk +47)--------------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +48)--------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_ext_discount_amt, cs_ext_sales_price, cs_ext_wholesale_cost, cs_ext_list_price] +49)----------------------------------Filter: date_dim.d_year = Int64(2001) +50)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +51)--------------SubqueryAlias: t_c_secyear +52)----------------SubqueryAlias: year_total +53)------------------Projection: customer.c_customer_id AS customer_id, sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2)) AS year_total +54)--------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum((catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price) / Decimal128(2,20,0)) AS sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))]] +55)----------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, catalog_sales.cs_ext_discount_amt, catalog_sales.cs_ext_sales_price, catalog_sales.cs_ext_wholesale_cost, catalog_sales.cs_ext_list_price, date_dim.d_year +56)------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +57)--------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, catalog_sales.cs_sold_date_sk, catalog_sales.cs_ext_discount_amt, catalog_sales.cs_ext_sales_price, catalog_sales.cs_ext_wholesale_cost, catalog_sales.cs_ext_list_price +58)----------------------------Inner Join: customer.c_customer_sk = catalog_sales.cs_bill_customer_sk +59)------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +60)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_ext_discount_amt, cs_ext_sales_price, cs_ext_wholesale_cost, cs_ext_list_price] +61)--------------------------Filter: date_dim.d_year = Int64(2002) +62)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +63)----------SubqueryAlias: t_w_firstyear +64)------------SubqueryAlias: year_total +65)--------------Projection: customer.c_customer_id AS customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2)) AS year_total +66)----------------Filter: sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2)) > Decimal128(0.000000,24,6) +67)------------------Projection: customer.c_customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2)) +68)--------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum((web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price) / Decimal128(2,20,0)) AS sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))]] +69)----------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_ext_discount_amt, web_sales.ws_ext_sales_price, web_sales.ws_ext_wholesale_cost, web_sales.ws_ext_list_price, date_dim.d_year +70)------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +71)--------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_sold_date_sk, web_sales.ws_ext_discount_amt, web_sales.ws_ext_sales_price, web_sales.ws_ext_wholesale_cost, web_sales.ws_ext_list_price +72)----------------------------Inner Join: customer.c_customer_sk = web_sales.ws_bill_customer_sk +73)------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +74)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price] +75)--------------------------Filter: date_dim.d_year = Int64(2001) +76)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +77)------SubqueryAlias: t_w_secyear +78)--------SubqueryAlias: year_total +79)----------Projection: customer.c_customer_id AS customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2)) AS year_total +80)------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, date_dim.d_year]], aggr=[[sum((web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price) / Decimal128(2,20,0)) AS sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))]] +81)--------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_ext_discount_amt, web_sales.ws_ext_sales_price, web_sales.ws_ext_wholesale_cost, web_sales.ws_ext_list_price, date_dim.d_year +82)----------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +83)------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer.c_preferred_cust_flag, customer.c_birth_country, customer.c_login, customer.c_email_address, web_sales.ws_sold_date_sk, web_sales.ws_ext_discount_amt, web_sales.ws_ext_sales_price, web_sales.ws_ext_wholesale_cost, web_sales.ws_ext_list_price +84)--------------------Inner Join: customer.c_customer_sk = web_sales.ws_bill_customer_sk +85)----------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], partial_filters=[Boolean(true)] +86)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price] +87)------------------Filter: date_dim.d_year = Int64(2002) +88)--------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +physical_plan +01)SortPreservingMergeExec: [customer_id@0 ASC, customer_first_name@1 ASC, customer_last_name@2 ASC, customer_preferred_cust_flag@3 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[customer_id@0 ASC, customer_first_name@1 ASC, customer_last_name@2 ASC, customer_preferred_cust_flag@3 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], filter=CASE WHEN year_total@0 > 0.000000 THEN year_total@1 / year_total@0 END > CASE WHEN year_total@2 > 0.000000 THEN year_total@3 / year_total@2 END, projection=[customer_id@1, customer_first_name@2, customer_last_name@3, customer_preferred_cust_flag@4] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], projection=[customer_id@2, customer_id@3, customer_first_name@4, customer_last_name@5, customer_preferred_cust_flag@6, year_total@7, year_total@8, year_total@1] +06)----------CoalescePartitionsExec +07)------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))@1 as year_total] +08)--------------FilterExec: sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))@1 > 0.000000 +09)----------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))@8 as sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))] +10)------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / 2) as sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +11)--------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +12)----------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@11 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / 2) as sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ws_ext_discount_amt@10, ws_ext_sales_price@11, ws_ext_wholesale_cost@12, ws_ext_list_price@13, d_year@1] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ws_sold_date_sk@8, ws_ext_discount_amt@10, ws_ext_sales_price@11, ws_ext_wholesale_cost@12, ws_ext_list_price@13] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price], file_type=vortex +18)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], filter=CASE WHEN year_total@2 > 0.000000 THEN year_total@3 / year_total@2 END > CASE WHEN year_total@0 > 0.000000 THEN year_total@1 / year_total@0 END, projection=[customer_id@0, customer_id@2, customer_first_name@3, customer_last_name@4, customer_preferred_cust_flag@5, year_total@7, year_total@9] +19)------------CoalescePartitionsExec +20)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], projection=[customer_id@2, year_total@3, customer_id@4, customer_first_name@5, customer_last_name@6, customer_preferred_cust_flag@7, year_total@8, year_total@1] +21)----------------CoalescePartitionsExec +22)------------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))@1 as year_total] +23)--------------------FilterExec: sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))@1 > 0.000000 +24)----------------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))@8 as sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))] +25)------------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / 2) as sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +26)--------------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +27)----------------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@11 as d_year], aggr=[sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / 2) as sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +28)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, cs_ext_discount_amt@10, cs_ext_sales_price@11, cs_ext_wholesale_cost@12, cs_ext_list_price@13, d_year@1] +29)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +30)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, cs_sold_date_sk@8, cs_ext_discount_amt@10, cs_ext_sales_price@11, cs_ext_wholesale_cost@12, cs_ext_list_price@13] +31)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +32)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_ext_discount_amt, cs_ext_sales_price, cs_ext_wholesale_cost, cs_ext_list_price], file_type=vortex +33)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)] +34)------------------CoalescePartitionsExec +35)--------------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))@1 as year_total] +36)----------------------FilterExec: sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))@1 > 0.000000 +37)------------------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))@8 as sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))] +38)--------------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / 2) as sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +39)----------------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +40)------------------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@11 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / 2) as sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +41)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ss_ext_discount_amt@10, ss_ext_sales_price@11, ss_ext_wholesale_cost@12, ss_ext_list_price@13, d_year@1] +42)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +43)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ss_sold_date_sk@8, ss_ext_discount_amt@10, ss_ext_sales_price@11, ss_ext_wholesale_cost@12, ss_ext_list_price@13] +44)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +45)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_sales_price, ss_ext_wholesale_cost, ss_ext_list_price], file_type=vortex +46)------------------ProjectionExec: expr=[c_customer_id@0 as customer_id, c_first_name@1 as customer_first_name, c_last_name@2 as customer_last_name, c_preferred_cust_flag@3 as customer_preferred_cust_flag, sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))@8 as year_total] +47)--------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / 2) as sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +48)----------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +49)------------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@11 as d_year], aggr=[sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / 2) as sum(store_sales.ss_ext_list_price - store_sales.ss_ext_wholesale_cost - store_sales.ss_ext_discount_amt + store_sales.ss_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +50)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ss_ext_discount_amt@10, ss_ext_sales_price@11, ss_ext_wholesale_cost@12, ss_ext_list_price@13, d_year@1] +51)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +52)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ss_sold_date_sk@8, ss_ext_discount_amt@10, ss_ext_sales_price@11, ss_ext_wholesale_cost@12, ss_ext_list_price@13] +53)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +54)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_discount_amt, ss_ext_sales_price, ss_ext_wholesale_cost, ss_ext_list_price], file_type=vortex +55)------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))@8 as year_total] +56)--------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / 2) as sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +57)----------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +58)------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@11 as d_year], aggr=[sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / 2) as sum(catalog_sales.cs_ext_list_price - catalog_sales.cs_ext_wholesale_cost - catalog_sales.cs_ext_discount_amt + catalog_sales.cs_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +59)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, cs_ext_discount_amt@10, cs_ext_sales_price@11, cs_ext_wholesale_cost@12, cs_ext_list_price@13, d_year@1] +60)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +61)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, cs_sold_date_sk@8, cs_ext_discount_amt@10, cs_ext_sales_price@11, cs_ext_wholesale_cost@12, cs_ext_list_price@13] +62)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +63)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_ext_discount_amt, cs_ext_sales_price, cs_ext_wholesale_cost, cs_ext_list_price], file_type=vortex +64)------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))@8 as year_total] +65)--------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@7 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / 2) as sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +66)----------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, c_preferred_cust_flag@3, c_birth_country@4, c_login@5, c_email_address@6, d_year@7], 4), input_partitions=4 +67)------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, c_preferred_cust_flag@3 as c_preferred_cust_flag, c_birth_country@4 as c_birth_country, c_login@5 as c_login, c_email_address@6 as c_email_address, d_year@11 as d_year], aggr=[sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / 2) as sum(web_sales.ws_ext_list_price - web_sales.ws_ext_wholesale_cost - web_sales.ws_ext_discount_amt + web_sales.ws_ext_sales_price / Int64(2))], ordering_mode=PartiallySorted([7]) +68)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@7)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, c_preferred_cust_flag@5, c_birth_country@6, c_login@7, c_email_address@8, ws_ext_discount_amt@10, ws_ext_sales_price@11, ws_ext_wholesale_cost@12, ws_ext_list_price@13, d_year@1] +69)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +70)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, c_preferred_cust_flag@4, c_birth_country@5, c_login@6, c_email_address@7, ws_sold_date_sk@8, ws_ext_discount_amt@10, ws_ext_sales_price@11, ws_ext_wholesale_cost@12, ws_ext_list_price@13] +71)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name, c_preferred_cust_flag, c_birth_country, c_login, c_email_address], file_type=vortex +72)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_ext_discount_amt, ws_ext_sales_price, ws_ext_wholesale_cost, ws_ext_list_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q40.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q40.slt.no new file mode 100644 index 00000000000..0c498494c56 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q40.slt.no @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT w_state, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_after +FROM catalog_sales +LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) ,warehouse, + item, + date_dim +WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = cs_item_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) +GROUP BY w_state, + i_item_id +ORDER BY w_state, + i_item_id +LIMIT 100; +---- +logical_plan +01)Sort: warehouse.w_state ASC NULLS LAST, item.i_item_id ASC NULLS LAST, fetch=100 +02)--Projection: warehouse.w_state, item.i_item_id, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END) AS sales_before, sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END) AS sales_after +03)----Aggregate: groupBy=[[warehouse.w_state, item.i_item_id]], aggr=[[sum(CASE WHEN date_dim.d_date < Date32("2000-03-11") THEN catalog_sales.cs_sales_price - CASE WHEN CAST(catalog_returns.cr_refunded_cash AS Decimal128(22, 2)) IS NOT NULL THEN CAST(catalog_returns.cr_refunded_cash AS Decimal128(22, 2)) ELSE Decimal128(0.00,22,2) END ELSE Decimal128(0.00,23,2) END) AS sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= Date32("2000-03-11") THEN catalog_sales.cs_sales_price - CASE WHEN CAST(catalog_returns.cr_refunded_cash AS Decimal128(22, 2)) IS NOT NULL THEN CAST(catalog_returns.cr_refunded_cash AS Decimal128(22, 2)) ELSE Decimal128(0.00,22,2) END ELSE Decimal128(0.00,23,2) END) AS sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END)]] +04)------Projection: catalog_sales.cs_sales_price, catalog_returns.cr_refunded_cash, warehouse.w_state, item.i_item_id, date_dim.d_date +05)--------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +06)----------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_sales_price, catalog_returns.cr_refunded_cash, warehouse.w_state, item.i_item_id +07)------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +08)--------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_sales_price, catalog_returns.cr_refunded_cash, warehouse.w_state +09)----------------Inner Join: catalog_sales.cs_warehouse_sk = warehouse.w_warehouse_sk +10)------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_warehouse_sk, catalog_sales.cs_item_sk, catalog_sales.cs_sales_price, catalog_returns.cr_refunded_cash +11)--------------------Left Join: catalog_sales.cs_order_number = catalog_returns.cr_order_number, catalog_sales.cs_item_sk = catalog_returns.cr_item_sk +12)----------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_warehouse_sk, cs_item_sk, cs_order_number, cs_sales_price] +13)----------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_refunded_cash] +14)------------------TableScan: warehouse projection=[w_warehouse_sk, w_state] +15)--------------Projection: item.i_item_sk, item.i_item_id +16)----------------Filter: item.i_current_price >= Decimal128(0.99,7,2) AND item.i_current_price <= Decimal128(1.49,7,2) +17)------------------TableScan: item projection=[i_item_sk, i_item_id, i_current_price], partial_filters=[item.i_current_price >= Decimal128(0.99,7,2), item.i_current_price <= Decimal128(1.49,7,2)] +18)----------Filter: date_dim.d_date >= Date32("2000-02-10") AND date_dim.d_date <= Date32("2000-04-10") +19)------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-02-10"), date_dim.d_date <= Date32("2000-04-10")] +physical_plan +01)SortPreservingMergeExec: [w_state@0 ASC NULLS LAST, i_item_id@1 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[w_state@0 as w_state, i_item_id@1 as i_item_id, sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END)@2 as sales_before, sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END)@3 as sales_after] +03)----SortExec: TopK(fetch=100), expr=[w_state@0 ASC NULLS LAST, i_item_id@1 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[w_state@0 as w_state, i_item_id@1 as i_item_id], aggr=[sum(CASE WHEN date_dim.d_date < 2000-03-11 THEN catalog_sales.cs_sales_price - CASE WHEN catalog_returns.cr_refunded_cash IS NOT NULL THEN catalog_returns.cr_refunded_cash ELSE 0.00 END ELSE 0.00 END) as sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= 2000-03-11 THEN catalog_sales.cs_sales_price - CASE WHEN catalog_returns.cr_refunded_cash IS NOT NULL THEN catalog_returns.cr_refunded_cash ELSE 0.00 END ELSE 0.00 END) as sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END)] +05)--------RepartitionExec: partitioning=Hash([w_state@0, i_item_id@1], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[w_state@2 as w_state, i_item_id@3 as i_item_id], aggr=[sum(CASE WHEN date_dim.d_date < 2000-03-11 THEN catalog_sales.cs_sales_price - CASE WHEN catalog_returns.cr_refunded_cash IS NOT NULL THEN catalog_returns.cr_refunded_cash ELSE 0.00 END ELSE 0.00 END) as sum(CASE WHEN date_dim.d_date < Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END), sum(CASE WHEN date_dim.d_date >= 2000-03-11 THEN catalog_sales.cs_sales_price - CASE WHEN catalog_returns.cr_refunded_cash IS NOT NULL THEN catalog_returns.cr_refunded_cash ELSE 0.00 END ELSE 0.00 END) as sum(CASE WHEN date_dim.d_date >= Utf8("2000-03-11") THEN catalog_sales.cs_sales_price - coalesce(catalog_returns.cr_refunded_cash,Int64(0)) ELSE Int64(0) END)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_sales_price@3, cr_refunded_cash@4, w_state@5, i_item_id@6, d_date@1] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_date@2 >= 2000-02-10 AND d_date@2 <= 2000-04-10 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@2, cs_sales_price@4, cr_refunded_cash@5, w_state@6, i_item_id@1] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex, predicate: i_current_price@5 >= 0.99 AND i_current_price@5 <= 1.49 +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, cs_warehouse_sk@1)], projection=[cs_sold_date_sk@2, cs_item_sk@4, cs_sales_price@5, cr_refunded_cash@6, w_state@1] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_state], file_type=vortex +13)------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(cr_order_number@1, cs_order_number@3), (cr_item_sk@0, cs_item_sk@2)], projection=[cs_sold_date_sk@3, cs_warehouse_sk@4, cs_item_sk@5, cs_sales_price@7, cr_refunded_cash@2] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_refunded_cash], file_type=vortex +15)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_warehouse_sk, cs_item_sk, cs_order_number, cs_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q41.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q41.slt.no new file mode 100644 index 00000000000..6e4870594ee --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q41.slt.no @@ -0,0 +1,105 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT distinct(i_product_name) +FROM item i1 +WHERE i_manufact_id BETWEEN 738 AND 738+40 + AND + (SELECT count(*) AS item_cnt + FROM item + WHERE (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'powder' + OR i_color = 'khaki') + AND (i_units = 'Ounce' + OR i_units = 'Oz') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'brown' + OR i_color = 'honeydew') + AND (i_units = 'Bunch' + OR i_units = 'Ton') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'floral' + OR i_color = 'deep') + AND (i_units = 'N/A' + OR i_units = 'Dozen') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'light' + OR i_color = 'cornflower') + AND (i_units = 'Box' + OR i_units = 'Pound') + AND (i_size = 'medium' + OR i_size = 'extra large')))) + OR (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'midnight' + OR i_color = 'snow') + AND (i_units = 'Pallet' + OR i_units = 'Gross') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'cyan' + OR i_color = 'papaya') + AND (i_units = 'Cup' + OR i_units = 'Dram') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'orange' + OR i_color = 'frosted') + AND (i_units = 'Each' + OR i_units = 'Tbl') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'forest' + OR i_color = 'ghost') + AND (i_units = 'Lb' + OR i_units = 'Bundle') + AND (i_size = 'medium' + OR i_size = 'extra large'))))) > 0 +ORDER BY i_product_name +LIMIT 100; +---- +logical_plan +01)Sort: i1.i_product_name ASC NULLS LAST, fetch=100 +02)--Aggregate: groupBy=[[i1.i_product_name]], aggr=[[]] +03)----Projection: i1.i_product_name +04)------Filter: CASE WHEN __scalar_sq_1.__always_true IS NULL THEN Int64(0) ELSE __scalar_sq_1.item_cnt END > Int64(0) +05)--------Projection: i1.i_product_name, __scalar_sq_1.item_cnt, __scalar_sq_1.__always_true +06)----------Left Join: i1.i_manufact = __scalar_sq_1.i_manufact +07)------------SubqueryAlias: i1 +08)--------------Projection: item.i_manufact, item.i_product_name +09)----------------Filter: item.i_manufact_id >= Int64(738) AND item.i_manufact_id <= Int64(778) +10)------------------TableScan: item projection=[i_manufact_id, i_manufact, i_product_name], partial_filters=[item.i_manufact_id >= Int64(738), item.i_manufact_id <= Int64(778)] +11)------------SubqueryAlias: __scalar_sq_1 +12)--------------Projection: count(Int64(1)) AS item_cnt, item.i_manufact, Boolean(true) AS __always_true +13)----------------Aggregate: groupBy=[[item.i_manufact]], aggr=[[count(Int64(1))]] +14)------------------Projection: item.i_manufact +15)--------------------Filter: __common_expr_4 AND ((item.i_color = Utf8View("powder") OR item.i_color = Utf8View("khaki")) AND (item.i_units = Utf8View("Ounce") OR item.i_units = Utf8View("Oz")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) OR (item.i_color = Utf8View("brown") OR item.i_color = Utf8View("honeydew")) AND (item.i_units = Utf8View("Bunch") OR item.i_units = Utf8View("Ton")) AND (item.i_size = Utf8View("N/A") OR item.i_size = Utf8View("small"))) OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("floral") OR item.i_color = Utf8View("deep")) AND (item.i_units = Utf8View("N/A") OR item.i_units = Utf8View("Dozen")) AND item.i_size = Utf8View("petite") OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("light") OR item.i_color = Utf8View("cornflower")) AND (item.i_units = Utf8View("Box") OR item.i_units = Utf8View("Pound")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) OR __common_expr_4 AND ((item.i_color = Utf8View("midnight") OR item.i_color = Utf8View("snow")) AND (item.i_units = Utf8View("Pallet") OR item.i_units = Utf8View("Gross")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) OR (item.i_color = Utf8View("cyan") OR item.i_color = Utf8View("papaya")) AND (item.i_units = Utf8View("Cup") OR item.i_units = Utf8View("Dram")) AND (item.i_size = Utf8View("N/A") OR item.i_size = Utf8View("small"))) OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("orange") OR item.i_color = Utf8View("frosted")) AND (item.i_units = Utf8View("Each") OR item.i_units = Utf8View("Tbl")) AND item.i_size = Utf8View("petite") OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("forest") OR item.i_color = Utf8View("ghost")) AND (item.i_units = Utf8View("Lb") OR item.i_units = Utf8View("Bundle")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) +16)----------------------Projection: item.i_category = Utf8View("Women") AS __common_expr_4, item.i_category, item.i_manufact, item.i_size, item.i_color, item.i_units +17)------------------------TableScan: item projection=[i_category, i_manufact, i_size, i_color, i_units], partial_filters=[item.i_category = Utf8View("Women") AND ((item.i_color = Utf8View("powder") OR item.i_color = Utf8View("khaki")) AND (item.i_units = Utf8View("Ounce") OR item.i_units = Utf8View("Oz")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) OR (item.i_color = Utf8View("brown") OR item.i_color = Utf8View("honeydew")) AND (item.i_units = Utf8View("Bunch") OR item.i_units = Utf8View("Ton")) AND (item.i_size = Utf8View("N/A") OR item.i_size = Utf8View("small"))) OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("floral") OR item.i_color = Utf8View("deep")) AND (item.i_units = Utf8View("N/A") OR item.i_units = Utf8View("Dozen")) AND item.i_size = Utf8View("petite") OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("light") OR item.i_color = Utf8View("cornflower")) AND (item.i_units = Utf8View("Box") OR item.i_units = Utf8View("Pound")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) OR item.i_category = Utf8View("Women") AND ((item.i_color = Utf8View("midnight") OR item.i_color = Utf8View("snow")) AND (item.i_units = Utf8View("Pallet") OR item.i_units = Utf8View("Gross")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large")) OR (item.i_color = Utf8View("cyan") OR item.i_color = Utf8View("papaya")) AND (item.i_units = Utf8View("Cup") OR item.i_units = Utf8View("Dram")) AND (item.i_size = Utf8View("N/A") OR item.i_size = Utf8View("small"))) OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("orange") OR item.i_color = Utf8View("frosted")) AND (item.i_units = Utf8View("Each") OR item.i_units = Utf8View("Tbl")) AND item.i_size = Utf8View("petite") OR item.i_category = Utf8View("Men") AND (item.i_color = Utf8View("forest") OR item.i_color = Utf8View("ghost")) AND (item.i_units = Utf8View("Lb") OR item.i_units = Utf8View("Bundle")) AND (item.i_size = Utf8View("medium") OR item.i_size = Utf8View("extra large"))] +physical_plan +01)SortPreservingMergeExec: [i_product_name@0 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_product_name@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[i_product_name@0 as i_product_name], aggr=[], lim=[100] +04)------RepartitionExec: partitioning=Hash([i_product_name@0], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[i_product_name@0 as i_product_name], aggr=[], lim=[100] +06)----------FilterExec: CASE WHEN __always_true@2 IS NULL THEN 0 ELSE item_cnt@1 END > 0, projection=[i_product_name@0] +07)------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(i_manufact@0, i_manufact@1)], projection=[i_product_name@1, item_cnt@2, __always_true@4] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_manufact, i_product_name], file_type=vortex, predicate: i_manufact_id@13 >= 738 AND i_manufact_id@13 <= 778 +09)--------------ProjectionExec: expr=[count(Int64(1))@1 as item_cnt, i_manufact@0 as i_manufact, true as __always_true] +10)----------------AggregateExec: mode=FinalPartitioned, gby=[i_manufact@0 as i_manufact], aggr=[count(Int64(1))] +11)------------------RepartitionExec: partitioning=Hash([i_manufact@0], 4), input_partitions=4 +12)--------------------AggregateExec: mode=Partial, gby=[i_manufact@0 as i_manufact], aggr=[count(Int64(1))] +13)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_manufact], file_type=vortex, predicate: i_category@12 = Women AND ((i_color@17 = powder OR i_color@17 = khaki) AND (i_units@18 = Ounce OR i_units@18 = Oz) AND (i_size@15 = medium OR i_size@15 = extra large) OR (i_color@17 = brown OR i_color@17 = honeydew) AND (i_units@18 = Bunch OR i_units@18 = Ton) AND (i_size@15 = N/A OR i_size@15 = small)) OR i_category@12 = Men AND (i_color@17 = floral OR i_color@17 = deep) AND (i_units@18 = N/A OR i_units@18 = Dozen) AND i_size@15 = petite OR i_category@12 = Men AND (i_color@17 = light OR i_color@17 = cornflower) AND (i_units@18 = Box OR i_units@18 = Pound) AND (i_size@15 = medium OR i_size@15 = extra large) OR i_category@12 = Women AND ((i_color@17 = midnight OR i_color@17 = snow) AND (i_units@18 = Pallet OR i_units@18 = Gross) AND (i_size@15 = medium OR i_size@15 = extra large) OR (i_color@17 = cyan OR i_color@17 = papaya) AND (i_units@18 = Cup OR i_units@18 = Dram) AND (i_size@15 = N/A OR i_size@15 = small)) OR i_category@12 = Men AND (i_color@17 = orange OR i_color@17 = frosted) AND (i_units@18 = Each OR i_units@18 = Tbl) AND i_size@15 = petite OR i_category@12 = Men AND (i_color@17 = forest OR i_color@17 = ghost) AND (i_units@18 = Lb OR i_units@18 = Bundle) AND (i_size@15 = medium OR i_size@15 = extra large) diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q42.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q42.slt.no new file mode 100644 index 00000000000..f6c01955e7a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q42.slt.no @@ -0,0 +1,51 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT dt.d_year, + item.i_category_id, + item.i_category, + sum(ss_ext_sales_price) +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_category_id, + item.i_category +ORDER BY sum(ss_ext_sales_price) DESC,dt.d_year, + item.i_category_id, + item.i_category +LIMIT 100 ; +---- +logical_plan +01)Sort: sum(store_sales.ss_ext_sales_price) DESC NULLS FIRST, dt.d_year ASC NULLS LAST, item.i_category_id ASC NULLS LAST, item.i_category ASC NULLS LAST, fetch=100 +02)--Aggregate: groupBy=[[dt.d_year, item.i_category_id, item.i_category]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +03)----Projection: dt.d_year, store_sales.ss_ext_sales_price, item.i_category_id, item.i_category +04)------Inner Join: store_sales.ss_item_sk = item.i_item_sk +05)--------Projection: dt.d_year, store_sales.ss_item_sk, store_sales.ss_ext_sales_price +06)----------Inner Join: dt.d_date_sk = store_sales.ss_sold_date_sk +07)------------SubqueryAlias: dt +08)--------------Projection: date_dim.d_date_sk, date_dim.d_year +09)----------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(2000) +10)------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(2000)] +11)------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price] +12)--------Projection: item.i_item_sk, item.i_category_id, item.i_category +13)----------Filter: item.i_manager_id = Int64(1) +14)------------TableScan: item projection=[i_item_sk, i_category_id, i_category, i_manager_id], partial_filters=[item.i_manager_id = Int64(1)] +physical_plan +01)SortPreservingMergeExec: [sum(store_sales.ss_ext_sales_price)@3 DESC, d_year@0 ASC NULLS LAST, i_category_id@1 ASC NULLS LAST, i_category@2 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[sum(store_sales.ss_ext_sales_price)@3 DESC, i_category_id@1 ASC NULLS LAST, i_category@2 ASC NULLS LAST], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_category_id@1 as i_category_id, i_category@2 as i_category], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([0]) +04)------RepartitionExec: partitioning=Hash([d_year@0, i_category_id@1, i_category@2], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_category_id@2 as i_category_id, i_category@3 as i_category], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([0]) +06)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[d_year@3, ss_ext_sales_price@5, i_category_id@1, i_category@2] +07)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_category_id, i_category], file_type=vortex, predicate: i_manager_id@20 = 1 +08)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[d_year@1, ss_item_sk@3, ss_ext_sales_price@4] +09)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 2000 +10)--------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q43.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q43.slt.no new file mode 100644 index 00000000000..9c948da0617 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q43.slt.no @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT s_store_name, + s_store_id, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales +FROM date_dim, + store_sales, + store +WHERE d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2000 +GROUP BY s_store_name, + s_store_id +ORDER BY s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +LIMIT 100; +---- +logical_plan +01)Sort: store.s_store_name ASC NULLS LAST, store.s_store_id ASC NULLS LAST, fetch=100 +02)--Projection: store.s_store_name, store.s_store_id, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END) AS sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END) AS mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END) AS tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END) AS wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END) AS thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END) AS fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END) AS sat_sales +03)----Aggregate: groupBy=[[store.s_store_name, store.s_store_id]], aggr=[[sum(CASE WHEN date_dim.d_day_name = Utf8View("Sunday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Monday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Tuesday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Wednesday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Thursday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Friday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Saturday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)]] +04)------Projection: date_dim.d_day_name, store_sales.ss_sales_price, store.s_store_id, store.s_store_name +05)--------Inner Join: store_sales.ss_store_sk = store.s_store_sk +06)----------Projection: date_dim.d_day_name, store_sales.ss_store_sk, store_sales.ss_sales_price +07)------------Inner Join: date_dim.d_date_sk = store_sales.ss_sold_date_sk +08)--------------Projection: date_dim.d_date_sk, date_dim.d_day_name +09)----------------Filter: date_dim.d_year = Int64(2000) +10)------------------TableScan: date_dim projection=[d_date_sk, d_year, d_day_name], partial_filters=[date_dim.d_year = Int64(2000)] +11)--------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_sales_price] +12)----------Projection: store.s_store_sk, store.s_store_id, store.s_store_name +13)------------Filter: store.s_gmt_offset = Decimal128(-5.00,5,2) +14)--------------TableScan: store projection=[s_store_sk, s_store_id, s_store_name, s_gmt_offset], partial_filters=[store.s_gmt_offset = Decimal128(-5.00,5,2)] +physical_plan +01)SortPreservingMergeExec: [s_store_name@0 ASC NULLS LAST, s_store_id@1 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[s_store_name@0 as s_store_name, s_store_id@1 as s_store_id, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END)@2 as sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END)@3 as mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END)@4 as tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END)@5 as wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END)@6 as thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END)@7 as fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)@8 as sat_sales] +03)----SortExec: TopK(fetch=100), expr=[s_store_name@0 ASC NULLS LAST, s_store_id@1 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[s_store_name@0 as s_store_name, s_store_id@1 as s_store_id], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)] +05)--------RepartitionExec: partitioning=Hash([s_store_name@0, s_store_id@1], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[s_store_name@3 as s_store_name, s_store_id@2 as s_store_id], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[d_day_name@3, ss_sales_price@5, s_store_id@1, s_store_name@2] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id, s_store_name], file_type=vortex, predicate: s_gmt_offset@27 = -5.00 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[d_day_name@1, ss_store_sk@3, ss_sales_price@4] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_day_name], file_type=vortex, predicate: d_year@6 = 2000 +11)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q44.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q44.slt.no new file mode 100644 index 00000000000..aadaebf13b2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q44.slt.no @@ -0,0 +1,147 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col ASC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V1)V11 + WHERE rnk < 11) asceding, + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col DESC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V2)V21 + WHERE rnk < 11) descending, + item i1, + item i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk=asceding.item_sk + AND i2.i_item_sk=descending.item_sk +ORDER BY asceding.rnk +LIMIT 100; +---- +logical_plan +01)Sort: asceding.rnk ASC NULLS LAST, fetch=100 +02)--Projection: asceding.rnk, i1.i_product_name AS best_performing, i2.i_product_name AS worst_performing +03)----Inner Join: descending.item_sk = i2.i_item_sk +04)------Projection: asceding.rnk, descending.item_sk, i1.i_product_name +05)--------Inner Join: asceding.item_sk = i1.i_item_sk +06)----------Projection: asceding.item_sk, asceding.rnk, descending.item_sk +07)------------Inner Join: asceding.rnk = descending.rnk +08)--------------SubqueryAlias: asceding +09)----------------SubqueryAlias: v11 +10)------------------Projection: v1.item_sk, rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rnk +11)--------------------Filter: rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW < UInt64(11) +12)----------------------Projection: v1.item_sk, rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +13)------------------------WindowAggr: windowExpr=[[rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +14)--------------------------SubqueryAlias: v1 +15)----------------------------Projection: ss1.ss_item_sk AS item_sk, avg(ss1.ss_net_profit) AS rank_col +16)------------------------------Filter: CAST(avg(ss1.ss_net_profit) AS Decimal128(30, 15)) > CAST(Float64(0.9) * () AS Decimal128(30, 15)) +17)--------------------------------Subquery: +18)----------------------------------Projection: CAST(avg(store_sales.ss_net_profit) AS rank_col AS Float64) +19)------------------------------------Aggregate: groupBy=[[store_sales.ss_store_sk]], aggr=[[avg(store_sales.ss_net_profit)]] +20)--------------------------------------Projection: store_sales.ss_store_sk, store_sales.ss_net_profit +21)----------------------------------------Filter: store_sales.ss_store_sk = Int64(4) AND store_sales.ss_addr_sk IS NULL +22)------------------------------------------TableScan: store_sales projection=[ss_addr_sk, ss_store_sk, ss_net_profit], partial_filters=[store_sales.ss_store_sk = Int64(4), store_sales.ss_addr_sk IS NULL] +23)--------------------------------Aggregate: groupBy=[[ss1.ss_item_sk]], aggr=[[avg(ss1.ss_net_profit)]] +24)----------------------------------SubqueryAlias: ss1 +25)------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_net_profit +26)--------------------------------------Filter: store_sales.ss_store_sk = Int64(4) +27)----------------------------------------TableScan: store_sales projection=[ss_item_sk, ss_store_sk, ss_net_profit], partial_filters=[store_sales.ss_store_sk = Int64(4)] +28)--------------SubqueryAlias: descending +29)----------------SubqueryAlias: v21 +30)------------------Projection: v2.item_sk, rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rnk +31)--------------------Filter: rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW < UInt64(11) +32)----------------------Projection: v2.item_sk, rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +33)------------------------WindowAggr: windowExpr=[[rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +34)--------------------------SubqueryAlias: v2 +35)----------------------------Projection: ss1.ss_item_sk AS item_sk, avg(ss1.ss_net_profit) AS rank_col +36)------------------------------Filter: CAST(avg(ss1.ss_net_profit) AS Decimal128(30, 15)) > CAST(Float64(0.9) * () AS Decimal128(30, 15)) +37)--------------------------------Subquery: +38)----------------------------------Projection: CAST(avg(store_sales.ss_net_profit) AS rank_col AS Float64) +39)------------------------------------Aggregate: groupBy=[[store_sales.ss_store_sk]], aggr=[[avg(store_sales.ss_net_profit)]] +40)--------------------------------------Projection: store_sales.ss_store_sk, store_sales.ss_net_profit +41)----------------------------------------Filter: store_sales.ss_store_sk = Int64(4) AND store_sales.ss_addr_sk IS NULL +42)------------------------------------------TableScan: store_sales projection=[ss_addr_sk, ss_store_sk, ss_net_profit], partial_filters=[store_sales.ss_store_sk = Int64(4), store_sales.ss_addr_sk IS NULL] +43)--------------------------------Aggregate: groupBy=[[ss1.ss_item_sk]], aggr=[[avg(ss1.ss_net_profit)]] +44)----------------------------------SubqueryAlias: ss1 +45)------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_net_profit +46)--------------------------------------Filter: store_sales.ss_store_sk = Int64(4) +47)----------------------------------------TableScan: store_sales projection=[ss_item_sk, ss_store_sk, ss_net_profit], partial_filters=[store_sales.ss_store_sk = Int64(4)] +48)----------SubqueryAlias: i1 +49)------------TableScan: item projection=[i_item_sk, i_product_name] +50)------SubqueryAlias: i2 +51)--------TableScan: item projection=[i_item_sk, i_product_name] +physical_plan +01)ScalarSubqueryExec: subqueries=1 +02)--SortExec: TopK(fetch=100), expr=[rnk@0 ASC NULLS LAST], preserve_partitioning=[false] +03)----ProjectionExec: expr=[rnk@0 as rnk, i_product_name@1 as best_performing, i_product_name@2 as worst_performing] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_sk@1, i_item_sk@0)], projection=[rnk@0, i_product_name@2, i_product_name@4] +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_sk@0, i_item_sk@0)], projection=[rnk@1, item_sk@2, i_product_name@4] +06)----------CoalescePartitionsExec +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(rnk@1, rnk@1)], projection=[item_sk@0, rnk@1, item_sk@2] +08)--------------CoalescePartitionsExec +09)----------------ProjectionExec: expr=[item_sk@0 as item_sk, rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@1 as rnk] +10)------------------FilterExec: rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@1 < 11 +11)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1, maintains_sort_order=true +12)----------------------ProjectionExec: expr=[item_sk@0 as item_sk, rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 as rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW] +13)------------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [v1.rank_col ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +14)--------------------------SortPreservingMergeExec: [rank_col@1 ASC NULLS LAST] +15)----------------------------ProjectionExec: expr=[ss_item_sk@0 as item_sk, avg(ss1.ss_net_profit)@1 as rank_col] +16)------------------------------SortExec: expr=[avg(ss1.ss_net_profit)@1 ASC NULLS LAST], preserve_partitioning=[true] +17)--------------------------------FilterExec: CAST(avg(ss1.ss_net_profit)@1 AS Decimal128(30, 15)) > CAST(0.9 * scalar_subquery() AS Decimal128(30, 15)) +18)----------------------------------AggregateExec: mode=FinalPartitioned, gby=[ss_item_sk@0 as ss_item_sk], aggr=[avg(ss1.ss_net_profit)] +19)------------------------------------RepartitionExec: partitioning=Hash([ss_item_sk@0], 4), input_partitions=4 +20)--------------------------------------AggregateExec: mode=Partial, gby=[ss_item_sk@0 as ss_item_sk], aggr=[avg(ss1.ss_net_profit)] +21)----------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_item_sk, ss_net_profit], file_type=vortex, predicate: ss_store_sk@7 = 4 +22)--------------ProjectionExec: expr=[item_sk@0 as item_sk, rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@1 as rnk] +23)----------------FilterExec: rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@1 < 11 +24)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1, maintains_sort_order=true +25)--------------------ProjectionExec: expr=[item_sk@0 as item_sk, rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 as rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW] +26)----------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [v2.rank_col DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +27)------------------------SortPreservingMergeExec: [rank_col@1 DESC] +28)--------------------------ProjectionExec: expr=[ss_item_sk@0 as item_sk, avg(ss1.ss_net_profit)@1 as rank_col] +29)----------------------------SortExec: expr=[avg(ss1.ss_net_profit)@1 DESC], preserve_partitioning=[true] +30)------------------------------FilterExec: CAST(avg(ss1.ss_net_profit)@1 AS Decimal128(30, 15)) > CAST(0.9 * scalar_subquery() AS Decimal128(30, 15)) +31)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[ss_item_sk@0 as ss_item_sk], aggr=[avg(ss1.ss_net_profit)] +32)----------------------------------RepartitionExec: partitioning=Hash([ss_item_sk@0], 4), input_partitions=4 +33)------------------------------------AggregateExec: mode=Partial, gby=[ss_item_sk@0 as ss_item_sk], aggr=[avg(ss1.ss_net_profit)] +34)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_item_sk, ss_net_profit], file_type=vortex, predicate: ss_store_sk@7 = 4 +35)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_product_name], file_type=vortex +36)--------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_product_name], file_type=vortex +37)--ProjectionExec: expr=[CAST(avg(store_sales.ss_net_profit)@1 AS Float64) as rank_col] +38)----AggregateExec: mode=FinalPartitioned, gby=[ss_store_sk@0 as ss_store_sk], aggr=[avg(store_sales.ss_net_profit)], ordering_mode=Sorted +39)------RepartitionExec: partitioning=Hash([ss_store_sk@0], 4), input_partitions=4 +40)--------AggregateExec: mode=Partial, gby=[ss_store_sk@0 as ss_store_sk], aggr=[avg(store_sales.ss_net_profit)], ordering_mode=Sorted +41)----------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_store_sk, ss_net_profit], file_type=vortex, predicate: ss_store_sk@7 = 4 AND ss_addr_sk@6 IS NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q45.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q45.slt.no new file mode 100644 index 00000000000..3e0fcda39e2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q45.slt.no @@ -0,0 +1,91 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT ca_zip, + ca_city, + sum(ws_sales_price) +FROM web_sales, + customer, + customer_address, + date_dim, + item +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND (SUBSTRING(ca_zip,1,5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_item_sk IN (2, + 3, + 5, + 7, + 11, + 13, + 17, + 19, + 23, + 29) )) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip, + ca_city +ORDER BY ca_zip, + ca_city +LIMIT 100; +---- +logical_plan +01)Sort: customer_address.ca_zip ASC NULLS LAST, customer_address.ca_city ASC NULLS LAST, fetch=100 +02)--Aggregate: groupBy=[[customer_address.ca_zip, customer_address.ca_city]], aggr=[[sum(web_sales.ws_sales_price)]] +03)----Projection: web_sales.ws_sales_price, customer_address.ca_city, customer_address.ca_zip +04)------Filter: substr(customer_address.ca_zip, Int64(1), Int64(5)) IN ([Utf8View("85669"), Utf8View("86197"), Utf8View("88274"), Utf8View("83405"), Utf8View("86475"), Utf8View("85392"), Utf8View("85460"), Utf8View("80348"), Utf8View("81792")]) OR __correlated_sq_1.mark +05)--------Projection: web_sales.ws_sales_price, customer_address.ca_city, customer_address.ca_zip, __correlated_sq_1.mark +06)----------LeftMark Join: item.i_item_id = __correlated_sq_1.i_item_id +07)------------Projection: web_sales.ws_sales_price, customer_address.ca_city, customer_address.ca_zip, item.i_item_id +08)--------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +09)----------------Projection: web_sales.ws_item_sk, web_sales.ws_sales_price, customer_address.ca_city, customer_address.ca_zip +10)------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +11)--------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_sales_price, customer_address.ca_city, customer_address.ca_zip +12)----------------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +13)------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_sales_price, customer.c_current_addr_sk +14)--------------------------Inner Join: web_sales.ws_bill_customer_sk = customer.c_customer_sk +15)----------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk, ws_sales_price] +16)----------------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +17)------------------------TableScan: customer_address projection=[ca_address_sk, ca_city, ca_zip] +18)--------------------Projection: date_dim.d_date_sk +19)----------------------Filter: date_dim.d_qoy = Int64(2) AND date_dim.d_year = Int64(2001) +20)------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(2), date_dim.d_year = Int64(2001)] +21)----------------TableScan: item projection=[i_item_sk, i_item_id] +22)------------SubqueryAlias: __correlated_sq_1 +23)--------------Projection: item.i_item_id +24)----------------Filter: item.i_item_sk IN ([Int64(2), Int64(3), Int64(5), Int64(7), Int64(11), Int64(13), Int64(17), Int64(19), Int64(23), Int64(29)]) +25)------------------TableScan: item projection=[i_item_sk, i_item_id], partial_filters=[item.i_item_sk IN ([Int64(2), Int64(3), Int64(5), Int64(7), Int64(11), Int64(13), Int64(17), Int64(19), Int64(23), Int64(29)])] +physical_plan +01)SortPreservingMergeExec: [ca_zip@0 ASC NULLS LAST, ca_city@1 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[ca_zip@0 ASC NULLS LAST, ca_city@1 ASC NULLS LAST], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[ca_zip@0 as ca_zip, ca_city@1 as ca_city], aggr=[sum(web_sales.ws_sales_price)] +04)------RepartitionExec: partitioning=Hash([ca_zip@0, ca_city@1], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[ca_zip@2 as ca_zip, ca_city@1 as ca_city], aggr=[sum(web_sales.ws_sales_price)] +06)----------FilterExec: substr(ca_zip@2, 1, 5) IN (SET) ([85669, 86197, 88274, 83405, 86475, 85392, 85460, 80348, 81792]) OR mark@3, projection=[ws_sales_price@0, ca_city@1, ca_zip@2] +07)------------HashJoinExec: mode=CollectLeft, join_type=RightMark, on=[(i_item_id@0, i_item_id@3)], projection=[ws_sales_price@0, ca_city@1, ca_zip@2, mark@4] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_item_sk@0 IN (SET) ([2, 3, 5, 7, 11, 13, 17, 19, 23, 29]) +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@0)], projection=[ws_sales_price@3, ca_city@4, ca_zip@5, i_item_id@1] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_sales_price@3, ca_city@4, ca_zip@5] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_qoy@10 = 2 AND d_year@6 = 2001 +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@3)], projection=[ws_sold_date_sk@3, ws_item_sk@4, ws_sales_price@5, ca_city@1, ca_zip@2] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_city, ca_zip], file_type=vortex +15)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@2)], projection=[ws_sold_date_sk@2, ws_item_sk@3, ws_sales_price@5, c_current_addr_sk@1] +16)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex +17)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk, ws_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q46.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q46.slt.no new file mode 100644 index 00000000000..60e23576da0 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q46.slt.no @@ -0,0 +1,103 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_dow IN (6, + 0) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + ca_city NULLS FIRST, + bought_city NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: customer.c_last_name ASC NULLS FIRST, customer.c_first_name ASC NULLS FIRST, current_addr.ca_city ASC NULLS FIRST, dn.bought_city ASC NULLS FIRST, dn.ss_ticket_number ASC NULLS FIRST, fetch=100 +02)--Projection: customer.c_last_name, customer.c_first_name, current_addr.ca_city, dn.bought_city, dn.ss_ticket_number, dn.amt, dn.profit +03)----Inner Join: customer.c_current_addr_sk = current_addr.ca_address_sk Filter: dn.bought_city != current_addr.ca_city +04)------Projection: dn.ss_ticket_number, dn.bought_city, dn.amt, dn.profit, customer.c_current_addr_sk, customer.c_first_name, customer.c_last_name +05)--------Inner Join: dn.ss_customer_sk = customer.c_customer_sk +06)----------SubqueryAlias: dn +07)------------Projection: store_sales.ss_ticket_number, store_sales.ss_customer_sk, customer_address.ca_city AS bought_city, sum(store_sales.ss_coupon_amt) AS amt, sum(store_sales.ss_net_profit) AS profit +08)--------------Aggregate: groupBy=[[store_sales.ss_ticket_number, store_sales.ss_customer_sk, store_sales.ss_addr_sk, customer_address.ca_city]], aggr=[[sum(store_sales.ss_coupon_amt), sum(store_sales.ss_net_profit)]] +09)----------------Projection: store_sales.ss_customer_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit, customer_address.ca_city +10)------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +11)--------------------Projection: store_sales.ss_customer_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit +12)----------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +13)------------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit +14)--------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +15)----------------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit +16)------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +17)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_ticket_number, ss_coupon_amt, ss_net_profit] +18)--------------------------------Projection: date_dim.d_date_sk +19)----------------------------------Filter: (date_dim.d_dow = Int64(6) OR date_dim.d_dow = Int64(0)) AND (date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)) +20)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_dow], partial_filters=[date_dim.d_dow = Int64(6) OR date_dim.d_dow = Int64(0), date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)] +21)----------------------------Projection: store.s_store_sk +22)------------------------------Filter: store.s_city = Utf8View("Fairview") OR store.s_city = Utf8View("Midway") +23)--------------------------------TableScan: store projection=[s_store_sk, s_city], partial_filters=[store.s_city = Utf8View("Fairview") OR store.s_city = Utf8View("Midway")] +24)------------------------Projection: household_demographics.hd_demo_sk +25)--------------------------Filter: household_demographics.hd_dep_count = Int64(4) OR household_demographics.hd_vehicle_count = Int32(3) +26)----------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) OR household_demographics.hd_vehicle_count = Int32(3)] +27)--------------------TableScan: customer_address projection=[ca_address_sk, ca_city] +28)----------TableScan: customer projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name] +29)------SubqueryAlias: current_addr +30)--------TableScan: customer_address projection=[ca_address_sk, ca_city] +physical_plan +01)SortPreservingMergeExec: [c_last_name@0 ASC, c_first_name@1 ASC, ca_city@2 ASC, bought_city@3 ASC, ss_ticket_number@4 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_last_name@0 ASC, c_first_name@1 ASC, ca_city@2 ASC, bought_city@3 ASC, ss_ticket_number@4 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@4)], filter=bought_city@0 != ca_city@1, projection=[c_last_name@8, c_first_name@7, ca_city@1, bought_city@3, ss_ticket_number@2, amt@4, profit@5] +04)------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_city], file_type=vortex +05)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[ss_ticket_number@4, bought_city@6, amt@7, profit@8, c_current_addr_sk@1, c_first_name@2, c_last_name@3] +06)--------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name], file_type=vortex +07)--------ProjectionExec: expr=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, ca_city@3 as bought_city, sum(store_sales.ss_coupon_amt)@4 as amt, sum(store_sales.ss_net_profit)@5 as profit] +08)----------AggregateExec: mode=FinalPartitioned, gby=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, ss_addr_sk@2 as ss_addr_sk, ca_city@3 as ca_city], aggr=[sum(store_sales.ss_coupon_amt), sum(store_sales.ss_net_profit)] +09)------------RepartitionExec: partitioning=Hash([ss_ticket_number@0, ss_customer_sk@1, ss_addr_sk@2, ca_city@3], 4), input_partitions=4 +10)--------------AggregateExec: mode=Partial, gby=[ss_ticket_number@2 as ss_ticket_number, ss_customer_sk@0 as ss_customer_sk, ss_addr_sk@1 as ss_addr_sk, ca_city@5 as ca_city], aggr=[sum(store_sales.ss_coupon_amt), sum(store_sales.ss_net_profit)] +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_customer_sk@2, ss_addr_sk@3, ss_ticket_number@4, ss_coupon_amt@5, ss_net_profit@6, ca_city@1] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_city], file_type=vortex +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_customer_sk@1, ss_addr_sk@3, ss_ticket_number@4, ss_coupon_amt@5, ss_net_profit@6] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 OR hd_vehicle_count@4 = 3 +15)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[ss_customer_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_ticket_number@5, ss_coupon_amt@6, ss_net_profit@7] +16)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_city@22 = Fairview OR s_city@22 = Midway +17)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@2, ss_hdemo_sk@3, ss_addr_sk@4, ss_store_sk@5, ss_ticket_number@6, ss_coupon_amt@7, ss_net_profit@8] +18)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: (d_dow@7 = 6 OR d_dow@7 = 0) AND (d_year@6 = 1999 OR d_year@6 = 2000 OR d_year@6 = 2001) +19)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_ticket_number, ss_coupon_amt, ss_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q47.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q47.slt.no new file mode 100644 index 00000000000..9fc889c7418 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q47.slt.no @@ -0,0 +1,190 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH v1 AS + (SELECT i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name + ORDER BY d_year, + d_moy) rn + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.s_store_name, + v1.s_company_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +LIMIT 100; +---- +logical_plan +01)Sort: v2.sum_sales - v2.avg_monthly_sales ASC NULLS LAST, v2.i_category ASC NULLS LAST, v2.i_brand ASC NULLS LAST, v2.s_store_name ASC NULLS LAST, v2.s_company_name ASC NULLS LAST, v2.d_year ASC NULLS LAST, v2.d_moy ASC NULLS LAST, v2.psum ASC NULLS LAST, v2.nsum ASC NULLS LAST, fetch=100 +02)--SubqueryAlias: v2 +03)----Projection: v1.i_category, v1.i_brand, v1.s_store_name, v1.s_company_name, v1.d_year, v1.d_moy, v1.avg_monthly_sales, v1.sum_sales, v1_lag.sum_sales AS psum, v1_lead.sum_sales AS nsum +04)------Inner Join: v1.i_category = v1_lead.i_category, v1.i_brand = v1_lead.i_brand, v1.s_store_name = v1_lead.s_store_name, v1.s_company_name = v1_lead.s_company_name, CAST(v1.rn AS Decimal128(21, 0)) = CAST(v1_lead.rn AS Decimal128(20, 0)) - Decimal128(1,20,0) +05)--------Projection: v1.i_category, v1.i_brand, v1.s_store_name, v1.s_company_name, v1.d_year, v1.d_moy, v1.sum_sales, v1.avg_monthly_sales, v1.rn, v1_lag.sum_sales +06)----------Inner Join: v1.i_category = v1_lag.i_category, v1.i_brand = v1_lag.i_brand, v1.s_store_name = v1_lag.s_store_name, v1.s_company_name = v1_lag.s_company_name, CAST(v1.rn AS Decimal128(21, 0)) = CAST(v1_lag.rn AS Decimal128(20, 0)) + Decimal128(1,20,0) +07)------------SubqueryAlias: v1 +08)--------------Projection: item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year, date_dim.d_moy, sum(store_sales.ss_sales_price) AS sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS avg_monthly_sales, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rn +09)----------------Filter: __common_expr_3 AND CASE WHEN __common_expr_3 THEN abs(sum(store_sales.ss_sales_price) - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ELSE Decimal128(NULL,32,10) END > Decimal128(0.1000000000,32,10) +10)------------------Projection: avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING > Decimal128(0.000000,21,6) AS __common_expr_3, item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year, date_dim.d_moy, sum(store_sales.ss_sales_price), rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING +11)--------------------WindowAggr: windowExpr=[[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +12)----------------------Filter: date_dim.d_year = Int64(1999) +13)------------------------WindowAggr: windowExpr=[[rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +14)--------------------------Aggregate: groupBy=[[item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year, date_dim.d_moy]], aggr=[[sum(store_sales.ss_sales_price)]] +15)----------------------------Projection: item.i_brand, item.i_category, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy, store.s_store_name, store.s_company_name +16)------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +17)--------------------------------Projection: item.i_brand, item.i_category, store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy +18)----------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +19)------------------------------------Projection: item.i_brand, item.i_category, store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +20)--------------------------------------Inner Join: item.i_item_sk = store_sales.ss_item_sk +21)----------------------------------------TableScan: item projection=[i_item_sk, i_brand, i_category] +22)----------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +23)------------------------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1) +24)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1)] +25)--------------------------------TableScan: store projection=[s_store_sk, s_store_name, s_company_name] +26)------------SubqueryAlias: v1_lag +27)--------------SubqueryAlias: v1 +28)----------------Projection: item.i_category, item.i_brand, store.s_store_name, store.s_company_name, sum(store_sales.ss_sales_price) AS sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rn +29)------------------WindowAggr: windowExpr=[[rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +30)--------------------Aggregate: groupBy=[[item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year, date_dim.d_moy]], aggr=[[sum(store_sales.ss_sales_price)]] +31)----------------------Projection: item.i_brand, item.i_category, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy, store.s_store_name, store.s_company_name +32)------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +33)--------------------------Projection: item.i_brand, item.i_category, store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy +34)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +35)------------------------------Projection: item.i_brand, item.i_category, store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +36)--------------------------------Inner Join: item.i_item_sk = store_sales.ss_item_sk +37)----------------------------------TableScan: item projection=[i_item_sk, i_brand, i_category] +38)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +39)------------------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1) +40)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1)] +41)--------------------------TableScan: store projection=[s_store_sk, s_store_name, s_company_name] +42)--------SubqueryAlias: v1_lead +43)----------SubqueryAlias: v1 +44)------------Projection: item.i_category, item.i_brand, store.s_store_name, store.s_company_name, sum(store_sales.ss_sales_price) AS sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rn +45)--------------WindowAggr: windowExpr=[[rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +46)----------------Aggregate: groupBy=[[item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year, date_dim.d_moy]], aggr=[[sum(store_sales.ss_sales_price)]] +47)------------------Projection: item.i_brand, item.i_category, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy, store.s_store_name, store.s_company_name +48)--------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +49)----------------------Projection: item.i_brand, item.i_category, store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy +50)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +51)--------------------------Projection: item.i_brand, item.i_category, store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +52)----------------------------Inner Join: item.i_item_sk = store_sales.ss_item_sk +53)------------------------------TableScan: item projection=[i_item_sk, i_brand, i_category] +54)------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +55)--------------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1) +56)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1)] +57)----------------------TableScan: store projection=[s_store_sk, s_store_name, s_company_name] +physical_plan +01)SortPreservingMergeExec: [sum_sales@7 - avg_monthly_sales@6 ASC NULLS LAST, i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST, s_company_name@3 ASC NULLS LAST, d_year@4 ASC NULLS LAST, d_moy@5 ASC NULLS LAST, psum@8 ASC NULLS LAST, nsum@9 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[sum_sales@7 - avg_monthly_sales@6 ASC NULLS LAST, i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST, s_company_name@3 ASC NULLS LAST, d_moy@5 ASC NULLS LAST, psum@8 ASC NULLS LAST, nsum@9 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy, avg_monthly_sales@6 as avg_monthly_sales, sum_sales@7 as sum_sales, sum_sales@8 as psum, sum_sales@9 as nsum] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_category@0, i_category@0), (i_brand@1, i_brand@1), (s_store_name@2, s_store_name@2), (s_company_name@3, s_company_name@3), (CAST(v1.rn AS Decimal128(21, 0))@10, v1_lead.rn - Decimal128(1,20,0)@6)], projection=[i_category@0, i_brand@1, s_store_name@2, s_company_name@3, d_year@4, d_moy@5, avg_monthly_sales@7, sum_sales@6, sum_sales@9, sum_sales@15] +05)--------CoalescePartitionsExec +06)----------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy, sum_sales@6 as sum_sales, avg_monthly_sales@7 as avg_monthly_sales, rn@8 as rn, sum_sales@9 as sum_sales, CAST(rn@8 AS Decimal128(21, 0)) as CAST(v1.rn AS Decimal128(21, 0))] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_category@0, i_category@0), (i_brand@1, i_brand@1), (s_store_name@2, s_store_name@2), (s_company_name@3, s_company_name@3), (CAST(v1.rn AS Decimal128(21, 0))@9, v1_lag.rn + Decimal128(1,20,0)@6)], projection=[i_category@0, i_brand@1, s_store_name@2, s_company_name@3, d_year@4, d_moy@5, sum_sales@6, avg_monthly_sales@7, rn@8, sum_sales@14] +08)--------------CoalescePartitionsExec +09)----------------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy, sum(store_sales.ss_sales_price)@6 as sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7 as avg_monthly_sales, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@8 as rn, CAST(rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@8 AS Decimal128(21, 0)) as CAST(v1.rn AS Decimal128(21, 0))] +10)------------------FilterExec: __common_expr_3@0 AND CASE WHEN __common_expr_3@0 THEN abs(sum(store_sales.ss_sales_price)@7 - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@9) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@9 END > 0.1000000000, projection=[i_category@1, i_brand@2, s_store_name@3, s_company_name@4, d_year@5, d_moy@6, sum(store_sales.ss_sales_price)@7, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@9, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@8] +11)--------------------ProjectionExec: expr=[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@8 > 0.000000 as __common_expr_3, i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy, sum(store_sales.ss_sales_price)@6 as sum(store_sales.ss_sales_price), rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 as rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@8 as avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING] +12)----------------------WindowAggExec: wdw=[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(21, 6), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +13)------------------------FilterExec: d_year@4 = 1999 +14)--------------------------BoundedWindowAggExec: wdw=[rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +15)----------------------------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST, s_company_name@3 ASC NULLS LAST, d_year@4 ASC NULLS LAST, d_moy@5 ASC NULLS LAST], preserve_partitioning=[true] +16)------------------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, s_store_name@2, s_company_name@3], 4), input_partitions=4 +17)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +18)----------------------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, s_store_name@2, s_company_name@3, d_year@4, d_moy@5], 4), input_partitions=4 +19)------------------------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category, i_brand@0 as i_brand, s_store_name@5 as s_store_name, s_company_name@6 as s_company_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +20)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[i_brand@3, i_category@4, ss_sales_price@6, d_year@7, d_moy@8, s_store_name@1, s_company_name@2] +21)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_company_name], file_type=vortex +22)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@2)], projection=[i_brand@3, i_category@4, ss_store_sk@6, ss_sales_price@7, d_year@1, d_moy@2] +23)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 1998 AND d_moy@8 = 12 OR d_year@6 = 2000 AND d_moy@8 = 1 +24)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[i_brand@1, i_category@2, ss_sold_date_sk@3, ss_store_sk@5, ss_sales_price@6] +25)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_category], file_type=vortex +26)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex +27)--------------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, sum(store_sales.ss_sales_price)@6 as sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 as rn, CAST(rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 AS Decimal128(20, 0)) + 1 as v1_lag.rn + Decimal128(1,20,0)] +28)----------------BoundedWindowAggExec: wdw=[rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +29)------------------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST, s_company_name@3 ASC NULLS LAST, d_year@4 ASC NULLS LAST, d_moy@5 ASC NULLS LAST], preserve_partitioning=[true] +30)--------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, s_store_name@2, s_company_name@3], 4), input_partitions=4 +31)----------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +32)------------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, s_store_name@2, s_company_name@3, d_year@4, d_moy@5], 4), input_partitions=4 +33)--------------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category, i_brand@0 as i_brand, s_store_name@5 as s_store_name, s_company_name@6 as s_company_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +34)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[i_brand@3, i_category@4, ss_sales_price@6, d_year@7, d_moy@8, s_store_name@1, s_company_name@2] +35)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_company_name], file_type=vortex +36)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@2)], projection=[i_brand@3, i_category@4, ss_store_sk@6, ss_sales_price@7, d_year@1, d_moy@2] +37)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 1998 AND d_moy@8 = 12 OR d_year@6 = 2000 AND d_moy@8 = 1 +38)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[i_brand@1, i_category@2, ss_sold_date_sk@3, ss_store_sk@5, ss_sales_price@6] +39)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_category], file_type=vortex +40)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex +41)--------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, sum(store_sales.ss_sales_price)@6 as sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 as rn, CAST(rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 AS Decimal128(20, 0)) - 1 as v1_lead.rn - Decimal128(1,20,0)] +42)----------BoundedWindowAggExec: wdw=[rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +43)------------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, s_store_name@2 ASC NULLS LAST, s_company_name@3 ASC NULLS LAST, d_year@4 ASC NULLS LAST, d_moy@5 ASC NULLS LAST], preserve_partitioning=[true] +44)--------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, s_store_name@2, s_company_name@3], 4), input_partitions=4 +45)----------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_brand@1 as i_brand, s_store_name@2 as s_store_name, s_company_name@3 as s_company_name, d_year@4 as d_year, d_moy@5 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +46)------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, s_store_name@2, s_company_name@3, d_year@4, d_moy@5], 4), input_partitions=4 +47)--------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category, i_brand@0 as i_brand, s_store_name@5 as s_store_name, s_company_name@6 as s_company_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +48)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[i_brand@3, i_category@4, ss_sales_price@6, d_year@7, d_moy@8, s_store_name@1, s_company_name@2] +49)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_company_name], file_type=vortex +50)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@2)], projection=[i_brand@3, i_category@4, ss_store_sk@6, ss_sales_price@7, d_year@1, d_moy@2] +51)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 1998 AND d_moy@8 = 12 OR d_year@6 = 2000 AND d_moy@8 = 1 +52)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[i_brand@1, i_category@2, ss_sold_date_sk@3, ss_store_sk@5, ss_sales_price@6] +53)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_category], file_type=vortex +54)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q48.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q48.slt.no new file mode 100644 index 00000000000..744a76972ce --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q48.slt.no @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT SUM (ss_quantity) +FROM store_sales, + store, + customer_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2000 + AND ((cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = '4 yr Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 150.00 AND 200.00)) + AND ((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('CO', + 'OH', + 'TX') + AND ss_net_profit BETWEEN 0 AND 2000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', + 'MN', + 'KY') + AND ss_net_profit BETWEEN 150 AND 3000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', + 'CA', + 'MS') + AND ss_net_profit BETWEEN 50 AND 25000)) ; +---- +logical_plan +01)Aggregate: groupBy=[[]], aggr=[[sum(store_sales.ss_quantity)]] +02)--Projection: store_sales.ss_quantity +03)----Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +04)------Projection: store_sales.ss_sold_date_sk, store_sales.ss_quantity +05)--------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk Filter: (customer_address.ca_state = Utf8View("CO") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("TX")) AND store_sales.ss_net_profit >= Decimal128(0.00,7,2) AND store_sales.ss_net_profit <= Decimal128(2000.00,7,2) OR (customer_address.ca_state = Utf8View("OR") OR customer_address.ca_state = Utf8View("MN") OR customer_address.ca_state = Utf8View("KY")) AND store_sales.ss_net_profit >= Decimal128(150.00,7,2) AND store_sales.ss_net_profit <= Decimal128(3000.00,7,2) OR (customer_address.ca_state = Utf8View("VA") OR customer_address.ca_state = Utf8View("CA") OR customer_address.ca_state = Utf8View("MS")) AND store_sales.ss_net_profit >= Decimal128(50.00,7,2) AND store_sales.ss_net_profit <= Decimal128(25000.00,7,2) +06)----------Projection: store_sales.ss_sold_date_sk, store_sales.ss_addr_sk, store_sales.ss_quantity, store_sales.ss_net_profit +07)------------Inner Join: store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("4 yr Degree") AND store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) OR customer_demographics.cd_marital_status = Utf8View("D") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") AND store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") AND store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2) +08)--------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_cdemo_sk, store_sales.ss_addr_sk, store_sales.ss_quantity, store_sales.ss_sales_price, store_sales.ss_net_profit +09)----------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +10)------------------Filter: (store_sales.ss_net_profit >= Decimal128(0.00,7,2) AND store_sales.ss_net_profit <= Decimal128(2000.00,7,2) OR store_sales.ss_net_profit >= Decimal128(150.00,7,2) AND store_sales.ss_net_profit <= Decimal128(3000.00,7,2) OR store_sales.ss_net_profit >= Decimal128(50.00,7,2) AND store_sales.ss_net_profit <= Decimal128(25000.00,7,2)) AND (store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) OR store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) OR store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2)) +11)--------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_cdemo_sk, ss_addr_sk, ss_store_sk, ss_quantity, ss_sales_price, ss_net_profit], partial_filters=[store_sales.ss_net_profit >= Decimal128(0.00,7,2) AND store_sales.ss_net_profit <= Decimal128(2000.00,7,2) OR store_sales.ss_net_profit >= Decimal128(150.00,7,2) AND store_sales.ss_net_profit <= Decimal128(3000.00,7,2) OR store_sales.ss_net_profit >= Decimal128(50.00,7,2) AND store_sales.ss_net_profit <= Decimal128(25000.00,7,2), store_sales.ss_sales_price >= Decimal128(100.00,7,2) AND store_sales.ss_sales_price <= Decimal128(150.00,7,2) OR store_sales.ss_sales_price >= Decimal128(50.00,7,2) AND store_sales.ss_sales_price <= Decimal128(100.00,7,2) OR store_sales.ss_sales_price >= Decimal128(150.00,7,2) AND store_sales.ss_sales_price <= Decimal128(200.00,7,2)] +12)------------------TableScan: store projection=[s_store_sk] +13)--------------Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("4 yr Degree") OR customer_demographics.cd_marital_status = Utf8View("D") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") +14)----------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("4 yr Degree") OR customer_demographics.cd_marital_status = Utf8View("D") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College")] +15)----------Projection: customer_address.ca_address_sk, customer_address.ca_state +16)------------Filter: customer_address.ca_country = Utf8View("United States") AND customer_address.ca_state IN ([Utf8View("CO"), Utf8View("OH"), Utf8View("TX"), Utf8View("OR"), Utf8View("MN"), Utf8View("KY"), Utf8View("VA"), Utf8View("CA"), Utf8View("MS")]) AND (customer_address.ca_state = Utf8View("CO") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("OR") OR customer_address.ca_state = Utf8View("MN") OR customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("VA") OR customer_address.ca_state = Utf8View("CA") OR customer_address.ca_state = Utf8View("MS")) +17)--------------TableScan: customer_address projection=[ca_address_sk, ca_state, ca_country], partial_filters=[customer_address.ca_country = Utf8View("United States"), customer_address.ca_state IN ([Utf8View("CO"), Utf8View("OH"), Utf8View("TX"), Utf8View("OR"), Utf8View("MN"), Utf8View("KY"), Utf8View("VA"), Utf8View("CA"), Utf8View("MS")]), customer_address.ca_state = Utf8View("CO") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("TX") OR customer_address.ca_state = Utf8View("OR") OR customer_address.ca_state = Utf8View("MN") OR customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("VA") OR customer_address.ca_state = Utf8View("CA") OR customer_address.ca_state = Utf8View("MS")] +18)------Projection: date_dim.d_date_sk +19)--------Filter: date_dim.d_year = Int64(2000) +20)----------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +physical_plan +01)AggregateExec: mode=Final, gby=[], aggr=[sum(store_sales.ss_quantity)] +02)--CoalescePartitionsExec +03)----AggregateExec: mode=Partial, gby=[], aggr=[sum(store_sales.ss_quantity)] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_quantity@2] +05)--------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +06)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], filter=(ca_state@1 = CO OR ca_state@1 = OH OR ca_state@1 = TX) AND ss_net_profit@0 >= 0.00 AND ss_net_profit@0 <= 2000.00 OR (ca_state@1 = OR OR ca_state@1 = MN OR ca_state@1 = KY) AND ss_net_profit@0 >= 150.00 AND ss_net_profit@0 <= 3000.00 OR (ca_state@1 = VA OR ca_state@1 = CA OR ca_state@1 = MS) AND ss_net_profit@0 >= 50.00 AND ss_net_profit@0 <= 25000.00, projection=[ss_sold_date_sk@2, ss_quantity@4] +07)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex, predicate: ca_country@10 = United States AND ca_state@8 IN (SET) ([CO, OH, TX, OR, MN, KY, VA, CA, MS]) AND (ca_state@8 = CO OR ca_state@8 = OH OR ca_state@8 = TX OR ca_state@8 = OR OR ca_state@8 = MN OR ca_state@8 = KY OR ca_state@8 = VA OR ca_state@8 = CA OR ca_state@8 = MS) +08)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, ss_cdemo_sk@1)], filter=cd_marital_status@1 = M AND cd_education_status@2 = 4 yr Degree AND ss_sales_price@0 >= 100.00 AND ss_sales_price@0 <= 150.00 OR cd_marital_status@1 = D AND cd_education_status@2 = 2 yr Degree AND ss_sales_price@0 >= 50.00 AND ss_sales_price@0 <= 100.00 OR cd_marital_status@1 = S AND cd_education_status@2 = College AND ss_sales_price@0 >= 150.00 AND ss_sales_price@0 <= 200.00, projection=[ss_sold_date_sk@3, ss_addr_sk@5, ss_quantity@6, ss_net_profit@8] +09)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status, cd_education_status], file_type=vortex, predicate: cd_marital_status@2 = M AND cd_education_status@3 = 4 yr Degree OR cd_marital_status@2 = D AND cd_education_status@3 = 2 yr Degree OR cd_marital_status@2 = S AND cd_education_status@3 = College +10)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[ss_sold_date_sk@1, ss_cdemo_sk@2, ss_addr_sk@3, ss_quantity@5, ss_sales_price@6, ss_net_profit@7] +11)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex +12)--------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_cdemo_sk, ss_addr_sk, ss_store_sk, ss_quantity, ss_sales_price, ss_net_profit], file_type=vortex, predicate: (ss_net_profit@22 >= 0.00 AND ss_net_profit@22 <= 2000.00 OR ss_net_profit@22 >= 150.00 AND ss_net_profit@22 <= 3000.00 OR ss_net_profit@22 >= 50.00 AND ss_net_profit@22 <= 25000.00) AND (ss_sales_price@13 >= 100.00 AND ss_sales_price@13 <= 150.00 OR ss_sales_price@13 >= 50.00 AND ss_sales_price@13 <= 100.00 OR ss_sales_price@13 >= 150.00 AND ss_sales_price@13 <= 200.00) diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q49.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q49.slt.no new file mode 100644 index 00000000000..48f1c4ec0cd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q49.slt.no @@ -0,0 +1,249 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT channel, + item, + return_ratio, + return_rank, + currency_rank +FROM + (SELECT 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT ws.ws_item_sk AS item, + (cast(sum(coalesce(wr.wr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(wr.wr_return_amt,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM web_sales ws + LEFT OUTER JOIN web_returns wr ON (ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk) ,date_dim + WHERE wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY ws.ws_item_sk) in_web) web + WHERE (web.return_rank <= 10 + OR web.currency_rank <= 10) + UNION SELECT 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT cs.cs_item_sk AS item, + (cast(sum(coalesce(cr.cr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(cr.cr_return_amount,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM catalog_sales cs + LEFT OUTER JOIN catalog_returns cr ON (cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk) ,date_dim + WHERE cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY cs.cs_item_sk) in_cat) CATALOG + WHERE (catalog.return_rank <= 10 + OR catalog.currency_rank <=10) + UNION SELECT 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT sts.ss_item_sk AS item, + (cast(sum(coalesce(sr.sr_return_quantity,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(sr.sr_return_amt,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM store_sales sts + LEFT OUTER JOIN store_returns sr ON (sts.ss_ticket_number = sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk) ,date_dim + WHERE sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY sts.ss_item_sk) in_store) store + WHERE (store.return_rank <= 10 + OR store.currency_rank <= 10) ) sq1 +ORDER BY 1 NULLS FIRST, + 4 NULLS FIRST, + 5 NULLS FIRST, + 2 NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: sq1.channel ASC NULLS FIRST, sq1.return_rank ASC NULLS FIRST, sq1.currency_rank ASC NULLS FIRST, sq1.item ASC NULLS FIRST, fetch=100 +02)--SubqueryAlias: sq1 +03)----Aggregate: groupBy=[[channel, item, return_ratio, return_rank, currency_rank]], aggr=[[]] +04)------Union +05)--------Projection: Utf8("web") AS channel, web.item, web.return_ratio, web.return_rank, web.currency_rank +06)----------SubqueryAlias: web +07)------------Projection: in_web.item, in_web.return_ratio, rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS return_rank, rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS currency_rank +08)--------------Filter: rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(10) OR rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(10) +09)----------------Projection: in_web.item, in_web.return_ratio, rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +10)------------------WindowAggr: windowExpr=[[rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +11)--------------------WindowAggr: windowExpr=[[rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +12)----------------------SubqueryAlias: in_web +13)------------------------Projection: ws.ws_item_sk AS item, CAST(sum(coalesce(wr.wr_return_quantity,Int64(0))) AS Decimal128(15, 4)) / CAST(sum(coalesce(ws.ws_quantity,Int64(0))) AS Decimal128(15, 4)) AS return_ratio, CAST(sum(coalesce(wr.wr_return_amt,Int64(0))) AS Decimal128(15, 4)) / CAST(sum(coalesce(ws.ws_net_paid,Int64(0))) AS Decimal128(15, 4)) AS currency_ratio +14)--------------------------Aggregate: groupBy=[[ws.ws_item_sk]], aggr=[[sum(CASE WHEN wr.wr_return_quantity IS NOT NULL THEN wr.wr_return_quantity ELSE Int64(0) END) AS sum(coalesce(wr.wr_return_quantity,Int64(0))), sum(CASE WHEN ws.ws_quantity IS NOT NULL THEN ws.ws_quantity ELSE Int64(0) END) AS sum(coalesce(ws.ws_quantity,Int64(0))), sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(wr.wr_return_amt,Int64(0))), sum(CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(ws.ws_net_paid,Int64(0)))]] +15)----------------------------Projection: CAST(wr.wr_return_amt AS Decimal128(22, 2)) AS __common_expr_1, CAST(ws.ws_net_paid AS Decimal128(22, 2)) AS __common_expr_2, ws.ws_item_sk, ws.ws_quantity, wr.wr_return_quantity +16)------------------------------Inner Join: ws.ws_sold_date_sk = date_dim.d_date_sk +17)--------------------------------Projection: ws.ws_sold_date_sk, ws.ws_item_sk, ws.ws_quantity, ws.ws_net_paid, wr.wr_return_quantity, wr.wr_return_amt +18)----------------------------------Inner Join: ws.ws_order_number = wr.wr_order_number, ws.ws_item_sk = wr.wr_item_sk +19)------------------------------------SubqueryAlias: ws +20)--------------------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_order_number, web_sales.ws_quantity, web_sales.ws_net_paid +21)----------------------------------------Filter: web_sales.ws_net_profit > Decimal128(1.00,7,2) AND web_sales.ws_net_paid > Decimal128(0.00,7,2) AND web_sales.ws_quantity > Int64(0) +22)------------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_order_number, ws_quantity, ws_net_paid, ws_net_profit], partial_filters=[web_sales.ws_net_profit > Decimal128(1.00,7,2), web_sales.ws_net_paid > Decimal128(0.00,7,2), web_sales.ws_quantity > Int64(0)] +23)------------------------------------SubqueryAlias: wr +24)--------------------------------------Filter: web_returns.wr_return_amt > Decimal128(10000.00,7,2) +25)----------------------------------------TableScan: web_returns projection=[wr_item_sk, wr_order_number, wr_return_quantity, wr_return_amt], partial_filters=[web_returns.wr_return_amt > Decimal128(10000.00,7,2)] +26)--------------------------------Projection: date_dim.d_date_sk +27)----------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(12) +28)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(12)] +29)--------Projection: Utf8("catalog") AS channel, catalog.item, catalog.return_ratio, catalog.return_rank, catalog.currency_rank +30)----------SubqueryAlias: catalog +31)------------Projection: in_cat.item, in_cat.return_ratio, rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS return_rank, rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS currency_rank +32)--------------Filter: rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(10) OR rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(10) +33)----------------Projection: in_cat.item, in_cat.return_ratio, rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +34)------------------WindowAggr: windowExpr=[[rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +35)--------------------WindowAggr: windowExpr=[[rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +36)----------------------SubqueryAlias: in_cat +37)------------------------Projection: cs.cs_item_sk AS item, CAST(sum(coalesce(cr.cr_return_quantity,Int64(0))) AS Decimal128(15, 4)) / CAST(sum(coalesce(cs.cs_quantity,Int64(0))) AS Decimal128(15, 4)) AS return_ratio, CAST(sum(coalesce(cr.cr_return_amount,Int64(0))) AS Decimal128(15, 4)) / CAST(sum(coalesce(cs.cs_net_paid,Int64(0))) AS Decimal128(15, 4)) AS currency_ratio +38)--------------------------Aggregate: groupBy=[[cs.cs_item_sk]], aggr=[[sum(CASE WHEN cr.cr_return_quantity IS NOT NULL THEN cr.cr_return_quantity ELSE Int64(0) END) AS sum(coalesce(cr.cr_return_quantity,Int64(0))), sum(CASE WHEN cs.cs_quantity IS NOT NULL THEN cs.cs_quantity ELSE Int64(0) END) AS sum(coalesce(cs.cs_quantity,Int64(0))), sum(CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(cr.cr_return_amount,Int64(0))), sum(CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(cs.cs_net_paid,Int64(0)))]] +39)----------------------------Projection: CAST(cr.cr_return_amount AS Decimal128(22, 2)) AS __common_expr_3, CAST(cs.cs_net_paid AS Decimal128(22, 2)) AS __common_expr_4, cs.cs_item_sk, cs.cs_quantity, cr.cr_return_quantity +40)------------------------------Inner Join: cs.cs_sold_date_sk = date_dim.d_date_sk +41)--------------------------------Projection: cs.cs_sold_date_sk, cs.cs_item_sk, cs.cs_quantity, cs.cs_net_paid, cr.cr_return_quantity, cr.cr_return_amount +42)----------------------------------Inner Join: cs.cs_order_number = cr.cr_order_number, cs.cs_item_sk = cr.cr_item_sk +43)------------------------------------SubqueryAlias: cs +44)--------------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_order_number, catalog_sales.cs_quantity, catalog_sales.cs_net_paid +45)----------------------------------------Filter: catalog_sales.cs_net_profit > Decimal128(1.00,7,2) AND catalog_sales.cs_net_paid > Decimal128(0.00,7,2) AND catalog_sales.cs_quantity > Int64(0) +46)------------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_order_number, cs_quantity, cs_net_paid, cs_net_profit], partial_filters=[catalog_sales.cs_net_profit > Decimal128(1.00,7,2), catalog_sales.cs_net_paid > Decimal128(0.00,7,2), catalog_sales.cs_quantity > Int64(0)] +47)------------------------------------SubqueryAlias: cr +48)--------------------------------------Filter: catalog_returns.cr_return_amount > Decimal128(10000.00,7,2) +49)----------------------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_return_quantity, cr_return_amount], partial_filters=[catalog_returns.cr_return_amount > Decimal128(10000.00,7,2)] +50)--------------------------------Projection: date_dim.d_date_sk +51)----------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(12) +52)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(12)] +53)--------Projection: Utf8("store") AS channel, store.item, store.return_ratio, store.return_rank, store.currency_rank +54)----------SubqueryAlias: store +55)------------Projection: in_store.item, in_store.return_ratio, rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS return_rank, rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS currency_rank +56)--------------Filter: rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(10) OR rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(10) +57)----------------Projection: in_store.item, in_store.return_ratio, rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +58)------------------WindowAggr: windowExpr=[[rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +59)--------------------WindowAggr: windowExpr=[[rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +60)----------------------SubqueryAlias: in_store +61)------------------------Projection: sts.ss_item_sk AS item, CAST(sum(coalesce(sr.sr_return_quantity,Int64(0))) AS Decimal128(15, 4)) / CAST(sum(coalesce(sts.ss_quantity,Int64(0))) AS Decimal128(15, 4)) AS return_ratio, CAST(sum(coalesce(sr.sr_return_amt,Int64(0))) AS Decimal128(15, 4)) / CAST(sum(coalesce(sts.ss_net_paid,Int64(0))) AS Decimal128(15, 4)) AS currency_ratio +62)--------------------------Aggregate: groupBy=[[sts.ss_item_sk]], aggr=[[sum(CASE WHEN sr.sr_return_quantity IS NOT NULL THEN sr.sr_return_quantity ELSE Int64(0) END) AS sum(coalesce(sr.sr_return_quantity,Int64(0))), sum(CASE WHEN sts.ss_quantity IS NOT NULL THEN sts.ss_quantity ELSE Int64(0) END) AS sum(coalesce(sts.ss_quantity,Int64(0))), sum(CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(sr.sr_return_amt,Int64(0))), sum(CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(sts.ss_net_paid,Int64(0)))]] +63)----------------------------Projection: CAST(sr.sr_return_amt AS Decimal128(22, 2)) AS __common_expr_5, CAST(sts.ss_net_paid AS Decimal128(22, 2)) AS __common_expr_6, sts.ss_item_sk, sts.ss_quantity, sr.sr_return_quantity +64)------------------------------Inner Join: sts.ss_sold_date_sk = date_dim.d_date_sk +65)--------------------------------Projection: sts.ss_sold_date_sk, sts.ss_item_sk, sts.ss_quantity, sts.ss_net_paid, sr.sr_return_quantity, sr.sr_return_amt +66)----------------------------------Inner Join: sts.ss_ticket_number = sr.sr_ticket_number, sts.ss_item_sk = sr.sr_item_sk +67)------------------------------------SubqueryAlias: sts +68)--------------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_ticket_number, store_sales.ss_quantity, store_sales.ss_net_paid +69)----------------------------------------Filter: store_sales.ss_net_profit > Decimal128(1.00,7,2) AND store_sales.ss_net_paid > Decimal128(0.00,7,2) AND store_sales.ss_quantity > Int64(0) +70)------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ticket_number, ss_quantity, ss_net_paid, ss_net_profit], partial_filters=[store_sales.ss_net_profit > Decimal128(1.00,7,2), store_sales.ss_net_paid > Decimal128(0.00,7,2), store_sales.ss_quantity > Int64(0)] +71)------------------------------------SubqueryAlias: sr +72)--------------------------------------Filter: store_returns.sr_return_amt > Decimal128(10000.00,7,2) +73)----------------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number, sr_return_quantity, sr_return_amt], partial_filters=[store_returns.sr_return_amt > Decimal128(10000.00,7,2)] +74)--------------------------------Projection: date_dim.d_date_sk +75)----------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(12) +76)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(12)] +physical_plan +01)SortPreservingMergeExec: [channel@0 ASC, return_rank@3 ASC, currency_rank@4 ASC, item@1 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[channel@0 ASC, return_rank@3 ASC, currency_rank@4 ASC, item@1 ASC], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[channel@0 as channel, item@1 as item, return_ratio@2 as return_ratio, return_rank@3 as return_rank, currency_rank@4 as currency_rank], aggr=[] +04)------RepartitionExec: partitioning=Hash([channel@0, item@1, return_ratio@2, return_rank@3, currency_rank@4], 4), input_partitions=12 +05)--------AggregateExec: mode=Partial, gby=[channel@0 as channel, item@1 as item, return_ratio@2 as return_ratio, return_rank@3 as return_rank, currency_rank@4 as currency_rank], aggr=[], ordering_mode=PartiallySorted([0, 4]) +06)----------UnionExec +07)------------ProjectionExec: expr=[web as channel, item@0 as item, return_ratio@1 as return_ratio, rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 as return_rank, rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as currency_rank] +08)--------------FilterExec: rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 <= 10 OR rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 <= 10 +09)----------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1, maintains_sort_order=true +10)------------------ProjectionExec: expr=[item@0 as item, return_ratio@1 as return_ratio, rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@4 as rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW] +11)--------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [in_web.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +12)----------------------SortExec: expr=[currency_ratio@2 ASC NULLS LAST], preserve_partitioning=[false] +13)------------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [in_web.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +14)--------------------------SortPreservingMergeExec: [return_ratio@1 ASC NULLS LAST] +15)----------------------------SortExec: expr=[return_ratio@1 ASC NULLS LAST], preserve_partitioning=[true] +16)------------------------------ProjectionExec: expr=[ws_item_sk@0 as item, CAST(sum(coalesce(wr.wr_return_quantity,Int64(0)))@1 AS Decimal128(15, 4)) / CAST(sum(coalesce(ws.ws_quantity,Int64(0)))@2 AS Decimal128(15, 4)) as return_ratio, CAST(sum(coalesce(wr.wr_return_amt,Int64(0)))@3 AS Decimal128(15, 4)) / CAST(sum(coalesce(ws.ws_net_paid,Int64(0)))@4 AS Decimal128(15, 4)) as currency_ratio] +17)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[ws_item_sk@0 as ws_item_sk], aggr=[sum(CASE WHEN wr.wr_return_quantity IS NOT NULL THEN wr.wr_return_quantity ELSE 0 END) as sum(coalesce(wr.wr_return_quantity,Int64(0))), sum(CASE WHEN ws.ws_quantity IS NOT NULL THEN ws.ws_quantity ELSE 0 END) as sum(coalesce(ws.ws_quantity,Int64(0))), sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE 0.00 END) as sum(coalesce(wr.wr_return_amt,Int64(0))), sum(CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE 0.00 END) as sum(coalesce(ws.ws_net_paid,Int64(0)))] +18)----------------------------------RepartitionExec: partitioning=Hash([ws_item_sk@0], 4), input_partitions=4 +19)------------------------------------AggregateExec: mode=Partial, gby=[ws_item_sk@2 as ws_item_sk], aggr=[sum(CASE WHEN wr.wr_return_quantity IS NOT NULL THEN wr.wr_return_quantity ELSE 0 END) as sum(coalesce(wr.wr_return_quantity,Int64(0))), sum(CASE WHEN ws.ws_quantity IS NOT NULL THEN ws.ws_quantity ELSE 0 END) as sum(coalesce(ws.ws_quantity,Int64(0))), sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE 0.00 END) as sum(coalesce(wr.wr_return_amt,Int64(0))), sum(CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE 0.00 END) as sum(coalesce(ws.ws_net_paid,Int64(0)))] +20)--------------------------------------ProjectionExec: expr=[CAST(wr_return_amt@0 AS Decimal128(22, 2)) as __common_expr_1, CAST(ws_net_paid@1 AS Decimal128(22, 2)) as __common_expr_2, ws_item_sk@2 as ws_item_sk, ws_quantity@3 as ws_quantity, wr_return_quantity@4 as wr_return_quantity] +21)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[wr_return_amt@6, ws_net_paid@4, ws_item_sk@2, ws_quantity@3, wr_return_quantity@5] +22)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 12 +23)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wr_order_number@1, ws_order_number@2), (wr_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@4, ws_item_sk@5, ws_quantity@7, ws_net_paid@8, wr_return_quantity@2, wr_return_amt@3] +24)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_item_sk, wr_order_number, wr_return_quantity, wr_return_amt], file_type=vortex, predicate: wr_return_amt@15 > 10000.00 +25)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_order_number, ws_quantity, ws_net_paid], file_type=vortex, predicate: ws_net_profit@33 > 1.00 AND ws_net_paid@29 > 0.00 AND ws_quantity@18 > 0 +26)------------ProjectionExec: expr=[catalog as channel, item@0 as item, return_ratio@1 as return_ratio, rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 as return_rank, rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as currency_rank] +27)--------------FilterExec: rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 <= 10 OR rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 <= 10 +28)----------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1, maintains_sort_order=true +29)------------------ProjectionExec: expr=[item@0 as item, return_ratio@1 as return_ratio, rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@4 as rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW] +30)--------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [in_cat.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +31)----------------------SortExec: expr=[currency_ratio@2 ASC NULLS LAST], preserve_partitioning=[false] +32)------------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [in_cat.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +33)--------------------------SortPreservingMergeExec: [return_ratio@1 ASC NULLS LAST] +34)----------------------------SortExec: expr=[return_ratio@1 ASC NULLS LAST], preserve_partitioning=[true] +35)------------------------------ProjectionExec: expr=[cs_item_sk@0 as item, CAST(sum(coalesce(cr.cr_return_quantity,Int64(0)))@1 AS Decimal128(15, 4)) / CAST(sum(coalesce(cs.cs_quantity,Int64(0)))@2 AS Decimal128(15, 4)) as return_ratio, CAST(sum(coalesce(cr.cr_return_amount,Int64(0)))@3 AS Decimal128(15, 4)) / CAST(sum(coalesce(cs.cs_net_paid,Int64(0)))@4 AS Decimal128(15, 4)) as currency_ratio] +36)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[cs_item_sk@0 as cs_item_sk], aggr=[sum(CASE WHEN cr.cr_return_quantity IS NOT NULL THEN cr.cr_return_quantity ELSE 0 END) as sum(coalesce(cr.cr_return_quantity,Int64(0))), sum(CASE WHEN cs.cs_quantity IS NOT NULL THEN cs.cs_quantity ELSE 0 END) as sum(coalesce(cs.cs_quantity,Int64(0))), sum(CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE 0.00 END) as sum(coalesce(cr.cr_return_amount,Int64(0))), sum(CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE 0.00 END) as sum(coalesce(cs.cs_net_paid,Int64(0)))] +37)----------------------------------RepartitionExec: partitioning=Hash([cs_item_sk@0], 4), input_partitions=4 +38)------------------------------------AggregateExec: mode=Partial, gby=[cs_item_sk@2 as cs_item_sk], aggr=[sum(CASE WHEN cr.cr_return_quantity IS NOT NULL THEN cr.cr_return_quantity ELSE 0 END) as sum(coalesce(cr.cr_return_quantity,Int64(0))), sum(CASE WHEN cs.cs_quantity IS NOT NULL THEN cs.cs_quantity ELSE 0 END) as sum(coalesce(cs.cs_quantity,Int64(0))), sum(CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE 0.00 END) as sum(coalesce(cr.cr_return_amount,Int64(0))), sum(CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE 0.00 END) as sum(coalesce(cs.cs_net_paid,Int64(0)))] +39)--------------------------------------ProjectionExec: expr=[CAST(cr_return_amount@0 AS Decimal128(22, 2)) as __common_expr_3, CAST(cs_net_paid@1 AS Decimal128(22, 2)) as __common_expr_4, cs_item_sk@2 as cs_item_sk, cs_quantity@3 as cs_quantity, cr_return_quantity@4 as cr_return_quantity] +40)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cr_return_amount@6, cs_net_paid@4, cs_item_sk@2, cs_quantity@3, cr_return_quantity@5] +41)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 12 +42)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_order_number@1, cs_order_number@2), (cr_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@4, cs_item_sk@5, cs_quantity@7, cs_net_paid@8, cr_return_quantity@2, cr_return_amount@3] +43)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_return_quantity, cr_return_amount], file_type=vortex, predicate: cr_return_amount@18 > 10000.00 +44)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_order_number, cs_quantity, cs_net_paid], file_type=vortex, predicate: cs_net_profit@33 > 1.00 AND cs_net_paid@29 > 0.00 AND cs_quantity@18 > 0 +45)------------ProjectionExec: expr=[store as channel, item@0 as item, return_ratio@1 as return_ratio, rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 as return_rank, rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as currency_rank] +46)--------------FilterExec: rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 <= 10 OR rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 <= 10 +47)----------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1, maintains_sort_order=true +48)------------------ProjectionExec: expr=[item@0 as item, return_ratio@1 as return_ratio, rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@4 as rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW] +49)--------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [in_store.currency_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +50)----------------------SortExec: expr=[currency_ratio@2 ASC NULLS LAST], preserve_partitioning=[false] +51)------------------------BoundedWindowAggExec: wdw=[rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() ORDER BY [in_store.return_ratio ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +52)--------------------------SortPreservingMergeExec: [return_ratio@1 ASC NULLS LAST] +53)----------------------------SortExec: expr=[return_ratio@1 ASC NULLS LAST], preserve_partitioning=[true] +54)------------------------------ProjectionExec: expr=[ss_item_sk@0 as item, CAST(sum(coalesce(sr.sr_return_quantity,Int64(0)))@1 AS Decimal128(15, 4)) / CAST(sum(coalesce(sts.ss_quantity,Int64(0)))@2 AS Decimal128(15, 4)) as return_ratio, CAST(sum(coalesce(sr.sr_return_amt,Int64(0)))@3 AS Decimal128(15, 4)) / CAST(sum(coalesce(sts.ss_net_paid,Int64(0)))@4 AS Decimal128(15, 4)) as currency_ratio] +55)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[ss_item_sk@0 as ss_item_sk], aggr=[sum(CASE WHEN sr.sr_return_quantity IS NOT NULL THEN sr.sr_return_quantity ELSE 0 END) as sum(coalesce(sr.sr_return_quantity,Int64(0))), sum(CASE WHEN sts.ss_quantity IS NOT NULL THEN sts.ss_quantity ELSE 0 END) as sum(coalesce(sts.ss_quantity,Int64(0))), sum(CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE 0.00 END) as sum(coalesce(sr.sr_return_amt,Int64(0))), sum(CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE 0.00 END) as sum(coalesce(sts.ss_net_paid,Int64(0)))] +56)----------------------------------RepartitionExec: partitioning=Hash([ss_item_sk@0], 4), input_partitions=4 +57)------------------------------------AggregateExec: mode=Partial, gby=[ss_item_sk@2 as ss_item_sk], aggr=[sum(CASE WHEN sr.sr_return_quantity IS NOT NULL THEN sr.sr_return_quantity ELSE 0 END) as sum(coalesce(sr.sr_return_quantity,Int64(0))), sum(CASE WHEN sts.ss_quantity IS NOT NULL THEN sts.ss_quantity ELSE 0 END) as sum(coalesce(sts.ss_quantity,Int64(0))), sum(CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE 0.00 END) as sum(coalesce(sr.sr_return_amt,Int64(0))), sum(CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE 0.00 END) as sum(coalesce(sts.ss_net_paid,Int64(0)))] +58)--------------------------------------ProjectionExec: expr=[CAST(sr_return_amt@0 AS Decimal128(22, 2)) as __common_expr_5, CAST(ss_net_paid@1 AS Decimal128(22, 2)) as __common_expr_6, ss_item_sk@2 as ss_item_sk, ss_quantity@3 as ss_quantity, sr_return_quantity@4 as sr_return_quantity] +59)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[sr_return_amt@6, ss_net_paid@4, ss_item_sk@2, ss_quantity@3, sr_return_quantity@5] +60)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 12 +61)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_ticket_number@1, ss_ticket_number@2), (sr_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@4, ss_item_sk@5, ss_quantity@7, ss_net_paid@8, sr_return_quantity@2, sr_return_amt@3] +62)--------------------------------------------CoalescePartitionsExec +63)----------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number, sr_return_quantity, sr_return_amt], file_type=vortex, predicate: sr_return_amt@11 > 10000.00 +64)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ticket_number, ss_quantity, ss_net_paid], file_type=vortex, predicate: ss_net_profit@22 > 1.00 AND ss_net_paid@20 > 0.00 AND ss_quantity@10 > 0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q5.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q5.slt.no new file mode 100644 index 00000000000..54761234352 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q5.slt.no @@ -0,0 +1,228 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ssr AS + (SELECT s_store_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM store_sales + UNION ALL SELECT sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns ) salesreturns, + date_dim, + store + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND store_sk = s_store_sk + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM catalog_sales + UNION ALL SELECT cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns ) salesreturns, + date_dim, + catalog_page + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM web_sales + UNION ALL SELECT ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN web_sales ON (wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) ) salesreturns, + date_dim, + web_site + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', s_store_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', cp_catalog_page_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: x.channel ASC NULLS FIRST, x.id ASC NULLS FIRST, fetch=100 +02)--Projection: x.channel, x.id, sum(x.sales) AS sales, sum(x.returns_) AS returns_, sum(x.profit) AS profit +03)----Aggregate: groupBy=[[ROLLUP (x.channel, x.id)]], aggr=[[sum(x.sales), sum(x.returns_), sum(x.profit)]] +04)------SubqueryAlias: x +05)--------Union +06)----------Projection: Utf8("store channel") AS channel, concat(Utf8View("store"), ssr.s_store_id) AS id, ssr.sales, ssr.returns_, ssr.profit - ssr.profit_loss AS profit +07)------------SubqueryAlias: ssr +08)--------------Projection: store.s_store_id, sum(salesreturns.sales_price) AS sales, sum(salesreturns.profit) AS profit, sum(salesreturns.return_amt) AS returns_, sum(salesreturns.net_loss) AS profit_loss +09)----------------Aggregate: groupBy=[[store.s_store_id]], aggr=[[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)]] +10)------------------Projection: salesreturns.sales_price, salesreturns.profit, salesreturns.return_amt, salesreturns.net_loss, store.s_store_id +11)--------------------Inner Join: salesreturns.store_sk = store.s_store_sk +12)----------------------Projection: salesreturns.store_sk, salesreturns.sales_price, salesreturns.profit, salesreturns.return_amt, salesreturns.net_loss +13)------------------------Inner Join: salesreturns.date_sk = date_dim.d_date_sk +14)--------------------------SubqueryAlias: salesreturns +15)----------------------------Union +16)------------------------------Projection: store_sales.ss_store_sk AS store_sk, store_sales.ss_sold_date_sk AS date_sk, store_sales.ss_ext_sales_price AS sales_price, store_sales.ss_net_profit AS profit, Decimal128(0.00,7,2) AS return_amt, Decimal128(0.00,7,2) AS net_loss +17)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit] +18)------------------------------Projection: store_returns.sr_store_sk AS store_sk, store_returns.sr_returned_date_sk AS date_sk, Decimal128(0.00,7,2) AS sales_price, Decimal128(0.00,7,2) AS profit, store_returns.sr_return_amt AS return_amt, store_returns.sr_net_loss AS net_loss +19)--------------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_store_sk, sr_return_amt, sr_net_loss] +20)--------------------------Projection: date_dim.d_date_sk +21)----------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-06") +22)------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-06")] +23)----------------------TableScan: store projection=[s_store_sk, s_store_id] +24)----------Projection: Utf8("catalog channel") AS channel, concat(Utf8View("catalog_page"), csr.cp_catalog_page_id) AS id, csr.sales, csr.returns_, csr.profit - csr.profit_loss AS profit +25)------------SubqueryAlias: csr +26)--------------Projection: catalog_page.cp_catalog_page_id, sum(salesreturns.sales_price) AS sales, sum(salesreturns.profit) AS profit, sum(salesreturns.return_amt) AS returns_, sum(salesreturns.net_loss) AS profit_loss +27)----------------Aggregate: groupBy=[[catalog_page.cp_catalog_page_id]], aggr=[[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)]] +28)------------------Projection: salesreturns.sales_price, salesreturns.profit, salesreturns.return_amt, salesreturns.net_loss, catalog_page.cp_catalog_page_id +29)--------------------Inner Join: salesreturns.page_sk = catalog_page.cp_catalog_page_sk +30)----------------------Projection: salesreturns.page_sk, salesreturns.sales_price, salesreturns.profit, salesreturns.return_amt, salesreturns.net_loss +31)------------------------Inner Join: salesreturns.date_sk = date_dim.d_date_sk +32)--------------------------SubqueryAlias: salesreturns +33)----------------------------Union +34)------------------------------Projection: catalog_sales.cs_catalog_page_sk AS page_sk, catalog_sales.cs_sold_date_sk AS date_sk, catalog_sales.cs_ext_sales_price AS sales_price, catalog_sales.cs_net_profit AS profit, Decimal128(0.00,7,2) AS return_amt, Decimal128(0.00,7,2) AS net_loss +35)--------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_catalog_page_sk, cs_ext_sales_price, cs_net_profit] +36)------------------------------Projection: catalog_returns.cr_catalog_page_sk AS page_sk, catalog_returns.cr_returned_date_sk AS date_sk, Decimal128(0.00,7,2) AS sales_price, Decimal128(0.00,7,2) AS profit, catalog_returns.cr_return_amount AS return_amt, catalog_returns.cr_net_loss AS net_loss +37)--------------------------------TableScan: catalog_returns projection=[cr_returned_date_sk, cr_catalog_page_sk, cr_return_amount, cr_net_loss] +38)--------------------------Projection: date_dim.d_date_sk +39)----------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-06") +40)------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-06")] +41)----------------------TableScan: catalog_page projection=[cp_catalog_page_sk, cp_catalog_page_id] +42)----------Projection: Utf8("web channel") AS channel, concat(Utf8View("web_site"), wsr.web_site_id) AS id, wsr.sales, wsr.returns_, wsr.profit - wsr.profit_loss AS profit +43)------------SubqueryAlias: wsr +44)--------------Projection: web_site.web_site_id, sum(salesreturns.sales_price) AS sales, sum(salesreturns.profit) AS profit, sum(salesreturns.return_amt) AS returns_, sum(salesreturns.net_loss) AS profit_loss +45)----------------Aggregate: groupBy=[[web_site.web_site_id]], aggr=[[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)]] +46)------------------Projection: salesreturns.sales_price, salesreturns.profit, salesreturns.return_amt, salesreturns.net_loss, web_site.web_site_id +47)--------------------Inner Join: salesreturns.wsr_web_site_sk = web_site.web_site_sk +48)----------------------Projection: salesreturns.wsr_web_site_sk, salesreturns.sales_price, salesreturns.profit, salesreturns.return_amt, salesreturns.net_loss +49)------------------------Inner Join: salesreturns.date_sk = date_dim.d_date_sk +50)--------------------------SubqueryAlias: salesreturns +51)----------------------------Union +52)------------------------------Projection: web_sales.ws_web_site_sk AS wsr_web_site_sk, web_sales.ws_sold_date_sk AS date_sk, web_sales.ws_ext_sales_price AS sales_price, web_sales.ws_net_profit AS profit, Decimal128(0.00,7,2) AS return_amt, Decimal128(0.00,7,2) AS net_loss +53)--------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_web_site_sk, ws_ext_sales_price, ws_net_profit] +54)------------------------------Projection: web_sales.ws_web_site_sk AS wsr_web_site_sk, web_returns.wr_returned_date_sk AS date_sk, Decimal128(0.00,7,2) AS sales_price, Decimal128(0.00,7,2) AS profit, web_returns.wr_return_amt AS return_amt, web_returns.wr_net_loss AS net_loss +55)--------------------------------Left Join: web_returns.wr_item_sk = web_sales.ws_item_sk, web_returns.wr_order_number = web_sales.ws_order_number +56)----------------------------------TableScan: web_returns projection=[wr_returned_date_sk, wr_item_sk, wr_order_number, wr_return_amt, wr_net_loss] +57)----------------------------------TableScan: web_sales projection=[ws_item_sk, ws_web_site_sk, ws_order_number] +58)--------------------------Projection: date_dim.d_date_sk +59)----------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-06") +60)------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-06")] +61)----------------------TableScan: web_site projection=[web_site_sk, web_site_id] +physical_plan +01)SortPreservingMergeExec: [channel@0 ASC, id@1 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[channel@0 ASC, id@1 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[channel@0 as channel, id@1 as id, sum(x.sales)@3 as sales, sum(x.returns_)@4 as returns_, sum(x.profit)@5 as profit] +04)------AggregateExec: mode=FinalPartitioned, gby=[channel@0 as channel, id@1 as id, __grouping_id@2 as __grouping_id], aggr=[sum(x.sales), sum(x.returns_), sum(x.profit)] +05)--------RepartitionExec: partitioning=Hash([channel@0, id@1, __grouping_id@2], 4), input_partitions=12 +06)----------AggregateExec: mode=Partial, gby=[(NULL as channel, NULL as id), (channel@0 as channel, NULL as id), (channel@0 as channel, id@1 as id)], aggr=[sum(x.sales), sum(x.returns_), sum(x.profit)] +07)------------UnionExec +08)--------------ProjectionExec: expr=[store channel as channel, concat(store, s_store_id@0) as id, sum(salesreturns.sales_price)@1 as sales, sum(salesreturns.return_amt)@3 as returns_, sum(salesreturns.profit)@2 - sum(salesreturns.net_loss)@4 as profit] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[s_store_id@0 as s_store_id], aggr=[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)] +10)------------------RepartitionExec: partitioning=Hash([s_store_id@0], 4), input_partitions=8 +11)--------------------AggregateExec: mode=Partial, gby=[s_store_id@4 as s_store_id], aggr=[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)] +12)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, store_sk@0)], projection=[sales_price@3, profit@4, return_amt@5, net_loss@6, s_store_id@1] +13)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id], file_type=vortex +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, date_sk@1)], projection=[store_sk@1, sales_price@3, profit@4, return_amt@5, net_loss@6] +15)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-06 +16)--------------------------UnionExec +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_store_sk@7 as store_sk, ss_sold_date_sk@0 as date_sk, ss_ext_sales_price@15 as sales_price, ss_net_profit@22 as profit, CAST(0.00 AS Decimal128(7, 2)) as return_amt, CAST(0.00 AS Decimal128(7, 2)) as net_loss], file_type=vortex +18)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_store_sk@7 as store_sk, sr_returned_date_sk@0 as date_sk, CAST(0.00 AS Decimal128(7, 2)) as sales_price, CAST(0.00 AS Decimal128(7, 2)) as profit, sr_return_amt@11 as return_amt, sr_net_loss@19 as net_loss], file_type=vortex +19)--------------ProjectionExec: expr=[catalog channel as channel, concat(catalog_page, cp_catalog_page_id@0) as id, sum(salesreturns.sales_price)@1 as sales, sum(salesreturns.return_amt)@3 as returns_, sum(salesreturns.profit)@2 - sum(salesreturns.net_loss)@4 as profit] +20)----------------AggregateExec: mode=FinalPartitioned, gby=[cp_catalog_page_id@0 as cp_catalog_page_id], aggr=[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)] +21)------------------RepartitionExec: partitioning=Hash([cp_catalog_page_id@0], 4), input_partitions=4 +22)--------------------AggregateExec: mode=Partial, gby=[cp_catalog_page_id@4 as cp_catalog_page_id], aggr=[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)] +23)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(page_sk@0, cp_catalog_page_sk@0)], projection=[sales_price@1, profit@2, return_amt@3, net_loss@4, cp_catalog_page_id@6] +24)------------------------CoalescePartitionsExec +25)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, date_sk@1)], projection=[page_sk@1, sales_price@3, profit@4, return_amt@5, net_loss@6] +26)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-06 +27)----------------------------UnionExec +28)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_catalog_page_sk@12 as page_sk, cs_sold_date_sk@0 as date_sk, cs_ext_sales_price@23 as sales_price, cs_net_profit@33 as profit, CAST(0.00 AS Decimal128(7, 2)) as return_amt, CAST(0.00 AS Decimal128(7, 2)) as net_loss], file_type=vortex +29)------------------------------ProjectionExec: expr=[page_sk@0 as page_sk, date_sk@1 as date_sk, CAST(sales_price@2 AS Decimal128(7, 2)) as sales_price, CAST(profit@3 AS Decimal128(7, 2)) as profit, return_amt@4 as return_amt, net_loss@5 as net_loss] +30)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +31)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_catalog_page_sk@12 as page_sk, cr_returned_date_sk@0 as date_sk, 0.00 as sales_price, 0.00 as profit, cr_return_amount@18 as return_amt, cr_net_loss@26 as net_loss], file_type=vortex +32)------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +33)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_page.vortex]]}, projection=[cp_catalog_page_sk, cp_catalog_page_id], file_type=vortex +34)--------------ProjectionExec: expr=[web channel as channel, concat(web_site, web_site_id@0) as id, sum(salesreturns.sales_price)@1 as sales, sum(salesreturns.return_amt)@3 as returns_, sum(salesreturns.profit)@2 - sum(salesreturns.net_loss)@4 as profit] +35)----------------AggregateExec: mode=FinalPartitioned, gby=[web_site_id@0 as web_site_id], aggr=[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)] +36)------------------RepartitionExec: partitioning=Hash([web_site_id@0], 4), input_partitions=8 +37)--------------------AggregateExec: mode=Partial, gby=[web_site_id@4 as web_site_id], aggr=[sum(salesreturns.sales_price), sum(salesreturns.profit), sum(salesreturns.return_amt), sum(salesreturns.net_loss)] +38)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(web_site_sk@0, wsr_web_site_sk@0)], projection=[sales_price@3, profit@4, return_amt@5, net_loss@6, web_site_id@1] +39)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_site.vortex]]}, projection=[web_site_sk, web_site_id], file_type=vortex +40)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, date_sk@1)], projection=[wsr_web_site_sk@1, sales_price@3, profit@4, return_amt@5, net_loss@6] +41)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-06 +42)--------------------------UnionExec +43)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_web_site_sk@13 as wsr_web_site_sk, ws_sold_date_sk@0 as date_sk, ws_ext_sales_price@23 as sales_price, ws_net_profit@33 as profit, CAST(0.00 AS Decimal128(7, 2)) as return_amt, CAST(0.00 AS Decimal128(7, 2)) as net_loss], file_type=vortex +44)----------------------------ProjectionExec: expr=[ws_web_site_sk@0 as wsr_web_site_sk, wr_returned_date_sk@1 as date_sk, CAST(0.00 AS Decimal128(7, 2)) as sales_price, CAST(0.00 AS Decimal128(7, 2)) as profit, wr_return_amt@2 as return_amt, wr_net_loss@3 as net_loss] +45)------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(wr_item_sk@1, ws_item_sk@0), (wr_order_number@2, ws_order_number@2)], projection=[ws_web_site_sk@6, wr_returned_date_sk@0, wr_return_amt@3, wr_net_loss@4] +46)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_returned_date_sk, wr_item_sk, wr_order_number, wr_return_amt, wr_net_loss], file_type=vortex +47)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_item_sk, ws_web_site_sk, ws_order_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q50.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q50.slt.no new file mode 100644 index 00000000000..824ae1819ac --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q50.slt.no @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 30) + AND (sr_returned_date_sk - ss_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 60) + AND (sr_returned_date_sk - ss_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 90) + AND (sr_returned_date_sk - ss_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM store_sales, + store_returns, + store, + date_dim d1, + date_dim d2 +WHERE d2.d_year = 2001 + AND d2.d_moy = 8 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +ORDER BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +LIMIT 100; +---- +logical_plan +01)Sort: store.s_store_name ASC NULLS LAST, store.s_company_id ASC NULLS LAST, store.s_street_number ASC NULLS LAST, store.s_street_name ASC NULLS LAST, store.s_street_type ASC NULLS LAST, store.s_suite_number ASC NULLS LAST, store.s_city ASC NULLS LAST, store.s_county ASC NULLS LAST, store.s_state ASC NULLS LAST, store.s_zip ASC NULLS LAST, fetch=100 +02)--Projection: store.s_store_name, store.s_company_id, store.s_street_number, store.s_street_name, store.s_street_type, store.s_suite_number, store.s_city, store.s_county, store.s_state, store.s_zip, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END) AS 30 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(30) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END) AS 31-60 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(60) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END) AS 61-90 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(90) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END) AS 91-120 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END) AS >120 days +03)----Aggregate: groupBy=[[store.s_store_name, store.s_company_id, store.s_street_number, store.s_street_name, store.s_street_type, store.s_suite_number, store.s_city, store.s_county, store.s_state, store.s_zip]], aggr=[[sum(CASE WHEN __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(30) AND __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(60) AND __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(90) AND __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)]] +04)------Projection: store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk AS __common_expr_1, store.s_store_name, store.s_company_id, store.s_street_number, store.s_street_name, store.s_street_type, store.s_suite_number, store.s_city, store.s_county, store.s_state, store.s_zip +05)--------Inner Join: store_returns.sr_returned_date_sk = d2.d_date_sk +06)----------Projection: store_sales.ss_sold_date_sk, store_returns.sr_returned_date_sk, store.s_store_name, store.s_company_id, store.s_street_number, store.s_street_name, store.s_street_type, store.s_suite_number, store.s_city, store.s_county, store.s_state, store.s_zip +07)------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +08)--------------Projection: store_sales.ss_sold_date_sk, store_returns.sr_returned_date_sk, store.s_store_name, store.s_company_id, store.s_street_number, store.s_street_name, store.s_street_type, store.s_suite_number, store.s_city, store.s_county, store.s_state, store.s_zip +09)----------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +10)------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_returns.sr_returned_date_sk +11)--------------------Inner Join: store_sales.ss_ticket_number = store_returns.sr_ticket_number, store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_customer_sk = store_returns.sr_customer_sk +12)----------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number] +13)----------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number] +14)------------------TableScan: store projection=[s_store_sk, s_store_name, s_company_id, s_street_number, s_street_name, s_street_type, s_suite_number, s_city, s_county, s_state, s_zip] +15)--------------SubqueryAlias: d1 +16)----------------TableScan: date_dim projection=[d_date_sk] +17)----------SubqueryAlias: d2 +18)------------Projection: date_dim.d_date_sk +19)--------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(8) +20)----------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(8)] +physical_plan +01)SortPreservingMergeExec: [s_store_name@0 ASC NULLS LAST, s_company_id@1 ASC NULLS LAST, s_street_number@2 ASC NULLS LAST, s_street_name@3 ASC NULLS LAST, s_street_type@4 ASC NULLS LAST, s_suite_number@5 ASC NULLS LAST, s_city@6 ASC NULLS LAST, s_county@7 ASC NULLS LAST, s_state@8 ASC NULLS LAST, s_zip@9 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[s_store_name@0 as s_store_name, s_company_id@1 as s_company_id, s_street_number@2 as s_street_number, s_street_name@3 as s_street_name, s_street_type@4 as s_street_type, s_suite_number@5 as s_suite_number, s_city@6 as s_city, s_county@7 as s_county, s_state@8 as s_state, s_zip@9 as s_zip, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END)@10 as 30 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(30) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END)@11 as 31-60 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(60) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END)@12 as 61-90 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(90) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END)@13 as 91-120 days, sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)@14 as >120 days] +03)----SortExec: TopK(fetch=100), expr=[s_store_name@0 ASC NULLS LAST, s_company_id@1 ASC NULLS LAST, s_street_number@2 ASC NULLS LAST, s_street_name@3 ASC NULLS LAST, s_street_type@4 ASC NULLS LAST, s_suite_number@5 ASC NULLS LAST, s_city@6 ASC NULLS LAST, s_county@7 ASC NULLS LAST, s_state@8 ASC NULLS LAST, s_zip@9 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[s_store_name@0 as s_store_name, s_company_id@1 as s_company_id, s_street_number@2 as s_street_number, s_street_name@3 as s_street_name, s_street_type@4 as s_street_type, s_suite_number@5 as s_suite_number, s_city@6 as s_city, s_county@7 as s_county, s_state@8 as s_state, s_zip@9 as s_zip], aggr=[sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(30) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(60) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(90) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)] +05)--------RepartitionExec: partitioning=Hash([s_store_name@0, s_company_id@1, s_street_number@2, s_street_name@3, s_street_type@4, s_suite_number@5, s_city@6, s_county@7, s_state@8, s_zip@9], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[s_store_name@1 as s_store_name, s_company_id@2 as s_company_id, s_street_number@3 as s_street_number, s_street_name@4 as s_street_name, s_street_type@5 as s_street_type, s_suite_number@6 as s_suite_number, s_city@7 as s_city, s_county@8 as s_county, s_state@9 as s_state, s_zip@10 as s_zip], aggr=[sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(30) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(60) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(90) AND store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN store_returns.sr_returned_date_sk - store_sales.ss_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)] +07)------------ProjectionExec: expr=[sr_returned_date_sk@0 - ss_sold_date_sk@1 as __common_expr_1, s_store_name@2 as s_store_name, s_company_id@3 as s_company_id, s_street_number@4 as s_street_number, s_street_name@5 as s_street_name, s_street_type@6 as s_street_type, s_suite_number@7 as s_suite_number, s_city@8 as s_city, s_county@9 as s_county, s_state@10 as s_state, s_zip@11 as s_zip] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@1)], projection=[sr_returned_date_sk@2, ss_sold_date_sk@1, s_store_name@3, s_company_id@4, s_street_number@5, s_street_name@6, s_street_type@7, s_suite_number@8, s_city@9, s_county@10, s_state@11, s_zip@12] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 8 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_sold_date_sk@1, sr_returned_date_sk@2, s_store_name@3, s_company_id@4, s_street_number@5, s_street_name@6, s_street_type@7, s_suite_number@8, s_city@9, s_county@10, s_state@11, s_zip@12] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_sold_date_sk@11, sr_returned_date_sk@13, s_store_name@1, s_company_id@2, s_street_number@3, s_street_name@4, s_street_type@5, s_suite_number@6, s_city@7, s_county@8, s_state@9, s_zip@10] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_company_id, s_street_number, s_street_name, s_street_type, s_suite_number, s_city, s_county, s_state, s_zip], file_type=vortex +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_ticket_number@3, ss_ticket_number@4), (sr_item_sk@1, ss_item_sk@1), (sr_customer_sk@2, ss_customer_sk@2)], projection=[ss_sold_date_sk@4, ss_store_sk@7, sr_returned_date_sk@0] +15)----------------------CoalescePartitionsExec +16)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_item_sk, sr_customer_sk, sr_ticket_number], file_type=vortex +17)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ticket_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q51.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q51.slt.no new file mode 100644 index 00000000000..020c5a758e8 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q51.slt.no @@ -0,0 +1,122 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH web_v1 AS + (SELECT ws_item_sk item_sk, + d_date, + sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM web_sales, + date_dim + WHERE ws_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, + d_date), + store_v1 AS + (SELECT ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM store_sales, + date_dim + WHERE ss_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, + d_date) +SELECT * +FROM + (SELECT item_sk, + d_date, + web_sales, + store_sales, + max(web_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) web_cumulative, + max(store_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) store_cumulative + FROM + (SELECT CASE + WHEN web.item_sk IS NOT NULL THEN web.item_sk + ELSE store.item_sk + END item_sk, + CASE + WHEN web.d_date IS NOT NULL THEN web.d_date + ELSE store.d_date + END d_date, + web.cume_sales web_sales, + store.cume_sales store_sales + FROM web_v1 web + FULL OUTER JOIN store_v1 store ON (web.item_sk = store.item_sk + AND web.d_date = store.d_date))x)y +WHERE web_cumulative > store_cumulative +ORDER BY item_sk NULLS FIRST, + d_date NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: y.item_sk ASC NULLS FIRST, y.d_date ASC NULLS FIRST, fetch=100 +02)--SubqueryAlias: y +03)----Projection: x.item_sk, x.d_date, x.web_sales, x.store_sales, max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS web_cumulative, max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS store_cumulative +04)------Filter: max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW > max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +05)--------WindowAggr: windowExpr=[[max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +06)----------SubqueryAlias: x +07)------------Projection: CASE WHEN web.item_sk IS NOT NULL THEN web.item_sk ELSE store.item_sk END AS item_sk, CASE WHEN web.d_date IS NOT NULL THEN web.d_date ELSE store.d_date END AS d_date, web.cume_sales AS web_sales, store.cume_sales AS store_sales +08)--------------Full Join: web.item_sk = store.item_sk, web.d_date = store.d_date +09)----------------SubqueryAlias: web +10)------------------SubqueryAlias: web_v1 +11)--------------------Projection: web_sales.ws_item_sk AS item_sk, date_dim.d_date, sum(sum(web_sales.ws_sales_price)) PARTITION BY [web_sales.ws_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS cume_sales +12)----------------------WindowAggr: windowExpr=[[sum(sum(web_sales.ws_sales_price)) PARTITION BY [web_sales.ws_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +13)------------------------Aggregate: groupBy=[[web_sales.ws_item_sk, date_dim.d_date]], aggr=[[sum(web_sales.ws_sales_price)]] +14)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_sales_price, date_dim.d_date +15)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +16)------------------------------Filter: web_sales.ws_item_sk IS NOT NULL +17)--------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_sales_price], partial_filters=[web_sales.ws_item_sk IS NOT NULL] +18)------------------------------Projection: date_dim.d_date_sk, date_dim.d_date +19)--------------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +20)----------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +21)----------------SubqueryAlias: store +22)------------------SubqueryAlias: store_v1 +23)--------------------Projection: store_sales.ss_item_sk AS item_sk, date_dim.d_date, sum(sum(store_sales.ss_sales_price)) PARTITION BY [store_sales.ss_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS cume_sales +24)----------------------WindowAggr: windowExpr=[[sum(sum(store_sales.ss_sales_price)) PARTITION BY [store_sales.ss_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +25)------------------------Aggregate: groupBy=[[store_sales.ss_item_sk, date_dim.d_date]], aggr=[[sum(store_sales.ss_sales_price)]] +26)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_sales_price, date_dim.d_date +27)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +28)------------------------------Filter: store_sales.ss_item_sk IS NOT NULL +29)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_sales_price], partial_filters=[store_sales.ss_item_sk IS NOT NULL] +30)------------------------------Projection: date_dim.d_date_sk, date_dim.d_date +31)--------------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +32)----------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +physical_plan +01)SortPreservingMergeExec: [item_sk@0 ASC, d_date@1 ASC], fetch=100 +02)--ProjectionExec: expr=[item_sk@0 as item_sk, d_date@1 as d_date, web_sales@2 as web_sales, store_sales@3 as store_sales, max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@4 as web_cumulative, max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@5 as store_cumulative] +03)----SortExec: TopK(fetch=100), expr=[item_sk@0 ASC, d_date@1 ASC], preserve_partitioning=[true] +04)------FilterExec: max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@4 > max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@5 +05)--------BoundedWindowAggExec: wdw=[max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "max(x.web_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": nullable Decimal128(27, 2) }, frame: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "max(x.store_sales) PARTITION BY [x.item_sk] ORDER BY [x.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": nullable Decimal128(27, 2) }, frame: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +06)----------SortExec: expr=[item_sk@0 ASC NULLS LAST, d_date@1 ASC NULLS LAST], preserve_partitioning=[true] +07)------------RepartitionExec: partitioning=Hash([item_sk@0], 4), input_partitions=4 +08)--------------ProjectionExec: expr=[CASE WHEN item_sk@0 IS NOT NULL THEN item_sk@0 ELSE item_sk@3 END as item_sk, CASE WHEN d_date@1 IS NOT NULL THEN d_date@1 ELSE d_date@4 END as d_date, cume_sales@2 as web_sales, cume_sales@5 as store_sales] +09)----------------HashJoinExec: mode=CollectLeft, join_type=Full, on=[(item_sk@0, item_sk@0), (d_date@1, d_date@1)] +10)------------------CoalescePartitionsExec +11)--------------------ProjectionExec: expr=[ws_item_sk@0 as item_sk, d_date@1 as d_date, sum(sum(web_sales.ws_sales_price)) PARTITION BY [web_sales.ws_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as cume_sales] +12)----------------------BoundedWindowAggExec: wdw=[sum(sum(web_sales.ws_sales_price)) PARTITION BY [web_sales.ws_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "sum(sum(web_sales.ws_sales_price)) PARTITION BY [web_sales.ws_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": nullable Decimal128(27, 2) }, frame: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +13)------------------------SortExec: expr=[ws_item_sk@0 ASC NULLS LAST, d_date@1 ASC NULLS LAST], preserve_partitioning=[true] +14)--------------------------RepartitionExec: partitioning=Hash([ws_item_sk@0], 4), input_partitions=4 +15)----------------------------AggregateExec: mode=FinalPartitioned, gby=[ws_item_sk@0 as ws_item_sk, d_date@1 as d_date], aggr=[sum(web_sales.ws_sales_price)] +16)------------------------------RepartitionExec: partitioning=Hash([ws_item_sk@0, d_date@1], 4), input_partitions=4 +17)--------------------------------AggregateExec: mode=Partial, gby=[ws_item_sk@0 as ws_item_sk, d_date@2 as d_date], aggr=[sum(web_sales.ws_sales_price)] +18)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@3, ws_sales_price@4, d_date@1] +19)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +20)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_sales_price], file_type=vortex, predicate: ws_item_sk@3 IS NOT NULL +21)------------------ProjectionExec: expr=[ss_item_sk@0 as item_sk, d_date@1 as d_date, sum(sum(store_sales.ss_sales_price)) PARTITION BY [store_sales.ss_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@3 as cume_sales] +22)--------------------BoundedWindowAggExec: wdw=[sum(sum(store_sales.ss_sales_price)) PARTITION BY [store_sales.ss_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "sum(sum(store_sales.ss_sales_price)) PARTITION BY [store_sales.ss_item_sk] ORDER BY [date_dim.d_date ASC NULLS LAST] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": nullable Decimal128(27, 2) }, frame: ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +23)----------------------SortExec: expr=[ss_item_sk@0 ASC NULLS LAST, d_date@1 ASC NULLS LAST], preserve_partitioning=[true] +24)------------------------RepartitionExec: partitioning=Hash([ss_item_sk@0], 4), input_partitions=4 +25)--------------------------AggregateExec: mode=FinalPartitioned, gby=[ss_item_sk@0 as ss_item_sk, d_date@1 as d_date], aggr=[sum(store_sales.ss_sales_price)] +26)----------------------------RepartitionExec: partitioning=Hash([ss_item_sk@0, d_date@1], 4), input_partitions=4 +27)------------------------------AggregateExec: mode=Partial, gby=[ss_item_sk@0 as ss_item_sk, d_date@2 as d_date], aggr=[sum(store_sales.ss_sales_price)] +28)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, ss_sales_price@4, d_date@1] +29)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +30)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_sales_price], file_type=vortex, predicate: ss_item_sk@2 IS NOT NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q52.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q52.slt.no new file mode 100644 index 00000000000..8b7da508f98 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q52.slt.no @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + ext_price DESC, + brand_id +LIMIT 100 ; +---- +logical_plan +01)Sort: dt.d_year ASC NULLS LAST, ext_price DESC NULLS FIRST, brand_id ASC NULLS LAST, fetch=100 +02)--Projection: dt.d_year, item.i_brand_id AS brand_id, item.i_brand AS brand, sum(store_sales.ss_ext_sales_price) AS ext_price +03)----Aggregate: groupBy=[[dt.d_year, item.i_brand, item.i_brand_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +04)------Projection: dt.d_year, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand +05)--------Inner Join: store_sales.ss_item_sk = item.i_item_sk +06)----------Projection: dt.d_year, store_sales.ss_item_sk, store_sales.ss_ext_sales_price +07)------------Inner Join: dt.d_date_sk = store_sales.ss_sold_date_sk +08)--------------SubqueryAlias: dt +09)----------------Projection: date_dim.d_date_sk, date_dim.d_year +10)------------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(2000) +11)--------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(2000)] +12)--------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price] +13)----------Projection: item.i_item_sk, item.i_brand_id, item.i_brand +14)------------Filter: item.i_manager_id = Int64(1) +15)--------------TableScan: item projection=[i_item_sk, i_brand_id, i_brand, i_manager_id], partial_filters=[item.i_manager_id = Int64(1)] +physical_plan +01)SortPreservingMergeExec: [d_year@0 ASC NULLS LAST, ext_price@3 DESC, brand_id@1 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[d_year@0 as d_year, i_brand_id@2 as brand_id, i_brand@1 as brand, sum(store_sales.ss_ext_sales_price)@3 as ext_price] +03)----SortExec: TopK(fetch=100), expr=[sum(store_sales.ss_ext_sales_price)@3 DESC, i_brand_id@2 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_brand@1 as i_brand, i_brand_id@2 as i_brand_id], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([0]) +05)--------RepartitionExec: partitioning=Hash([d_year@0, i_brand@1, i_brand_id@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_brand@3 as i_brand, i_brand_id@2 as i_brand_id], aggr=[sum(store_sales.ss_ext_sales_price)], ordering_mode=PartiallySorted([0]) +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[d_year@3, ss_ext_sales_price@5, i_brand_id@1, i_brand@2] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_brand], file_type=vortex, predicate: i_manager_id@20 = 1 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[d_year@1, ss_item_sk@3, ss_ext_sales_price@4] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 2000 +11)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q53.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q53.slt.no new file mode 100644 index 00000000000..98bbc321b89 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q53.slt.no @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * +FROM + (SELECT i_manufact_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id) avg_quarterly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manufact_id, + d_qoy) tmp1 +WHERE CASE + WHEN avg_quarterly_sales > 0 THEN ABS (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales + ELSE NULL + END > 0.1 +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +LIMIT 100; +---- +logical_plan +01)Sort: tmp1.avg_quarterly_sales ASC NULLS LAST, tmp1.sum_sales ASC NULLS LAST, tmp1.i_manufact_id ASC NULLS LAST, fetch=100 +02)--SubqueryAlias: tmp1 +03)----Projection: item.i_manufact_id, sum(store_sales.ss_sales_price) AS sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS avg_quarterly_sales +04)------Filter: CASE WHEN avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING > Decimal128(0.000000,21,6) THEN abs(sum(store_sales.ss_sales_price) - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ELSE Decimal128(NULL,32,10) END > Decimal128(0.1000000000,32,10) +05)--------WindowAggr: windowExpr=[[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +06)----------Projection: item.i_manufact_id, sum(store_sales.ss_sales_price) +07)------------Aggregate: groupBy=[[item.i_manufact_id, date_dim.d_qoy]], aggr=[[sum(store_sales.ss_sales_price)]] +08)--------------Projection: item.i_manufact_id, store_sales.ss_sales_price, date_dim.d_qoy +09)----------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +10)------------------Projection: item.i_manufact_id, store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_qoy +11)--------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +12)----------------------Projection: item.i_manufact_id, store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +13)------------------------Inner Join: item.i_item_sk = store_sales.ss_item_sk +14)--------------------------Projection: item.i_item_sk, item.i_manufact_id +15)----------------------------Filter: (item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Children") OR item.i_category = Utf8View("Electronics")) AND item.i_class IN ([Utf8View("personal"), Utf8View("portable"), Utf8View("reference"), Utf8View("self-help")]) AND item.i_brand IN ([Utf8View("scholaramalgamalg #14"), Utf8View("scholaramalgamalg #7"), Utf8View("exportiunivamalg #9"), Utf8View("scholaramalgamalg #9")]) OR (item.i_category = Utf8View("Women") OR item.i_category = Utf8View("Music") OR item.i_category = Utf8View("Men")) AND item.i_class IN ([Utf8View("accessories"), Utf8View("classical"), Utf8View("fragrances"), Utf8View("pants")]) AND item.i_brand IN ([Utf8View("amalgimporto #1"), Utf8View("edu packscholar #1"), Utf8View("exportiimporto #1"), Utf8View("importoamalg #1")]) +16)------------------------------TableScan: item projection=[i_item_sk, i_brand, i_class, i_category, i_manufact_id], partial_filters=[(item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Children") OR item.i_category = Utf8View("Electronics")) AND item.i_class IN ([Utf8View("personal"), Utf8View("portable"), Utf8View("reference"), Utf8View("self-help")]) AND item.i_brand IN ([Utf8View("scholaramalgamalg #14"), Utf8View("scholaramalgamalg #7"), Utf8View("exportiunivamalg #9"), Utf8View("scholaramalgamalg #9")]) OR (item.i_category = Utf8View("Women") OR item.i_category = Utf8View("Music") OR item.i_category = Utf8View("Men")) AND item.i_class IN ([Utf8View("accessories"), Utf8View("classical"), Utf8View("fragrances"), Utf8View("pants")]) AND item.i_brand IN ([Utf8View("amalgimporto #1"), Utf8View("edu packscholar #1"), Utf8View("exportiimporto #1"), Utf8View("importoamalg #1")])] +17)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +18)----------------------Projection: date_dim.d_date_sk, date_dim.d_qoy +19)------------------------Filter: date_dim.d_month_seq IN ([Int64(1200), Int64(1201), Int64(1202), Int64(1203), Int64(1204), Int64(1205), Int64(1206), Int64(1207), Int64(1208), Int64(1209), Int64(1210), Int64(1211)]) +20)--------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq, d_qoy], partial_filters=[date_dim.d_month_seq IN ([Int64(1200), Int64(1201), Int64(1202), Int64(1203), Int64(1204), Int64(1205), Int64(1206), Int64(1207), Int64(1208), Int64(1209), Int64(1210), Int64(1211)])] +21)------------------TableScan: store projection=[s_store_sk] +physical_plan +01)SortPreservingMergeExec: [avg_quarterly_sales@2 ASC NULLS LAST, sum_sales@1 ASC NULLS LAST, i_manufact_id@0 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_manufact_id@0 as i_manufact_id, sum(store_sales.ss_sales_price)@1 as sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 as avg_quarterly_sales] +03)----SortExec: TopK(fetch=100), expr=[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 ASC NULLS LAST, sum(store_sales.ss_sales_price)@1 ASC NULLS LAST, i_manufact_id@0 ASC NULLS LAST], preserve_partitioning=[true] +04)------FilterExec: CASE WHEN avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 > 0.000000 THEN abs(sum(store_sales.ss_sales_price)@1 - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 END > 0.1000000000 +05)--------WindowAggExec: wdw=[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manufact_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(21, 6), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +06)----------SortExec: expr=[i_manufact_id@0 ASC NULLS LAST], preserve_partitioning=[true] +07)------------RepartitionExec: partitioning=Hash([i_manufact_id@0], 4), input_partitions=4 +08)--------------ProjectionExec: expr=[i_manufact_id@0 as i_manufact_id, sum(store_sales.ss_sales_price)@2 as sum(store_sales.ss_sales_price)] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[i_manufact_id@0 as i_manufact_id, d_qoy@1 as d_qoy], aggr=[sum(store_sales.ss_sales_price)] +10)------------------RepartitionExec: partitioning=Hash([i_manufact_id@0, d_qoy@1], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[i_manufact_id@0 as i_manufact_id, d_qoy@2 as d_qoy], aggr=[sum(store_sales.ss_sales_price)] +12)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[i_manufact_id@1, ss_sales_price@3, d_qoy@4] +13)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@1)], projection=[i_manufact_id@2, ss_store_sk@4, ss_sales_price@5, d_qoy@1] +15)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_qoy], file_type=vortex, predicate: d_month_seq@3 IN (SET) ([1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211]) +16)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[i_manufact_id@1, ss_sold_date_sk@2, ss_store_sk@4, ss_sales_price@5] +17)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_manufact_id], file_type=vortex, predicate: (i_category@12 = Books OR i_category@12 = Children OR i_category@12 = Electronics) AND i_class@10 IN (SET) ([personal, portable, reference, self-help]) AND i_brand@8 IN (SET) ([scholaramalgamalg #14, scholaramalgamalg #7, exportiunivamalg #9, scholaramalgamalg #9]) OR (i_category@12 = Women OR i_category@12 = Music OR i_category@12 = Men) AND i_class@10 IN (SET) ([accessories, classical, fragrances, pants]) AND i_brand@8 IN (SET) ([amalgimporto #1, edu packscholar #1, exportiimporto #1, importoamalg #1]) +18)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q54.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q54.slt.no new file mode 100644 index 00000000000..d1adcfcd063 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q54.slt.no @@ -0,0 +1,166 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH my_customers AS + (SELECT DISTINCT c_customer_sk, + c_current_addr_sk + FROM + (SELECT cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL SELECT ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales) cs_or_ws_sales, + item, + date_dim, + customer + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Women' + AND i_class = 'maternity' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 12 + AND d_year = 1998 ), + my_revenue AS + (SELECT c_customer_sk, + sum(ss_ext_sales_price) AS revenue + FROM my_customers, + store_sales, + customer_address, + store, + date_dim + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN + (SELECT DISTINCT d_month_seq+1 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) AND + (SELECT DISTINCT d_month_seq+3 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) + GROUP BY c_customer_sk), + segments AS + (SELECT cast(round(revenue/50) AS int) AS SEGMENT + FROM my_revenue) +SELECT SEGMENT, + count(*) AS num_customers, + SEGMENT*50 AS segment_base +FROM segments +GROUP BY SEGMENT +ORDER BY SEGMENT NULLS FIRST, + num_customers NULLS FIRST, + segment_base +LIMIT 100; +---- +logical_plan +01)Sort: segments.segment ASC NULLS FIRST, fetch=100 +02)--Projection: segments.segment, count(Int64(1)) AS count(*) AS num_customers, CAST(segments.segment AS Int64) * Int64(50) AS segment_base +03)----Aggregate: groupBy=[[segments.segment]], aggr=[[count(Int64(1))]] +04)------SubqueryAlias: segments +05)--------Projection: CAST(round(my_revenue.revenue / Decimal128(50,20,0)) AS Int32) AS segment +06)----------SubqueryAlias: my_revenue +07)------------Projection: sum(store_sales.ss_ext_sales_price) AS revenue +08)--------------Aggregate: groupBy=[[my_customers.c_customer_sk]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +09)----------------Projection: my_customers.c_customer_sk, store_sales.ss_ext_sales_price +10)------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +11)--------------------Projection: my_customers.c_customer_sk, store_sales.ss_sold_date_sk, store_sales.ss_ext_sales_price +12)----------------------Inner Join: customer_address.ca_county = store.s_county, customer_address.ca_state = store.s_state +13)------------------------Projection: my_customers.c_customer_sk, store_sales.ss_sold_date_sk, store_sales.ss_ext_sales_price, customer_address.ca_county, customer_address.ca_state +14)--------------------------Inner Join: my_customers.c_current_addr_sk = customer_address.ca_address_sk +15)----------------------------Projection: my_customers.c_customer_sk, my_customers.c_current_addr_sk, store_sales.ss_sold_date_sk, store_sales.ss_ext_sales_price +16)------------------------------Inner Join: my_customers.c_customer_sk = store_sales.ss_customer_sk +17)--------------------------------SubqueryAlias: my_customers +18)----------------------------------Aggregate: groupBy=[[customer.c_customer_sk, customer.c_current_addr_sk]], aggr=[[]] +19)------------------------------------RightSemi Join: cs_or_ws_sales.customer_sk = customer.c_customer_sk +20)--------------------------------------Projection: cs_or_ws_sales.customer_sk +21)----------------------------------------LeftSemi Join: cs_or_ws_sales.sold_date_sk = date_dim.d_date_sk +22)------------------------------------------Projection: cs_or_ws_sales.sold_date_sk, cs_or_ws_sales.customer_sk +23)--------------------------------------------LeftSemi Join: cs_or_ws_sales.item_sk = item.i_item_sk +24)----------------------------------------------SubqueryAlias: cs_or_ws_sales +25)------------------------------------------------Union +26)--------------------------------------------------Projection: catalog_sales.cs_sold_date_sk AS sold_date_sk, catalog_sales.cs_bill_customer_sk AS customer_sk, catalog_sales.cs_item_sk AS item_sk +27)----------------------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk] +28)--------------------------------------------------Projection: web_sales.ws_sold_date_sk AS sold_date_sk, web_sales.ws_bill_customer_sk AS customer_sk, web_sales.ws_item_sk AS item_sk +29)----------------------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk] +30)----------------------------------------------Projection: item.i_item_sk +31)------------------------------------------------Filter: item.i_category = Utf8View("Women") AND item.i_class = Utf8View("maternity") +32)--------------------------------------------------TableScan: item projection=[i_item_sk, i_class, i_category], partial_filters=[item.i_category = Utf8View("Women"), item.i_class = Utf8View("maternity")] +33)------------------------------------------Projection: date_dim.d_date_sk +34)--------------------------------------------Filter: date_dim.d_moy = Int64(12) AND date_dim.d_year = Int64(1998) +35)----------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(12), date_dim.d_year = Int64(1998)] +36)--------------------------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +37)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_sales_price] +38)----------------------------TableScan: customer_address projection=[ca_address_sk, ca_county, ca_state] +39)------------------------TableScan: store projection=[s_county, s_state] +40)--------------------Projection: date_dim.d_date_sk +41)----------------------Filter: date_dim.d_month_seq >= () AND date_dim.d_month_seq <= () +42)------------------------Subquery: +43)--------------------------Aggregate: groupBy=[[date_dim.d_month_seq + Int64(1)]], aggr=[[]] +44)----------------------------Projection: date_dim.d_month_seq + Int64(1) +45)------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) +46)--------------------------------TableScan: date_dim projection=[d_month_seq, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(12)] +47)------------------------Subquery: +48)--------------------------Aggregate: groupBy=[[date_dim.d_month_seq + Int64(3)]], aggr=[[]] +49)----------------------------Projection: date_dim.d_month_seq + Int64(3) +50)------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) +51)--------------------------------TableScan: date_dim projection=[d_month_seq, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(12)] +52)------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq] +physical_plan +01)ScalarSubqueryExec: subqueries=2 +02)--SortPreservingMergeExec: [segment@0 ASC], fetch=100 +03)----SortExec: TopK(fetch=100), expr=[segment@0 ASC], preserve_partitioning=[true] +04)------ProjectionExec: expr=[segment@0 as segment, count(Int64(1))@1 as num_customers, CAST(segment@0 AS Int64) * 50 as segment_base] +05)--------AggregateExec: mode=FinalPartitioned, gby=[segment@0 as segment], aggr=[count(Int64(1))] +06)----------RepartitionExec: partitioning=Hash([segment@0], 4), input_partitions=4 +07)------------AggregateExec: mode=Partial, gby=[segment@0 as segment], aggr=[count(Int64(1))] +08)--------------ProjectionExec: expr=[CAST(round(sum(store_sales.ss_ext_sales_price)@1 / 50) AS Int32) as segment] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_sk@0 as c_customer_sk], aggr=[sum(store_sales.ss_ext_sales_price)] +10)------------------RepartitionExec: partitioning=Hash([c_customer_sk@0], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[c_customer_sk@0 as c_customer_sk], aggr=[sum(store_sales.ss_ext_sales_price)] +12)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_sold_date_sk@1, d_date_sk@0)], projection=[c_customer_sk@0, ss_ext_sales_price@2] +13)------------------------CoalescePartitionsExec +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_county@0, ca_county@3), (s_state@1, ca_state@4)], projection=[c_customer_sk@2, ss_sold_date_sk@3, ss_ext_sales_price@4] +15)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_county, s_state], file_type=vortex +16)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@1)], projection=[c_customer_sk@3, ss_sold_date_sk@5, ss_ext_sales_price@6, ca_county@1, ca_state@2] +17)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_county, ca_state], file_type=vortex +18)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_sk@0, c_current_addr_sk@1, ss_sold_date_sk@2, ss_ext_sales_price@4] +19)--------------------------------CoalescePartitionsExec +20)----------------------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_sk@0 as c_customer_sk, c_current_addr_sk@1 as c_current_addr_sk], aggr=[] +21)------------------------------------RepartitionExec: partitioning=Hash([c_customer_sk@0, c_current_addr_sk@1], 4), input_partitions=4 +22)--------------------------------------AggregateExec: mode=Partial, gby=[c_customer_sk@0 as c_customer_sk, c_current_addr_sk@1 as c_current_addr_sk], aggr=[] +23)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(customer_sk@0, c_customer_sk@0)] +24)------------------------------------------CoalescePartitionsExec +25)--------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, sold_date_sk@0)], projection=[customer_sk@1] +26)----------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 12 AND d_year@6 = 1998 +27)----------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_sk@0, item_sk@2)], projection=[sold_date_sk@0, customer_sk@1] +28)------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_category@12 = Women AND i_class@10 = maternity +29)------------------------------------------------UnionExec +30)--------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk@0 as sold_date_sk, cs_bill_customer_sk@3 as customer_sk, cs_item_sk@15 as item_sk], file_type=vortex +31)--------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk@0 as sold_date_sk, ws_bill_customer_sk@4 as customer_sk, ws_item_sk@3 as item_sk], file_type=vortex +32)------------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +33)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex +34)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_ext_sales_price], file_type=vortex +35)------------------------FilterExec: d_month_seq@1 >= scalar_subquery() AND d_month_seq@1 <= scalar_subquery(), projection=[d_date_sk@0] +36)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +37)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_month_seq], file_type=vortex +38)--AggregateExec: mode=FinalPartitioned, gby=[date_dim.d_month_seq + Int64(1)@0 as date_dim.d_month_seq + Int64(1)], aggr=[] +39)----RepartitionExec: partitioning=Hash([date_dim.d_month_seq + Int64(1)@0], 4), input_partitions=4 +40)------AggregateExec: mode=Partial, gby=[date_dim.d_month_seq + Int64(1)@0 as date_dim.d_month_seq + Int64(1)], aggr=[] +41)--------ProjectionExec: expr=[d_month_seq@0 + 1 as date_dim.d_month_seq + Int64(1)] +42)----------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +43)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_month_seq, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 12 +44)--AggregateExec: mode=FinalPartitioned, gby=[date_dim.d_month_seq + Int64(3)@0 as date_dim.d_month_seq + Int64(3)], aggr=[] +45)----RepartitionExec: partitioning=Hash([date_dim.d_month_seq + Int64(3)@0], 4), input_partitions=4 +46)------AggregateExec: mode=Partial, gby=[date_dim.d_month_seq + Int64(3)@0 as date_dim.d_month_seq + Int64(3)], aggr=[] +47)--------ProjectionExec: expr=[d_month_seq@0 + 3 as date_dim.d_month_seq + Int64(3)] +48)----------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +49)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_month_seq, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 12 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q55.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q55.slt.no new file mode 100644 index 00000000000..6e6a179358c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q55.slt.no @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_brand_id brand_id, + i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=28 + AND d_moy=11 + AND d_year=1999 +GROUP BY i_brand, + i_brand_id +ORDER BY ext_price DESC, + i_brand_id +LIMIT 100 ; +---- +logical_plan +01)Sort: ext_price DESC NULLS FIRST, brand_id ASC NULLS LAST, fetch=100 +02)--Projection: item.i_brand_id AS brand_id, item.i_brand AS brand, sum(store_sales.ss_ext_sales_price) AS ext_price +03)----Aggregate: groupBy=[[item.i_brand, item.i_brand_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +04)------Projection: store_sales.ss_ext_sales_price, item.i_brand_id, item.i_brand +05)--------Inner Join: store_sales.ss_item_sk = item.i_item_sk +06)----------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price +07)------------Inner Join: date_dim.d_date_sk = store_sales.ss_sold_date_sk +08)--------------Projection: date_dim.d_date_sk +09)----------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(1999) +10)------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(1999)] +11)--------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price] +12)----------Projection: item.i_item_sk, item.i_brand_id, item.i_brand +13)------------Filter: item.i_manager_id = Int64(28) +14)--------------TableScan: item projection=[i_item_sk, i_brand_id, i_brand, i_manager_id], partial_filters=[item.i_manager_id = Int64(28)] +physical_plan +01)SortPreservingMergeExec: [ext_price@2 DESC, brand_id@0 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_brand_id@1 as brand_id, i_brand@0 as brand, sum(store_sales.ss_ext_sales_price)@2 as ext_price] +03)----SortExec: TopK(fetch=100), expr=[sum(store_sales.ss_ext_sales_price)@2 DESC, i_brand_id@1 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_brand@0 as i_brand, i_brand_id@1 as i_brand_id], aggr=[sum(store_sales.ss_ext_sales_price)] +05)--------RepartitionExec: partitioning=Hash([i_brand@0, i_brand_id@1], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_brand@2 as i_brand, i_brand_id@1 as i_brand_id], aggr=[sum(store_sales.ss_ext_sales_price)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_ext_sales_price@4, i_brand_id@1, i_brand@2] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_brand], file_type=vortex, predicate: i_manager_id@20 = 28 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_ext_sales_price@3] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 1999 +11)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q56.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q56.slt.no new file mode 100644 index 00000000000..9ca42a709be --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q56.slt.no @@ -0,0 +1,200 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY total_sales NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: total_sales ASC NULLS FIRST, tmp1.i_item_id ASC NULLS FIRST, fetch=100 +02)--Projection: tmp1.i_item_id, sum(tmp1.total_sales) AS total_sales +03)----Aggregate: groupBy=[[tmp1.i_item_id]], aggr=[[sum(tmp1.total_sales)]] +04)------SubqueryAlias: tmp1 +05)--------Union +06)----------SubqueryAlias: ss +07)------------Projection: item.i_item_id, sum(store_sales.ss_ext_sales_price) AS total_sales +08)--------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +09)----------------LeftSemi Join: item.i_item_id = __correlated_sq_1.i_item_id +10)------------------Projection: store_sales.ss_ext_sales_price, item.i_item_id +11)--------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price +13)------------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +14)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_ext_sales_price +15)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +16)------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_addr_sk, ss_ext_sales_price] +17)------------------------------Projection: date_dim.d_date_sk +18)--------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(2) +19)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(2)] +20)--------------------------Projection: customer_address.ca_address_sk +21)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +22)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +23)----------------------TableScan: item projection=[i_item_sk, i_item_id] +24)------------------SubqueryAlias: __correlated_sq_1 +25)--------------------Projection: item.i_item_id +26)----------------------Filter: item.i_color = Utf8View("slate") OR item.i_color = Utf8View("blanched") OR item.i_color = Utf8View("burnished") +27)------------------------TableScan: item projection=[i_item_id, i_color], partial_filters=[item.i_color = Utf8View("slate") OR item.i_color = Utf8View("blanched") OR item.i_color = Utf8View("burnished")] +28)----------SubqueryAlias: cs +29)------------Projection: item.i_item_id, sum(catalog_sales.cs_ext_sales_price) AS total_sales +30)--------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(catalog_sales.cs_ext_sales_price)]] +31)----------------LeftSemi Join: item.i_item_id = __correlated_sq_2.i_item_id +32)------------------Projection: catalog_sales.cs_ext_sales_price, item.i_item_id +33)--------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +34)----------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +35)------------------------Inner Join: catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk +36)--------------------------Projection: catalog_sales.cs_bill_addr_sk, catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +37)----------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +38)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_addr_sk, cs_item_sk, cs_ext_sales_price] +39)------------------------------Projection: date_dim.d_date_sk +40)--------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(2) +41)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(2)] +42)--------------------------Projection: customer_address.ca_address_sk +43)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +44)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +45)----------------------TableScan: item projection=[i_item_sk, i_item_id] +46)------------------SubqueryAlias: __correlated_sq_2 +47)--------------------Projection: item.i_item_id +48)----------------------Filter: item.i_color = Utf8View("slate") OR item.i_color = Utf8View("blanched") OR item.i_color = Utf8View("burnished") +49)------------------------TableScan: item projection=[i_item_id, i_color], partial_filters=[item.i_color = Utf8View("slate") OR item.i_color = Utf8View("blanched") OR item.i_color = Utf8View("burnished")] +50)----------SubqueryAlias: ws +51)------------Projection: item.i_item_id, sum(web_sales.ws_ext_sales_price) AS total_sales +52)--------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +53)----------------LeftSemi Join: item.i_item_id = __correlated_sq_3.i_item_id +54)------------------Projection: web_sales.ws_ext_sales_price, item.i_item_id +55)--------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +56)----------------------Projection: web_sales.ws_item_sk, web_sales.ws_ext_sales_price +57)------------------------Inner Join: web_sales.ws_bill_addr_sk = customer_address.ca_address_sk +58)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_bill_addr_sk, web_sales.ws_ext_sales_price +59)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +60)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_addr_sk, ws_ext_sales_price] +61)------------------------------Projection: date_dim.d_date_sk +62)--------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(2) +63)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(2)] +64)--------------------------Projection: customer_address.ca_address_sk +65)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +66)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +67)----------------------TableScan: item projection=[i_item_sk, i_item_id] +68)------------------SubqueryAlias: __correlated_sq_3 +69)--------------------Projection: item.i_item_id +70)----------------------Filter: item.i_color = Utf8View("slate") OR item.i_color = Utf8View("blanched") OR item.i_color = Utf8View("burnished") +71)------------------------TableScan: item projection=[i_item_id, i_color], partial_filters=[item.i_color = Utf8View("slate") OR item.i_color = Utf8View("blanched") OR item.i_color = Utf8View("burnished")] +physical_plan +01)SortPreservingMergeExec: [total_sales@1 ASC, i_item_id@0 ASC], fetch=100 +02)--ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(tmp1.total_sales)@1 as total_sales] +03)----SortExec: TopK(fetch=100), expr=[sum(tmp1.total_sales)@1 ASC, i_item_id@0 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=SinglePartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(tmp1.total_sales)] +05)--------InterleaveExec +06)----------ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(store_sales.ss_ext_sales_price)@1 as total_sales] +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(store_sales.ss_ext_sales_price)] +08)--------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(store_sales.ss_ext_sales_price)] +10)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_id@0, i_item_id@1)] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_color@17 = slate OR i_color@17 = blanched OR i_color@17 = burnished +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_ext_sales_price@3, i_item_id@1] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_item_sk@1, ss_ext_sales_price@3] +15)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +16)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_addr_sk@3, ss_ext_sales_price@4] +17)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 2 +18)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_addr_sk, ss_ext_sales_price], file_type=vortex +19)----------ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(catalog_sales.cs_ext_sales_price)@1 as total_sales] +20)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +21)--------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +22)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +23)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_id@0, i_item_id@1)] +24)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_color@17 = slate OR i_color@17 = blanched OR i_color@17 = burnished +25)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +26)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_item_sk@0, i_item_sk@0)], projection=[cs_ext_sales_price@1, i_item_id@3] +27)------------------------CoalescePartitionsExec +28)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, cs_bill_addr_sk@0)], projection=[cs_item_sk@2, cs_ext_sales_price@3] +29)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +30)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_addr_sk@2, cs_item_sk@3, cs_ext_sales_price@4] +31)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 2 +32)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_addr_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex +33)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +34)----------ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(web_sales.ws_ext_sales_price)@1 as total_sales] +35)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(web_sales.ws_ext_sales_price)] +36)--------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +37)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(web_sales.ws_ext_sales_price)] +38)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_id@0, i_item_id@1)] +39)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_color@17 = slate OR i_color@17 = blanched OR i_color@17 = burnished +40)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +41)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_item_sk@0, i_item_sk@0)], projection=[ws_ext_sales_price@1, i_item_id@3] +42)------------------------CoalescePartitionsExec +43)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ws_bill_addr_sk@1)], projection=[ws_item_sk@1, ws_ext_sales_price@3] +44)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +45)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_bill_addr_sk@3, ws_ext_sales_price@4] +46)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 2 +47)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_bill_addr_sk, ws_ext_sales_price], file_type=vortex +48)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q57.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q57.slt.no new file mode 100644 index 00000000000..d09ad90ac2d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q57.slt.no @@ -0,0 +1,183 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH v1 AS + (SELECT i_category, + i_brand, + cc_name, + d_year, + d_moy, + sum(cs_sales_price) sum_sales, + avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, + i_brand, + cc_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + cc_name + ORDER BY d_year, + d_moy) rn + FROM item, + catalog_sales, + date_dim, + call_center + WHERE cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk= cs_call_center_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + cc_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.cc_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1. cc_name = v1_lag. cc_name + AND v1. cc_name = v1_lead. cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales NULLS FIRST, 1, 2, 3, 4, 5, 6, 7, 8, 9 +LIMIT 100; +---- +logical_plan +01)Sort: v2.sum_sales - v2.avg_monthly_sales ASC NULLS FIRST, v2.i_category ASC NULLS LAST, v2.i_brand ASC NULLS LAST, v2.cc_name ASC NULLS LAST, v2.d_year ASC NULLS LAST, v2.d_moy ASC NULLS LAST, v2.psum ASC NULLS LAST, v2.nsum ASC NULLS LAST, fetch=100 +02)--SubqueryAlias: v2 +03)----Projection: v1.i_category, v1.i_brand, v1.cc_name, v1.d_year, v1.d_moy, v1.avg_monthly_sales, v1.sum_sales, v1_lag.sum_sales AS psum, v1_lead.sum_sales AS nsum +04)------Inner Join: v1.i_category = v1_lead.i_category, v1.i_brand = v1_lead.i_brand, v1.cc_name = v1_lead.cc_name, CAST(v1.rn AS Decimal128(21, 0)) = CAST(v1_lead.rn AS Decimal128(20, 0)) - Decimal128(1,20,0) +05)--------Projection: v1.i_category, v1.i_brand, v1.cc_name, v1.d_year, v1.d_moy, v1.sum_sales, v1.avg_monthly_sales, v1.rn, v1_lag.sum_sales +06)----------Inner Join: v1.i_category = v1_lag.i_category, v1.i_brand = v1_lag.i_brand, v1.cc_name = v1_lag.cc_name, CAST(v1.rn AS Decimal128(21, 0)) = CAST(v1_lag.rn AS Decimal128(20, 0)) + Decimal128(1,20,0) +07)------------SubqueryAlias: v1 +08)--------------Projection: item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year, date_dim.d_moy, sum(catalog_sales.cs_sales_price) AS sum_sales, avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS avg_monthly_sales, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rn +09)----------------Filter: __common_expr_3 AND CASE WHEN __common_expr_3 THEN abs(sum(catalog_sales.cs_sales_price) - avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) / avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ELSE Decimal128(NULL,32,10) END > Decimal128(0.1000000000,32,10) +10)------------------Projection: avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING > Decimal128(0.000000,21,6) AS __common_expr_3, item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year, date_dim.d_moy, sum(catalog_sales.cs_sales_price), rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING +11)--------------------WindowAggr: windowExpr=[[avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +12)----------------------Filter: date_dim.d_year = Int64(1999) +13)------------------------WindowAggr: windowExpr=[[rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +14)--------------------------Aggregate: groupBy=[[item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year, date_dim.d_moy]], aggr=[[sum(catalog_sales.cs_sales_price)]] +15)----------------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_sales_price, date_dim.d_year, date_dim.d_moy, call_center.cc_name +16)------------------------------Inner Join: catalog_sales.cs_call_center_sk = call_center.cc_call_center_sk +17)--------------------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_call_center_sk, catalog_sales.cs_sales_price, date_dim.d_year, date_dim.d_moy +18)----------------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +19)------------------------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_sold_date_sk, catalog_sales.cs_call_center_sk, catalog_sales.cs_sales_price +20)--------------------------------------Inner Join: item.i_item_sk = catalog_sales.cs_item_sk +21)----------------------------------------TableScan: item projection=[i_item_sk, i_brand, i_category] +22)----------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_call_center_sk, cs_item_sk, cs_sales_price] +23)------------------------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1) +24)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1)] +25)--------------------------------TableScan: call_center projection=[cc_call_center_sk, cc_name] +26)------------SubqueryAlias: v1_lag +27)--------------SubqueryAlias: v1 +28)----------------Projection: item.i_category, item.i_brand, call_center.cc_name, sum(catalog_sales.cs_sales_price) AS sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rn +29)------------------WindowAggr: windowExpr=[[rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +30)--------------------Aggregate: groupBy=[[item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year, date_dim.d_moy]], aggr=[[sum(catalog_sales.cs_sales_price)]] +31)----------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_sales_price, date_dim.d_year, date_dim.d_moy, call_center.cc_name +32)------------------------Inner Join: catalog_sales.cs_call_center_sk = call_center.cc_call_center_sk +33)--------------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_call_center_sk, catalog_sales.cs_sales_price, date_dim.d_year, date_dim.d_moy +34)----------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +35)------------------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_sold_date_sk, catalog_sales.cs_call_center_sk, catalog_sales.cs_sales_price +36)--------------------------------Inner Join: item.i_item_sk = catalog_sales.cs_item_sk +37)----------------------------------TableScan: item projection=[i_item_sk, i_brand, i_category] +38)----------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_call_center_sk, cs_item_sk, cs_sales_price] +39)------------------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1) +40)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1)] +41)--------------------------TableScan: call_center projection=[cc_call_center_sk, cc_name] +42)--------SubqueryAlias: v1_lead +43)----------SubqueryAlias: v1 +44)------------Projection: item.i_category, item.i_brand, call_center.cc_name, sum(catalog_sales.cs_sales_price) AS sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rn +45)--------------WindowAggr: windowExpr=[[rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +46)----------------Aggregate: groupBy=[[item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year, date_dim.d_moy]], aggr=[[sum(catalog_sales.cs_sales_price)]] +47)------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_sales_price, date_dim.d_year, date_dim.d_moy, call_center.cc_name +48)--------------------Inner Join: catalog_sales.cs_call_center_sk = call_center.cc_call_center_sk +49)----------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_call_center_sk, catalog_sales.cs_sales_price, date_dim.d_year, date_dim.d_moy +50)------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +51)--------------------------Projection: item.i_brand, item.i_category, catalog_sales.cs_sold_date_sk, catalog_sales.cs_call_center_sk, catalog_sales.cs_sales_price +52)----------------------------Inner Join: item.i_item_sk = catalog_sales.cs_item_sk +53)------------------------------TableScan: item projection=[i_item_sk, i_brand, i_category] +54)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_call_center_sk, cs_item_sk, cs_sales_price] +55)--------------------------Filter: date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1) +56)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(12) OR date_dim.d_year = Int64(2000) AND date_dim.d_moy = Int64(1)] +57)----------------------TableScan: call_center projection=[cc_call_center_sk, cc_name] +physical_plan +01)SortPreservingMergeExec: [sum_sales@6 - avg_monthly_sales@5 ASC, i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, cc_name@2 ASC NULLS LAST, d_year@3 ASC NULLS LAST, d_moy@4 ASC NULLS LAST, psum@7 ASC NULLS LAST, nsum@8 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[sum_sales@6 - avg_monthly_sales@5 ASC, i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, cc_name@2 ASC NULLS LAST, d_moy@4 ASC NULLS LAST, psum@7 ASC NULLS LAST, nsum@8 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy, avg_monthly_sales@5 as avg_monthly_sales, sum_sales@6 as sum_sales, sum_sales@7 as psum, sum_sales@8 as nsum] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_category@0, i_category@0), (i_brand@1, i_brand@1), (cc_name@2, cc_name@2), (CAST(v1.rn AS Decimal128(21, 0))@9, v1_lead.rn - Decimal128(1,20,0)@5)], projection=[i_category@0, i_brand@1, cc_name@2, d_year@3, d_moy@4, avg_monthly_sales@6, sum_sales@5, sum_sales@8, sum_sales@13] +05)--------CoalescePartitionsExec +06)----------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy, sum_sales@5 as sum_sales, avg_monthly_sales@6 as avg_monthly_sales, rn@7 as rn, sum_sales@8 as sum_sales, CAST(rn@7 AS Decimal128(21, 0)) as CAST(v1.rn AS Decimal128(21, 0))] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_category@0, i_category@0), (i_brand@1, i_brand@1), (cc_name@2, cc_name@2), (CAST(v1.rn AS Decimal128(21, 0))@8, v1_lag.rn + Decimal128(1,20,0)@5)], projection=[i_category@0, i_brand@1, cc_name@2, d_year@3, d_moy@4, sum_sales@5, avg_monthly_sales@6, rn@7, sum_sales@12] +08)--------------CoalescePartitionsExec +09)----------------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy, sum(catalog_sales.cs_sales_price)@5 as sum_sales, avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@6 as avg_monthly_sales, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 as rn, CAST(rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7 AS Decimal128(21, 0)) as CAST(v1.rn AS Decimal128(21, 0))] +10)------------------FilterExec: __common_expr_3@0 AND CASE WHEN __common_expr_3@0 THEN abs(sum(catalog_sales.cs_sales_price)@6 - avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@8) / avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@8 END > 0.1000000000, projection=[i_category@1, i_brand@2, cc_name@3, d_year@4, d_moy@5, sum(catalog_sales.cs_sales_price)@6, avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@8, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@7] +11)--------------------ProjectionExec: expr=[avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7 > 0.000000 as __common_expr_3, i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy, sum(catalog_sales.cs_sales_price)@5 as sum(catalog_sales.cs_sales_price), rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@6 as rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7 as avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING] +12)----------------------WindowAggExec: wdw=[avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "avg(sum(catalog_sales.cs_sales_price)) PARTITION BY [item.i_category, item.i_brand, call_center.cc_name, date_dim.d_year] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(21, 6), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +13)------------------------FilterExec: d_year@3 = 1999 +14)--------------------------BoundedWindowAggExec: wdw=[rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +15)----------------------------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, cc_name@2 ASC NULLS LAST, d_year@3 ASC NULLS LAST, d_moy@4 ASC NULLS LAST], preserve_partitioning=[true] +16)------------------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, cc_name@2], 4), input_partitions=4 +17)--------------------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(catalog_sales.cs_sales_price)] +18)----------------------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, cc_name@2, d_year@3, d_moy@4], 4), input_partitions=4 +19)------------------------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category, i_brand@0 as i_brand, cc_name@5 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(catalog_sales.cs_sales_price)] +20)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cc_call_center_sk@0, cs_call_center_sk@2)], projection=[i_brand@2, i_category@3, cs_sales_price@5, d_year@6, d_moy@7, cc_name@1] +21)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/call_center.vortex]]}, projection=[cc_call_center_sk, cc_name], file_type=vortex +22)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@2)], projection=[i_brand@3, i_category@4, cs_call_center_sk@6, cs_sales_price@7, d_year@1, d_moy@2] +23)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 1998 AND d_moy@8 = 12 OR d_year@6 = 2000 AND d_moy@8 = 1 +24)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@2)], projection=[i_brand@1, i_category@2, cs_sold_date_sk@3, cs_call_center_sk@4, cs_sales_price@6] +25)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_category], file_type=vortex +26)--------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_call_center_sk, cs_item_sk, cs_sales_price], file_type=vortex +27)--------------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, sum(catalog_sales.cs_sales_price)@5 as sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@6 as rn, CAST(rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@6 AS Decimal128(20, 0)) + 1 as v1_lag.rn + Decimal128(1,20,0)] +28)----------------BoundedWindowAggExec: wdw=[rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +29)------------------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, cc_name@2 ASC NULLS LAST, d_year@3 ASC NULLS LAST, d_moy@4 ASC NULLS LAST], preserve_partitioning=[true] +30)--------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, cc_name@2], 4), input_partitions=4 +31)----------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(catalog_sales.cs_sales_price)] +32)------------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, cc_name@2, d_year@3, d_moy@4], 4), input_partitions=4 +33)--------------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category, i_brand@0 as i_brand, cc_name@5 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(catalog_sales.cs_sales_price)] +34)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cc_call_center_sk@0, cs_call_center_sk@2)], projection=[i_brand@2, i_category@3, cs_sales_price@5, d_year@6, d_moy@7, cc_name@1] +35)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/call_center.vortex]]}, projection=[cc_call_center_sk, cc_name], file_type=vortex +36)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@2)], projection=[i_brand@3, i_category@4, cs_call_center_sk@6, cs_sales_price@7, d_year@1, d_moy@2] +37)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 1998 AND d_moy@8 = 12 OR d_year@6 = 2000 AND d_moy@8 = 1 +38)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@2)], projection=[i_brand@1, i_category@2, cs_sold_date_sk@3, cs_call_center_sk@4, cs_sales_price@6] +39)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_category], file_type=vortex +40)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_call_center_sk, cs_item_sk, cs_sales_price], file_type=vortex +41)--------ProjectionExec: expr=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, sum(catalog_sales.cs_sales_price)@5 as sum_sales, rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@6 as rn, CAST(rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@6 AS Decimal128(20, 0)) - 1 as v1_lead.rn - Decimal128(1,20,0)] +42)----------BoundedWindowAggExec: wdw=[rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [item.i_category, item.i_brand, call_center.cc_name] ORDER BY [date_dim.d_year ASC NULLS LAST, date_dim.d_moy ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +43)------------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@1 ASC NULLS LAST, cc_name@2 ASC NULLS LAST, d_year@3 ASC NULLS LAST, d_moy@4 ASC NULLS LAST], preserve_partitioning=[true] +44)--------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, cc_name@2], 4), input_partitions=4 +45)----------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_brand@1 as i_brand, cc_name@2 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(catalog_sales.cs_sales_price)] +46)------------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@1, cc_name@2, d_year@3, d_moy@4], 4), input_partitions=4 +47)--------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category, i_brand@0 as i_brand, cc_name@5 as cc_name, d_year@3 as d_year, d_moy@4 as d_moy], aggr=[sum(catalog_sales.cs_sales_price)] +48)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cc_call_center_sk@0, cs_call_center_sk@2)], projection=[i_brand@2, i_category@3, cs_sales_price@5, d_year@6, d_moy@7, cc_name@1] +49)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/call_center.vortex]]}, projection=[cc_call_center_sk, cc_name], file_type=vortex +50)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@2)], projection=[i_brand@3, i_category@4, cs_call_center_sk@6, cs_sales_price@7, d_year@1, d_moy@2] +51)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 1999 OR d_year@6 = 1998 AND d_moy@8 = 12 OR d_year@6 = 2000 AND d_moy@8 = 1 +52)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@2)], projection=[i_brand@1, i_category@2, cs_sold_date_sk@3, cs_call_center_sk@4, cs_sales_price@6] +53)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_category], file_type=vortex +54)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_call_center_sk, cs_item_sk, cs_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q58.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q58.slt.no new file mode 100644 index 00000000000..7e17f54dafc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q58.slt.no @@ -0,0 +1,198 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ss_items AS + (SELECT i_item_id item_id, + sum(ss_ext_sales_price) ss_item_rev + FROM store_sales, + item, + date_dim + WHERE ss_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id), + cs_items AS + (SELECT i_item_id item_id, + sum(cs_ext_sales_price) cs_item_rev + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id), + ws_items AS + (SELECT i_item_id item_id, + sum(ws_ext_sales_price) ws_item_rev + FROM web_sales, + item, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT ss_items.item_id, + ss_item_rev, + ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev, + cs_item_rev, + cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev, + ws_item_rev, + ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev, + (ss_item_rev+cs_item_rev+ws_item_rev)/3 average +FROM ss_items, + cs_items, + ws_items +WHERE ss_items.item_id=cs_items.item_id + AND ss_items.item_id=ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +ORDER BY ss_items.item_id NULLS FIRST, + ss_item_rev NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: ss_items.item_id ASC NULLS FIRST, fetch=100 +02)--Projection: ss_items.item_id, ss_items.ss_item_rev, ss_items.ss_item_rev / __common_expr_4 * Decimal128(100,20,0) AS ss_dev, cs_items.cs_item_rev, cs_items.cs_item_rev / __common_expr_4 * Decimal128(100,20,0) AS cs_dev, ws_items.ws_item_rev, ws_items.ws_item_rev / __common_expr_4 * Decimal128(100,20,0) AS ws_dev, __common_expr_4 AS average +03)----Projection: (ss_items.ss_item_rev + cs_items.cs_item_rev + ws_items.ws_item_rev) / Decimal128(3,20,0) AS __common_expr_4, ss_items.item_id, ss_items.ss_item_rev, cs_items.cs_item_rev, ws_items.ws_item_rev +04)------Inner Join: ss_items.item_id = ws_items.item_id Filter: CAST(ss_items.ss_item_rev AS Decimal128(30, 15)) >= CAST(Float64(0.9) * CAST(ws_items.ws_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(ss_items.ss_item_rev AS Decimal128(30, 15)) <= CAST(Float64(1.1) * CAST(ws_items.ws_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(cs_items.cs_item_rev AS Decimal128(30, 15)) >= CAST(Float64(0.9) * CAST(ws_items.ws_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(cs_items.cs_item_rev AS Decimal128(30, 15)) <= CAST(Float64(1.1) * CAST(ws_items.ws_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(ws_items.ws_item_rev AS Decimal128(30, 15)) >= CAST(Float64(0.9) * CAST(ss_items.ss_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(ws_items.ws_item_rev AS Decimal128(30, 15)) <= CAST(Float64(1.1) * CAST(ss_items.ss_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(ws_items.ws_item_rev AS Decimal128(30, 15)) >= CAST(Float64(0.9) * CAST(cs_items.cs_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(ws_items.ws_item_rev AS Decimal128(30, 15)) <= CAST(Float64(1.1) * CAST(cs_items.cs_item_rev AS Float64) AS Decimal128(30, 15)) +05)--------Projection: ss_items.item_id, ss_items.ss_item_rev, cs_items.cs_item_rev +06)----------Inner Join: ss_items.item_id = cs_items.item_id Filter: CAST(ss_items.ss_item_rev AS Decimal128(30, 15)) >= CAST(Float64(0.9) * CAST(cs_items.cs_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(ss_items.ss_item_rev AS Decimal128(30, 15)) <= CAST(Float64(1.1) * CAST(cs_items.cs_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(cs_items.cs_item_rev AS Decimal128(30, 15)) >= CAST(Float64(0.9) * CAST(ss_items.ss_item_rev AS Float64) AS Decimal128(30, 15)) AND CAST(cs_items.cs_item_rev AS Decimal128(30, 15)) <= CAST(Float64(1.1) * CAST(ss_items.ss_item_rev AS Float64) AS Decimal128(30, 15)) +07)------------SubqueryAlias: ss_items +08)--------------Projection: item.i_item_id AS item_id, sum(store_sales.ss_ext_sales_price) AS ss_item_rev +09)----------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +10)------------------Projection: store_sales.ss_ext_sales_price, item.i_item_id +11)--------------------LeftSemi Join: date_dim.d_date = __correlated_sq_1.d_date +12)----------------------Projection: store_sales.ss_ext_sales_price, item.i_item_id, date_dim.d_date +13)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)--------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_ext_sales_price, item.i_item_id +15)----------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +16)------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price] +17)------------------------------TableScan: item projection=[i_item_sk, i_item_id] +18)--------------------------TableScan: date_dim projection=[d_date_sk, d_date] +19)----------------------SubqueryAlias: __correlated_sq_1 +20)------------------------Projection: date_dim.d_date +21)--------------------------Filter: date_dim.d_week_seq = () +22)----------------------------Subquery: +23)------------------------------Projection: date_dim.d_week_seq +24)--------------------------------Filter: date_dim.d_date = Date32("2000-01-03") +25)----------------------------------TableScan: date_dim projection=[d_date, d_week_seq], partial_filters=[date_dim.d_date = Date32("2000-01-03")] +26)----------------------------TableScan: date_dim projection=[d_date, d_week_seq] +27)------------SubqueryAlias: cs_items +28)--------------Projection: item.i_item_id AS item_id, sum(catalog_sales.cs_ext_sales_price) AS cs_item_rev +29)----------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(catalog_sales.cs_ext_sales_price)]] +30)------------------Projection: catalog_sales.cs_ext_sales_price, item.i_item_id +31)--------------------LeftSemi Join: date_dim.d_date = __correlated_sq_2.d_date +32)----------------------Projection: catalog_sales.cs_ext_sales_price, item.i_item_id, date_dim.d_date +33)------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +34)--------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ext_sales_price, item.i_item_id +35)----------------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +36)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_ext_sales_price] +37)------------------------------TableScan: item projection=[i_item_sk, i_item_id] +38)--------------------------TableScan: date_dim projection=[d_date_sk, d_date] +39)----------------------SubqueryAlias: __correlated_sq_2 +40)------------------------Projection: date_dim.d_date +41)--------------------------Filter: date_dim.d_week_seq = () +42)----------------------------Subquery: +43)------------------------------Projection: date_dim.d_week_seq +44)--------------------------------Filter: date_dim.d_date = Date32("2000-01-03") +45)----------------------------------TableScan: date_dim projection=[d_date, d_week_seq], partial_filters=[date_dim.d_date = Date32("2000-01-03")] +46)----------------------------TableScan: date_dim projection=[d_date, d_week_seq] +47)--------SubqueryAlias: ws_items +48)----------Projection: item.i_item_id AS item_id, sum(web_sales.ws_ext_sales_price) AS ws_item_rev +49)------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +50)--------------Projection: web_sales.ws_ext_sales_price, item.i_item_id +51)----------------LeftSemi Join: date_dim.d_date = __correlated_sq_3.d_date +52)------------------Projection: web_sales.ws_ext_sales_price, item.i_item_id, date_dim.d_date +53)--------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +54)----------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ext_sales_price, item.i_item_id +55)------------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +56)--------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_ext_sales_price] +57)--------------------------TableScan: item projection=[i_item_sk, i_item_id] +58)----------------------TableScan: date_dim projection=[d_date_sk, d_date] +59)------------------SubqueryAlias: __correlated_sq_3 +60)--------------------Projection: date_dim.d_date +61)----------------------Filter: date_dim.d_week_seq = () +62)------------------------Subquery: +63)--------------------------Projection: date_dim.d_week_seq +64)----------------------------Filter: date_dim.d_date = Date32("2000-01-03") +65)------------------------------TableScan: date_dim projection=[d_date, d_week_seq], partial_filters=[date_dim.d_date = Date32("2000-01-03")] +66)------------------------TableScan: date_dim projection=[d_date, d_week_seq] +physical_plan +01)ScalarSubqueryExec: subqueries=1 +02)--SortPreservingMergeExec: [item_id@0 ASC], fetch=100 +03)----SortExec: TopK(fetch=100), expr=[item_id@0 ASC], preserve_partitioning=[true] +04)------ProjectionExec: expr=[item_id@1 as item_id, ss_item_rev@2 as ss_item_rev, ss_item_rev@2 / __common_expr_4@0 * 100 as ss_dev, cs_item_rev@3 as cs_item_rev, cs_item_rev@3 / __common_expr_4@0 * 100 as cs_dev, ws_item_rev@4 as ws_item_rev, ws_item_rev@4 / __common_expr_4@0 * 100 as ws_dev, __common_expr_4@0 as average] +05)--------ProjectionExec: expr=[(ss_item_rev@0 + cs_item_rev@1 + ws_item_rev@2) / 3 as __common_expr_4, item_id@3 as item_id, ss_item_rev@0 as ss_item_rev, cs_item_rev@1 as cs_item_rev, ws_item_rev@2 as ws_item_rev] +06)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_id@0, item_id@0)], filter=CAST(ss_item_rev@0 AS Decimal128(30, 15)) >= CAST(0.9 * CAST(ws_item_rev@2 AS Float64) AS Decimal128(30, 15)) AND CAST(ss_item_rev@0 AS Decimal128(30, 15)) <= CAST(1.1 * CAST(ws_item_rev@2 AS Float64) AS Decimal128(30, 15)) AND CAST(cs_item_rev@1 AS Decimal128(30, 15)) >= CAST(0.9 * CAST(ws_item_rev@2 AS Float64) AS Decimal128(30, 15)) AND CAST(cs_item_rev@1 AS Decimal128(30, 15)) <= CAST(1.1 * CAST(ws_item_rev@2 AS Float64) AS Decimal128(30, 15)) AND CAST(ws_item_rev@2 AS Decimal128(30, 15)) >= CAST(0.9 * CAST(ss_item_rev@0 AS Float64) AS Decimal128(30, 15)) AND CAST(ws_item_rev@2 AS Decimal128(30, 15)) <= CAST(1.1 * CAST(ss_item_rev@0 AS Float64) AS Decimal128(30, 15)) AND CAST(ws_item_rev@2 AS Decimal128(30, 15)) >= CAST(0.9 * CAST(cs_item_rev@1 AS Float64) AS Decimal128(30, 15)) AND CAST(ws_item_rev@2 AS Decimal128(30, 15)) <= CAST(1.1 * CAST(cs_item_rev@1 AS Float64) AS Decimal128(30, 15)), projection=[ss_item_rev@3, cs_item_rev@4, ws_item_rev@1, item_id@2] +07)------------CoalescePartitionsExec +08)--------------ProjectionExec: expr=[i_item_id@0 as item_id, sum(web_sales.ws_ext_sales_price)@1 as ws_item_rev] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(web_sales.ws_ext_sales_price)] +10)------------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(web_sales.ws_ext_sales_price)] +12)----------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date@0, d_date@2)], projection=[ws_ext_sales_price@0, i_item_id@1] +13)------------------------CoalescePartitionsExec +14)--------------------------FilterExec: d_week_seq@1 = scalar_subquery(), projection=[d_date@0] +15)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +16)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date, d_week_seq], file_type=vortex +17)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_sold_date_sk@0, d_date_sk@0)], projection=[ws_ext_sales_price@1, i_item_id@2, d_date@4] +18)--------------------------CoalescePartitionsExec +19)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@2, ws_ext_sales_price@4, i_item_id@1] +20)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +21)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_ext_sales_price], file_type=vortex +22)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +23)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +24)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_id@0, item_id@0)], filter=CAST(ss_item_rev@0 AS Decimal128(30, 15)) >= CAST(0.9 * CAST(cs_item_rev@1 AS Float64) AS Decimal128(30, 15)) AND CAST(ss_item_rev@0 AS Decimal128(30, 15)) <= CAST(1.1 * CAST(cs_item_rev@1 AS Float64) AS Decimal128(30, 15)) AND CAST(cs_item_rev@1 AS Decimal128(30, 15)) >= CAST(0.9 * CAST(ss_item_rev@0 AS Float64) AS Decimal128(30, 15)) AND CAST(cs_item_rev@1 AS Decimal128(30, 15)) <= CAST(1.1 * CAST(ss_item_rev@0 AS Float64) AS Decimal128(30, 15)), projection=[item_id@2, ss_item_rev@3, cs_item_rev@1] +25)--------------CoalescePartitionsExec +26)----------------ProjectionExec: expr=[i_item_id@0 as item_id, sum(catalog_sales.cs_ext_sales_price)@1 as cs_item_rev] +27)------------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +28)--------------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +29)----------------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +30)------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date@0, d_date@2)], projection=[cs_ext_sales_price@0, i_item_id@1] +31)--------------------------CoalescePartitionsExec +32)----------------------------FilterExec: d_week_seq@1 = scalar_subquery(), projection=[d_date@0] +33)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +34)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date, d_week_seq], file_type=vortex +35)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ext_sales_price@3, i_item_id@4, d_date@1] +36)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +37)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@2, cs_ext_sales_price@4, i_item_id@1] +38)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +39)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex +40)--------------ProjectionExec: expr=[i_item_id@0 as item_id, sum(store_sales.ss_ext_sales_price)@1 as ss_item_rev] +41)----------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(store_sales.ss_ext_sales_price)] +42)------------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +43)--------------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(store_sales.ss_ext_sales_price)] +44)----------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date@0, d_date@2)], projection=[ss_ext_sales_price@0, i_item_id@1] +45)------------------------CoalescePartitionsExec +46)--------------------------FilterExec: d_week_seq@1 = scalar_subquery(), projection=[d_date@0] +47)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +48)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date, d_week_seq], file_type=vortex +49)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_ext_sales_price@3, i_item_id@4, d_date@1] +50)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +51)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@2, ss_ext_sales_price@4, i_item_id@1] +52)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +53)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex +54)--DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_date@2 = 2000-01-03 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q59.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q59.slt.no new file mode 100644 index 00000000000..4f2cf06f67c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q59.slt.no @@ -0,0 +1,159 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH wss AS + (SELECT d_week_seq, + ss_store_sk, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, + ss_store_sk) +SELECT s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1/sun_sales2 AS sun_sales_ratio, + mon_sales1/mon_sales2 AS mon_sales_ratio, + tue_sales1/tue_sales2 AS tue_sales_ratio, + wed_sales1/wed_sales2 AS wed_sales_ratio, + thu_sales1/thu_sales2 AS thu_sales_ratio, + fri_sales1/fri_sales2 AS fri_sales_ratio, + sat_sales1/sat_sales2 AS sat_sales_ratio +FROM + (SELECT s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 AND 1212 + 11) y, + (SELECT s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 + 12 AND 1212 + 23) x +WHERE s_store_id1=s_store_id2 + AND d_week_seq1=d_week_seq2-52 +ORDER BY s_store_name1 NULLS FIRST, + s_store_id1 NULLS FIRST, + d_week_seq1 NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: y.s_store_name1 ASC NULLS FIRST, y.s_store_id1 ASC NULLS FIRST, y.d_week_seq1 ASC NULLS FIRST, fetch=100 +02)--Projection: y.s_store_name1, y.s_store_id1, y.d_week_seq1, y.sun_sales1 / x.sun_sales2 AS sun_sales_ratio, y.mon_sales1 / x.mon_sales2 AS mon_sales_ratio, y.tue_sales1 / x.tue_sales2 AS tue_sales_ratio, y.wed_sales1 / x.wed_sales2 AS wed_sales_ratio, y.thu_sales1 / x.thu_sales2 AS thu_sales_ratio, y.fri_sales1 / x.fri_sales2 AS fri_sales_ratio, y.sat_sales1 / x.sat_sales2 AS sat_sales_ratio +03)----Inner Join: y.s_store_id1 = x.s_store_id2, y.d_week_seq1 = x.d_week_seq2 - Int64(52) +04)------SubqueryAlias: y +05)--------Projection: store.s_store_name AS s_store_name1, wss.d_week_seq AS d_week_seq1, store.s_store_id AS s_store_id1, wss.sun_sales AS sun_sales1, wss.mon_sales AS mon_sales1, wss.tue_sales AS tue_sales1, wss.wed_sales AS wed_sales1, wss.thu_sales AS thu_sales1, wss.fri_sales AS fri_sales1, wss.sat_sales AS sat_sales1 +06)----------Inner Join: wss.d_week_seq = d.d_week_seq +07)------------Projection: wss.d_week_seq, wss.sun_sales, wss.mon_sales, wss.tue_sales, wss.wed_sales, wss.thu_sales, wss.fri_sales, wss.sat_sales, store.s_store_id, store.s_store_name +08)--------------Inner Join: wss.ss_store_sk = store.s_store_sk +09)----------------SubqueryAlias: wss +10)------------------Projection: date_dim.d_week_seq, store_sales.ss_store_sk, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END) AS sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END) AS mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END) AS tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END) AS wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END) AS thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END) AS fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END) AS sat_sales +11)--------------------Aggregate: groupBy=[[date_dim.d_week_seq, store_sales.ss_store_sk]], aggr=[[sum(CASE WHEN date_dim.d_day_name = Utf8View("Sunday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Monday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Tuesday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Wednesday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Thursday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Friday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Saturday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)]] +12)----------------------Projection: store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_week_seq, date_dim.d_day_name +13)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_sales_price] +15)--------------------------TableScan: date_dim projection=[d_date_sk, d_week_seq, d_day_name] +16)----------------TableScan: store projection=[s_store_sk, s_store_id, s_store_name] +17)------------SubqueryAlias: d +18)--------------Projection: date_dim.d_week_seq +19)----------------Filter: date_dim.d_month_seq >= Int64(1212) AND date_dim.d_month_seq <= Int64(1223) +20)------------------TableScan: date_dim projection=[d_month_seq, d_week_seq], partial_filters=[date_dim.d_month_seq >= Int64(1212), date_dim.d_month_seq <= Int64(1223)] +21)------SubqueryAlias: x +22)--------Projection: wss.d_week_seq AS d_week_seq2, store.s_store_id AS s_store_id2, wss.sun_sales AS sun_sales2, wss.mon_sales AS mon_sales2, wss.tue_sales AS tue_sales2, wss.wed_sales AS wed_sales2, wss.thu_sales AS thu_sales2, wss.fri_sales AS fri_sales2, wss.sat_sales AS sat_sales2 +23)----------Inner Join: wss.d_week_seq = d.d_week_seq +24)------------Projection: wss.d_week_seq, wss.sun_sales, wss.mon_sales, wss.tue_sales, wss.wed_sales, wss.thu_sales, wss.fri_sales, wss.sat_sales, store.s_store_id +25)--------------Inner Join: wss.ss_store_sk = store.s_store_sk +26)----------------SubqueryAlias: wss +27)------------------Projection: date_dim.d_week_seq, store_sales.ss_store_sk, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END) AS sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END) AS mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END) AS tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END) AS wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END) AS thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END) AS fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END) AS sat_sales +28)--------------------Aggregate: groupBy=[[date_dim.d_week_seq, store_sales.ss_store_sk]], aggr=[[sum(CASE WHEN date_dim.d_day_name = Utf8View("Sunday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Monday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Tuesday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Wednesday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Thursday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Friday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Utf8View("Saturday") THEN store_sales.ss_sales_price ELSE Decimal128(NULL,7,2) END) AS sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)]] +29)----------------------Projection: store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_week_seq, date_dim.d_day_name +30)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +31)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_sales_price] +32)--------------------------TableScan: date_dim projection=[d_date_sk, d_week_seq, d_day_name] +33)----------------TableScan: store projection=[s_store_sk, s_store_id] +34)------------SubqueryAlias: d +35)--------------Projection: date_dim.d_week_seq +36)----------------Filter: date_dim.d_month_seq >= Int64(1224) AND date_dim.d_month_seq <= Int64(1235) +37)------------------TableScan: date_dim projection=[d_month_seq, d_week_seq], partial_filters=[date_dim.d_month_seq >= Int64(1224), date_dim.d_month_seq <= Int64(1235)] +physical_plan +01)SortPreservingMergeExec: [s_store_name1@0 ASC, s_store_id1@1 ASC, d_week_seq1@2 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[s_store_name1@0 ASC, s_store_id1@1 ASC, d_week_seq1@2 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[s_store_name1@0 as s_store_name1, s_store_id1@1 as s_store_id1, d_week_seq1@2 as d_week_seq1, sun_sales1@3 / sun_sales2@4 as sun_sales_ratio, mon_sales1@5 / mon_sales2@6 as mon_sales_ratio, tue_sales1@7 / tue_sales2@8 as tue_sales_ratio, wed_sales1@9 / wed_sales2@10 as wed_sales_ratio, thu_sales1@11 / thu_sales2@12 as thu_sales_ratio, fri_sales1@13 / fri_sales2@14 as fri_sales_ratio, sat_sales1@15 / sat_sales2@16 as sat_sales_ratio] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_id1@2, s_store_id2@1), (d_week_seq1@1, x.d_week_seq2 - Int64(52)@9)], projection=[s_store_name1@0, s_store_id1@2, d_week_seq1@1, sun_sales1@3, sun_sales2@12, mon_sales1@4, mon_sales2@13, tue_sales1@5, tue_sales2@14, wed_sales1@6, wed_sales2@15, thu_sales1@7, thu_sales2@16, fri_sales1@8, fri_sales2@17, sat_sales1@9, sat_sales2@18] +05)--------CoalescePartitionsExec +06)----------ProjectionExec: expr=[s_store_name@0 as s_store_name1, d_week_seq@1 as d_week_seq1, s_store_id@2 as s_store_id1, sun_sales@3 as sun_sales1, mon_sales@4 as mon_sales1, tue_sales@5 as tue_sales1, wed_sales@6 as wed_sales1, thu_sales@7 as thu_sales1, fri_sales@8 as fri_sales1, sat_sales@9 as sat_sales1] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_week_seq@0, d_week_seq@0)], projection=[s_store_name@10, d_week_seq@1, s_store_id@9, sun_sales@2, mon_sales@3, tue_sales@4, wed_sales@5, thu_sales@6, fri_sales@7, sat_sales@8] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_month_seq@3 >= 1212 AND d_month_seq@3 <= 1223 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[d_week_seq@3, sun_sales@5, mon_sales@6, tue_sales@7, wed_sales@8, thu_sales@9, fri_sales@10, sat_sales@11, s_store_id@1, s_store_name@2] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id, s_store_name], file_type=vortex +11)----------------ProjectionExec: expr=[d_week_seq@0 as d_week_seq, ss_store_sk@1 as ss_store_sk, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END)@2 as sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END)@3 as mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END)@4 as tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END)@5 as wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END)@6 as thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END)@7 as fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)@8 as sat_sales] +12)------------------AggregateExec: mode=FinalPartitioned, gby=[d_week_seq@0 as d_week_seq, ss_store_sk@1 as ss_store_sk], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)] +13)--------------------RepartitionExec: partitioning=Hash([d_week_seq@0, ss_store_sk@1], 4), input_partitions=4 +14)----------------------AggregateExec: mode=Partial, gby=[d_week_seq@2 as d_week_seq, ss_store_sk@0 as ss_store_sk], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)] +15)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_store_sk@4, ss_sales_price@5, d_week_seq@1, d_day_name@2] +16)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_week_seq, d_day_name], file_type=vortex +17)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_sales_price], file_type=vortex +18)--------ProjectionExec: expr=[d_week_seq@0 as d_week_seq2, s_store_id@1 as s_store_id2, sun_sales@2 as sun_sales2, mon_sales@3 as mon_sales2, tue_sales@4 as tue_sales2, wed_sales@5 as wed_sales2, thu_sales@6 as thu_sales2, fri_sales@7 as fri_sales2, sat_sales@8 as sat_sales2, d_week_seq@0 - 52 as x.d_week_seq2 - Int64(52)] +19)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_week_seq@0, d_week_seq@0)], projection=[d_week_seq@1, s_store_id@9, sun_sales@2, mon_sales@3, tue_sales@4, wed_sales@5, thu_sales@6, fri_sales@7, sat_sales@8] +20)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_month_seq@3 >= 1224 AND d_month_seq@3 <= 1235 +21)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[d_week_seq@2, sun_sales@4, mon_sales@5, tue_sales@6, wed_sales@7, thu_sales@8, fri_sales@9, sat_sales@10, s_store_id@1] +22)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id], file_type=vortex +23)--------------ProjectionExec: expr=[d_week_seq@0 as d_week_seq, ss_store_sk@1 as ss_store_sk, sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END)@2 as sun_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END)@3 as mon_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END)@4 as tue_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END)@5 as wed_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END)@6 as thu_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END)@7 as fri_sales, sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)@8 as sat_sales] +24)----------------AggregateExec: mode=FinalPartitioned, gby=[d_week_seq@0 as d_week_seq, ss_store_sk@1 as ss_store_sk], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)] +25)------------------RepartitionExec: partitioning=Hash([d_week_seq@0, ss_store_sk@1], 4), input_partitions=4 +26)--------------------AggregateExec: mode=Partial, gby=[d_week_seq@2 as d_week_seq, ss_store_sk@0 as ss_store_sk], aggr=[sum(CASE WHEN date_dim.d_day_name = Sunday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Sunday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Monday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Monday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Tuesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Tuesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Wednesday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Wednesday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Thursday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Thursday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Friday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Friday") THEN store_sales.ss_sales_price ELSE NULL END), sum(CASE WHEN date_dim.d_day_name = Saturday THEN store_sales.ss_sales_price ELSE NULL END) as sum(CASE WHEN date_dim.d_day_name = Utf8("Saturday") THEN store_sales.ss_sales_price ELSE NULL END)] +27)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_store_sk@4, ss_sales_price@5, d_week_seq@1, d_day_name@2] +28)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_week_seq, d_day_name], file_type=vortex +29)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q6.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q6.slt.no new file mode 100644 index 00000000000..f382d5f0b0c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q6.slt.no @@ -0,0 +1,103 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT a.ca_state state, + count(*) cnt +FROM customer_address a , + customer c , + store_sales s , + date_dim d , + item i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = + (SELECT DISTINCT (d_month_seq) + FROM date_dim + WHERE d_year = 2001 + AND d_moy = 1 ) + AND i.i_current_price > 1.2 * + (SELECT avg(j.i_current_price) + FROM item j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING count(*) >= 10 +ORDER BY cnt NULLS FIRST, + a.ca_state NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: cnt ASC NULLS FIRST, state ASC NULLS FIRST, fetch=100 +02)--Projection: a.ca_state AS state, count(Int64(1)) AS count(*) AS cnt +03)----Filter: count(Int64(1)) >= Int64(10) +04)------Aggregate: groupBy=[[a.ca_state]], aggr=[[count(Int64(1))]] +05)--------Projection: a.ca_state +06)----------LeftSemi Join: i.i_category = __scalar_sq_1.i_category Filter: CAST(i.i_current_price AS Decimal128(30, 15)) > CAST(Float64(1.2) * __scalar_sq_1.avg(j.i_current_price) AS Decimal128(30, 15)) +07)------------Projection: a.ca_state, i.i_current_price, i.i_category +08)--------------Inner Join: s.ss_item_sk = i.i_item_sk +09)----------------Projection: a.ca_state, s.ss_item_sk +10)------------------Inner Join: s.ss_sold_date_sk = d.d_date_sk +11)--------------------Projection: a.ca_state, s.ss_sold_date_sk, s.ss_item_sk +12)----------------------Inner Join: c.c_customer_sk = s.ss_customer_sk +13)------------------------Projection: a.ca_state, c.c_customer_sk +14)--------------------------Inner Join: a.ca_address_sk = c.c_current_addr_sk +15)----------------------------SubqueryAlias: a +16)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_state] +17)----------------------------SubqueryAlias: c +18)------------------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +19)------------------------SubqueryAlias: s +20)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk] +21)--------------------SubqueryAlias: d +22)----------------------Projection: date_dim.d_date_sk +23)------------------------Filter: date_dim.d_month_seq = () +24)--------------------------Subquery: +25)----------------------------Aggregate: groupBy=[[date_dim.d_month_seq]], aggr=[[]] +26)------------------------------Projection: date_dim.d_month_seq +27)--------------------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy = Int64(1) +28)----------------------------------TableScan: date_dim projection=[d_month_seq, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy = Int64(1)] +29)--------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq] +30)----------------SubqueryAlias: i +31)------------------TableScan: item projection=[i_item_sk, i_current_price, i_category] +32)------------SubqueryAlias: __scalar_sq_1 +33)--------------Projection: CAST(avg(j.i_current_price) AS Float64), j.i_category +34)----------------Aggregate: groupBy=[[j.i_category]], aggr=[[avg(j.i_current_price)]] +35)------------------SubqueryAlias: j +36)--------------------TableScan: item projection=[i_current_price, i_category] +physical_plan +01)ScalarSubqueryExec: subqueries=1 +02)--SortPreservingMergeExec: [cnt@1 ASC, state@0 ASC], fetch=100 +03)----ProjectionExec: expr=[ca_state@0 as state, count(Int64(1))@1 as cnt] +04)------SortExec: TopK(fetch=100), expr=[count(Int64(1))@1 ASC, ca_state@0 ASC], preserve_partitioning=[true] +05)--------FilterExec: count(Int64(1))@1 >= 10 +06)----------AggregateExec: mode=FinalPartitioned, gby=[ca_state@0 as ca_state], aggr=[count(Int64(1))] +07)------------RepartitionExec: partitioning=Hash([ca_state@0], 4), input_partitions=4 +08)--------------AggregateExec: mode=Partial, gby=[ca_state@0 as ca_state], aggr=[count(Int64(1))] +09)----------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_category@1, i_category@2)], filter=CAST(i_current_price@0 AS Decimal128(30, 15)) > CAST(1.2 * avg(j.i_current_price)@1 AS Decimal128(30, 15)), projection=[ca_state@0] +10)------------------CoalescePartitionsExec +11)--------------------ProjectionExec: expr=[CAST(avg(j.i_current_price)@1 AS Float64) as avg(j.i_current_price), i_category@0 as i_category] +12)----------------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category], aggr=[avg(j.i_current_price)] +13)------------------------RepartitionExec: partitioning=Hash([i_category@0], 4), input_partitions=1 +14)--------------------------AggregateExec: mode=Partial, gby=[i_category@1 as i_category], aggr=[avg(j.i_current_price)] +15)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_current_price, i_category], file_type=vortex +16)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ca_state@3, i_current_price@1, i_category@2] +17)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_current_price, i_category], file_type=vortex +18)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@1)], projection=[ca_state@1, ss_item_sk@3] +19)----------------------CoalescePartitionsExec +20)------------------------FilterExec: d_month_seq@1 = scalar_subquery(), projection=[d_date_sk@0] +21)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_month_seq], file_type=vortex +23)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@1, ss_customer_sk@2)], projection=[ca_state@0, ss_sold_date_sk@2, ss_item_sk@3] +24)------------------------CoalescePartitionsExec +25)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@1)], projection=[ca_state@1, c_customer_sk@2] +26)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex +27)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +28)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex +29)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk], file_type=vortex +30)--AggregateExec: mode=FinalPartitioned, gby=[d_month_seq@0 as d_month_seq], aggr=[] +31)----RepartitionExec: partitioning=Hash([d_month_seq@0], 4), input_partitions=4 +32)------AggregateExec: mode=Partial, gby=[d_month_seq@0 as d_month_seq], aggr=[] +33)--------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +34)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_month_seq], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 = 1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q60.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q60.slt.no new file mode 100644 index 00000000000..d13cf51cb05 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q60.slt.no @@ -0,0 +1,194 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category = 'Music') + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, + total_sales +LIMIT 100; +---- +logical_plan +01)Sort: tmp1.i_item_id ASC NULLS LAST, fetch=100 +02)--Projection: tmp1.i_item_id, sum(tmp1.total_sales) AS total_sales +03)----Aggregate: groupBy=[[tmp1.i_item_id]], aggr=[[sum(tmp1.total_sales)]] +04)------SubqueryAlias: tmp1 +05)--------Union +06)----------SubqueryAlias: ss +07)------------Projection: item.i_item_id, sum(store_sales.ss_ext_sales_price) AS total_sales +08)--------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +09)----------------LeftSemi Join: item.i_item_id = __correlated_sq_1.i_item_id +10)------------------Projection: store_sales.ss_ext_sales_price, item.i_item_id +11)--------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price +13)------------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +14)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_ext_sales_price +15)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +16)------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_addr_sk, ss_ext_sales_price] +17)------------------------------Projection: date_dim.d_date_sk +18)--------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(9) +19)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(9)] +20)--------------------------Projection: customer_address.ca_address_sk +21)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +22)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +23)----------------------TableScan: item projection=[i_item_sk, i_item_id] +24)------------------SubqueryAlias: __correlated_sq_1 +25)--------------------Projection: item.i_item_id +26)----------------------Filter: item.i_category = Utf8View("Music") +27)------------------------TableScan: item projection=[i_item_id, i_category], partial_filters=[item.i_category = Utf8View("Music")] +28)----------SubqueryAlias: cs +29)------------Projection: item.i_item_id, sum(catalog_sales.cs_ext_sales_price) AS total_sales +30)--------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(catalog_sales.cs_ext_sales_price)]] +31)----------------LeftSemi Join: item.i_item_id = __correlated_sq_2.i_item_id +32)------------------Projection: catalog_sales.cs_ext_sales_price, item.i_item_id +33)--------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +34)----------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +35)------------------------Inner Join: catalog_sales.cs_bill_addr_sk = customer_address.ca_address_sk +36)--------------------------Projection: catalog_sales.cs_bill_addr_sk, catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +37)----------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +38)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_addr_sk, cs_item_sk, cs_ext_sales_price] +39)------------------------------Projection: date_dim.d_date_sk +40)--------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(9) +41)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(9)] +42)--------------------------Projection: customer_address.ca_address_sk +43)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +44)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +45)----------------------TableScan: item projection=[i_item_sk, i_item_id] +46)------------------SubqueryAlias: __correlated_sq_2 +47)--------------------Projection: item.i_item_id +48)----------------------Filter: item.i_category = Utf8View("Music") +49)------------------------TableScan: item projection=[i_item_id, i_category], partial_filters=[item.i_category = Utf8View("Music")] +50)----------SubqueryAlias: ws +51)------------Projection: item.i_item_id, sum(web_sales.ws_ext_sales_price) AS total_sales +52)--------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(web_sales.ws_ext_sales_price)]] +53)----------------LeftSemi Join: item.i_item_id = __correlated_sq_3.i_item_id +54)------------------Projection: web_sales.ws_ext_sales_price, item.i_item_id +55)--------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +56)----------------------Projection: web_sales.ws_item_sk, web_sales.ws_ext_sales_price +57)------------------------Inner Join: web_sales.ws_bill_addr_sk = customer_address.ca_address_sk +58)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_bill_addr_sk, web_sales.ws_ext_sales_price +59)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +60)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_addr_sk, ws_ext_sales_price] +61)------------------------------Projection: date_dim.d_date_sk +62)--------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(9) +63)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(9)] +64)--------------------------Projection: customer_address.ca_address_sk +65)----------------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +66)------------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +67)----------------------TableScan: item projection=[i_item_sk, i_item_id] +68)------------------SubqueryAlias: __correlated_sq_3 +69)--------------------Projection: item.i_item_id +70)----------------------Filter: item.i_category = Utf8View("Music") +71)------------------------TableScan: item projection=[i_item_id, i_category], partial_filters=[item.i_category = Utf8View("Music")] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(tmp1.total_sales)@1 as total_sales] +03)----SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=SinglePartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(tmp1.total_sales)] +05)--------InterleaveExec +06)----------ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(store_sales.ss_ext_sales_price)@1 as total_sales] +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(store_sales.ss_ext_sales_price)] +08)--------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(store_sales.ss_ext_sales_price)] +10)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_id@0, i_item_id@1)] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_category@12 = Music +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_ext_sales_price@3, i_item_id@1] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_item_sk@1, ss_ext_sales_price@3] +15)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +16)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_addr_sk@3, ss_ext_sales_price@4] +17)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 9 +18)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_addr_sk, ss_ext_sales_price], file_type=vortex +19)----------ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(catalog_sales.cs_ext_sales_price)@1 as total_sales] +20)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +21)--------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +22)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(catalog_sales.cs_ext_sales_price)] +23)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_id@0, i_item_id@1)] +24)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_category@12 = Music +25)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +26)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_item_sk@0, i_item_sk@0)], projection=[cs_ext_sales_price@1, i_item_id@3] +27)------------------------CoalescePartitionsExec +28)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, cs_bill_addr_sk@0)], projection=[cs_item_sk@2, cs_ext_sales_price@3] +29)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +30)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_addr_sk@2, cs_item_sk@3, cs_ext_sales_price@4] +31)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 9 +32)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_addr_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex +33)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +34)----------ProjectionExec: expr=[i_item_id@0 as i_item_id, sum(web_sales.ws_ext_sales_price)@1 as total_sales] +35)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(web_sales.ws_ext_sales_price)] +36)--------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +37)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(web_sales.ws_ext_sales_price)] +38)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(i_item_id@0, i_item_id@1)] +39)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_id], file_type=vortex, predicate: i_category@12 = Music +40)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +41)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_item_sk@0, i_item_sk@0)], projection=[ws_ext_sales_price@1, i_item_id@3] +42)------------------------CoalescePartitionsExec +43)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ws_bill_addr_sk@1)], projection=[ws_item_sk@1, ws_ext_sales_price@3] +44)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +45)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_bill_addr_sk@3, ws_ext_sales_price@4] +46)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 9 +47)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_bill_addr_sk, ws_ext_sales_price], file_type=vortex +48)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q61.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q61.slt.no new file mode 100644 index 00000000000..9222018d05b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q61.slt.no @@ -0,0 +1,155 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT promotions, + total, + cast(promotions AS decimal(15,4))/cast(total AS decimal(15,4))*100 +FROM + (SELECT sum(ss_ext_sales_price) promotions + FROM store_sales, + store, + promotion, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND (p_channel_dmail = 'Y' + OR p_channel_email = 'Y' + OR p_channel_tv = 'Y') + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) promotional_sales, + (SELECT sum(ss_ext_sales_price) total + FROM store_sales, + store, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) all_sales +ORDER BY promotions, + total +LIMIT 100; +---- +logical_plan +01)Sort: promotional_sales.promotions ASC NULLS LAST, all_sales.total ASC NULLS LAST, fetch=100 +02)--Projection: promotional_sales.promotions, all_sales.total, CAST(promotional_sales.promotions AS Decimal128(15, 4)) / CAST(all_sales.total AS Decimal128(15, 4)) * Decimal128(100,20,0) AS promotional_sales.promotions / all_sales.total * Int64(100) +03)----Cross Join: +04)------SubqueryAlias: promotional_sales +05)--------Projection: sum(store_sales.ss_ext_sales_price) AS promotions +06)----------Aggregate: groupBy=[[]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +07)------------Projection: store_sales.ss_ext_sales_price +08)--------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +09)----------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price +10)------------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +11)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price, customer.c_current_addr_sk +12)----------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +13)------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_ext_sales_price +14)--------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +15)----------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_ext_sales_price +16)------------------------------Inner Join: store_sales.ss_promo_sk = promotion.p_promo_sk +17)--------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_promo_sk, store_sales.ss_ext_sales_price +18)----------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +19)------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_promo_sk, ss_ext_sales_price] +20)------------------------------------Projection: store.s_store_sk +21)--------------------------------------Filter: store.s_gmt_offset = Decimal128(-5.00,5,2) +22)----------------------------------------TableScan: store projection=[s_store_sk, s_gmt_offset], partial_filters=[store.s_gmt_offset = Decimal128(-5.00,5,2)] +23)--------------------------------Projection: promotion.p_promo_sk +24)----------------------------------Filter: promotion.p_channel_dmail = Utf8View("Y") OR promotion.p_channel_email = Utf8View("Y") OR promotion.p_channel_tv = Utf8View("Y") +25)------------------------------------TableScan: promotion projection=[p_promo_sk, p_channel_dmail, p_channel_email, p_channel_tv], partial_filters=[promotion.p_channel_dmail = Utf8View("Y") OR promotion.p_channel_email = Utf8View("Y") OR promotion.p_channel_tv = Utf8View("Y")] +26)----------------------------Projection: date_dim.d_date_sk +27)------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(11) +28)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(11)] +29)------------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +30)--------------------Projection: customer_address.ca_address_sk +31)----------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +32)------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +33)----------------Projection: item.i_item_sk +34)------------------Filter: item.i_category = Utf8View("Jewelry") +35)--------------------TableScan: item projection=[i_item_sk, i_category], partial_filters=[item.i_category = Utf8View("Jewelry")] +36)------SubqueryAlias: all_sales +37)--------Projection: sum(store_sales.ss_ext_sales_price) AS total +38)----------Aggregate: groupBy=[[]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +39)------------Projection: store_sales.ss_ext_sales_price +40)--------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +41)----------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price +42)------------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +43)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_ext_sales_price, customer.c_current_addr_sk +44)----------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +45)------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_ext_sales_price +46)--------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +47)----------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_ext_sales_price +48)------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +49)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ext_sales_price] +50)--------------------------------Projection: store.s_store_sk +51)----------------------------------Filter: store.s_gmt_offset = Decimal128(-5.00,5,2) +52)------------------------------------TableScan: store projection=[s_store_sk, s_gmt_offset], partial_filters=[store.s_gmt_offset = Decimal128(-5.00,5,2)] +53)----------------------------Projection: date_dim.d_date_sk +54)------------------------------Filter: date_dim.d_year = Int64(1998) AND date_dim.d_moy = Int64(11) +55)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1998), date_dim.d_moy = Int64(11)] +56)------------------------TableScan: customer projection=[c_customer_sk, c_current_addr_sk] +57)--------------------Projection: customer_address.ca_address_sk +58)----------------------Filter: customer_address.ca_gmt_offset = Decimal128(-5.00,5,2) +59)------------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-5.00,5,2)] +60)----------------Projection: item.i_item_sk +61)------------------Filter: item.i_category = Utf8View("Jewelry") +62)--------------------TableScan: item projection=[i_item_sk, i_category], partial_filters=[item.i_category = Utf8View("Jewelry")] +physical_plan +01)SortExec: TopK(fetch=100), expr=[total@1 ASC NULLS LAST], preserve_partitioning=[false] +02)--ProjectionExec: expr=[promotions@0 as promotions, total@1 as total, CAST(promotions@0 AS Decimal128(15, 4)) / CAST(total@1 AS Decimal128(15, 4)) * 100 as promotional_sales.promotions / all_sales.total * Int64(100)] +03)----CrossJoinExec +04)------ProjectionExec: expr=[sum(store_sales.ss_ext_sales_price)@0 as promotions] +05)--------AggregateExec: mode=Final, gby=[], aggr=[sum(store_sales.ss_ext_sales_price)] +06)----------CoalescePartitionsExec +07)------------AggregateExec: mode=Partial, gby=[], aggr=[sum(store_sales.ss_ext_sales_price)] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_ext_sales_price@2] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_category@12 = Jewelry +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@2)], projection=[ss_item_sk@1, ss_ext_sales_price@2] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_customer_sk@1, c_customer_sk@0)], projection=[ss_item_sk@0, ss_ext_sales_price@2, c_current_addr_sk@4] +13)--------------------CoalescePartitionsExec +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_customer_sk@3, ss_ext_sales_price@4] +15)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 11 +16)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, ss_promo_sk@3)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_customer_sk@3, ss_ext_sales_price@5] +17)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex, predicate: p_channel_dmail@8 = Y OR p_channel_email@9 = Y OR p_channel_tv@11 = Y +18)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_customer_sk@3, ss_promo_sk@5, ss_ext_sales_price@6] +19)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_gmt_offset@27 = -5.00 +20)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_promo_sk, ss_ext_sales_price], file_type=vortex +21)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex +23)------ProjectionExec: expr=[sum(store_sales.ss_ext_sales_price)@0 as total] +24)--------AggregateExec: mode=Final, gby=[], aggr=[sum(store_sales.ss_ext_sales_price)] +25)----------CoalescePartitionsExec +26)------------AggregateExec: mode=Partial, gby=[], aggr=[sum(store_sales.ss_ext_sales_price)] +27)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_ext_sales_price@2] +28)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_category@12 = Jewelry +29)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@2)], projection=[ss_item_sk@1, ss_ext_sales_price@2] +30)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -5.00 +31)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_customer_sk@1, c_customer_sk@0)], projection=[ss_item_sk@0, ss_ext_sales_price@2, c_current_addr_sk@4] +32)--------------------CoalescePartitionsExec +33)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_customer_sk@3, ss_ext_sales_price@4] +34)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 1998 AND d_moy@8 = 11 +35)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_customer_sk@3, ss_ext_sales_price@5] +36)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_gmt_offset@27 = -5.00 +37)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_store_sk, ss_ext_sales_price], file_type=vortex +38)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +39)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q62.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q62.slt.no new file mode 100644 index 00000000000..74f495e3565 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q62.slt.no @@ -0,0 +1,89 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT w_substr, + sm_type, + web_name, + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 30) + AND (ws_ship_date_sk - ws_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 60) + AND (ws_ship_date_sk - ws_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 90) + AND (ws_ship_date_sk - ws_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM web_sales, + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, + * + FROM warehouse) sq1, + ship_mode, + web_site, + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY w_substr, + sm_type, + web_name +ORDER BY 1 NULLS FIRST, + 2 NULLS FIRST, + 3 NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: sq1.w_substr ASC NULLS FIRST, ship_mode.sm_type ASC NULLS FIRST, web_site.web_name ASC NULLS FIRST, fetch=100 +02)--Projection: sq1.w_substr, ship_mode.sm_type, web_site.web_name, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END) AS 30 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(30) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END) AS 31-60 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(60) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END) AS 61-90 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(90) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END) AS 91-120 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END) AS >120 days +03)----Aggregate: groupBy=[[sq1.w_substr, ship_mode.sm_type, web_site.web_name]], aggr=[[sum(CASE WHEN __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(30) AND __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(60) AND __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(90) AND __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)]] +04)------Projection: web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk AS __common_expr_1, sq1.w_substr, ship_mode.sm_type, web_site.web_name +05)--------Inner Join: web_sales.ws_ship_date_sk = date_dim.d_date_sk +06)----------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ship_date_sk, sq1.w_substr, ship_mode.sm_type, web_site.web_name +07)------------Inner Join: web_sales.ws_web_site_sk = web_site.web_site_sk +08)--------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ship_date_sk, web_sales.ws_web_site_sk, sq1.w_substr, ship_mode.sm_type +09)----------------Inner Join: web_sales.ws_ship_mode_sk = ship_mode.sm_ship_mode_sk +10)------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ship_date_sk, web_sales.ws_web_site_sk, web_sales.ws_ship_mode_sk, sq1.w_substr +11)--------------------Inner Join: web_sales.ws_warehouse_sk = sq1.w_warehouse_sk +12)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_ship_date_sk, ws_web_site_sk, ws_ship_mode_sk, ws_warehouse_sk] +13)----------------------SubqueryAlias: sq1 +14)------------------------Projection: substr(warehouse.w_warehouse_name, Int64(1), Int64(20)) AS w_substr, warehouse.w_warehouse_sk +15)--------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name] +16)------------------TableScan: ship_mode projection=[sm_ship_mode_sk, sm_type] +17)--------------TableScan: web_site projection=[web_site_sk, web_name] +18)----------Projection: date_dim.d_date_sk +19)------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +20)--------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +physical_plan +01)SortPreservingMergeExec: [w_substr@0 ASC, sm_type@1 ASC, web_name@2 ASC], fetch=100 +02)--ProjectionExec: expr=[w_substr@0 as w_substr, sm_type@1 as sm_type, web_name@2 as web_name, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END)@3 as 30 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(30) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END)@4 as 31-60 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(60) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END)@5 as 61-90 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(90) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END)@6 as 91-120 days, sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)@7 as >120 days] +03)----SortExec: TopK(fetch=100), expr=[w_substr@0 ASC, sm_type@1 ASC, web_name@2 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[w_substr@0 as w_substr, sm_type@1 as sm_type, web_name@2 as web_name], aggr=[sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(30) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(60) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(90) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)] +05)--------RepartitionExec: partitioning=Hash([w_substr@0, sm_type@1, web_name@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[w_substr@1 as w_substr, sm_type@2 as sm_type, web_name@3 as web_name], aggr=[sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(30) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(60) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(90) AND web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN web_sales.ws_ship_date_sk - web_sales.ws_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)] +07)------------ProjectionExec: expr=[ws_ship_date_sk@0 - ws_sold_date_sk@1 as __common_expr_1, w_substr@2 as w_substr, sm_type@3 as sm_type, web_name@4 as web_name] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_ship_date_sk@1)], projection=[ws_ship_date_sk@2, ws_sold_date_sk@1, w_substr@3, sm_type@4, web_name@5] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(web_site_sk@0, ws_web_site_sk@2)], projection=[ws_sold_date_sk@2, ws_ship_date_sk@3, w_substr@5, sm_type@6, web_name@1] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_site.vortex]]}, projection=[web_site_sk, web_name], file_type=vortex +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sm_ship_mode_sk@0, ws_ship_mode_sk@3)], projection=[ws_sold_date_sk@2, ws_ship_date_sk@3, ws_web_site_sk@4, w_substr@6, sm_type@1] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/ship_mode.vortex]]}, projection=[sm_ship_mode_sk, sm_type], file_type=vortex +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@1, ws_warehouse_sk@4)], projection=[ws_sold_date_sk@2, ws_ship_date_sk@3, ws_web_site_sk@4, ws_ship_mode_sk@5, w_substr@0] +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[substr(w_warehouse_name@2, 1, 20) as w_substr, w_warehouse_sk], file_type=vortex +16)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_ship_date_sk, ws_web_site_sk, ws_ship_mode_sk, ws_warehouse_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q63.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q63.slt.no new file mode 100644 index 00000000000..8ed01afd7fe --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q63.slt.no @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * +FROM + (SELECT i_manager_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id) avg_monthly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manager_id, + d_moy) tmp1 +WHERE CASE + WHEN avg_monthly_sales > 0 THEN ABS (sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY i_manager_id, + avg_monthly_sales, + sum_sales +LIMIT 100; +---- +logical_plan +01)Sort: tmp1.i_manager_id ASC NULLS LAST, tmp1.avg_monthly_sales ASC NULLS LAST, tmp1.sum_sales ASC NULLS LAST, fetch=100 +02)--SubqueryAlias: tmp1 +03)----Projection: item.i_manager_id, sum(store_sales.ss_sales_price) AS sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS avg_monthly_sales +04)------Filter: CASE WHEN avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING > Decimal128(0.000000,21,6) THEN abs(sum(store_sales.ss_sales_price) - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ELSE Decimal128(NULL,32,10) END > Decimal128(0.1000000000,32,10) +05)--------WindowAggr: windowExpr=[[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +06)----------Projection: item.i_manager_id, sum(store_sales.ss_sales_price) +07)------------Aggregate: groupBy=[[item.i_manager_id, date_dim.d_moy]], aggr=[[sum(store_sales.ss_sales_price)]] +08)--------------Projection: item.i_manager_id, store_sales.ss_sales_price, date_dim.d_moy +09)----------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +10)------------------Projection: item.i_manager_id, store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_moy +11)--------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +12)----------------------Projection: item.i_manager_id, store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +13)------------------------Inner Join: item.i_item_sk = store_sales.ss_item_sk +14)--------------------------Projection: item.i_item_sk, item.i_manager_id +15)----------------------------Filter: (item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Children") OR item.i_category = Utf8View("Electronics")) AND item.i_class IN ([Utf8View("personal"), Utf8View("portable"), Utf8View("reference"), Utf8View("self-help")]) AND item.i_brand IN ([Utf8View("scholaramalgamalg #14"), Utf8View("scholaramalgamalg #7"), Utf8View("exportiunivamalg #9"), Utf8View("scholaramalgamalg #9")]) OR (item.i_category = Utf8View("Women") OR item.i_category = Utf8View("Music") OR item.i_category = Utf8View("Men")) AND item.i_class IN ([Utf8View("accessories"), Utf8View("classical"), Utf8View("fragrances"), Utf8View("pants")]) AND item.i_brand IN ([Utf8View("amalgimporto #1"), Utf8View("edu packscholar #1"), Utf8View("exportiimporto #1"), Utf8View("importoamalg #1")]) +16)------------------------------TableScan: item projection=[i_item_sk, i_brand, i_class, i_category, i_manager_id], partial_filters=[(item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Children") OR item.i_category = Utf8View("Electronics")) AND item.i_class IN ([Utf8View("personal"), Utf8View("portable"), Utf8View("reference"), Utf8View("self-help")]) AND item.i_brand IN ([Utf8View("scholaramalgamalg #14"), Utf8View("scholaramalgamalg #7"), Utf8View("exportiunivamalg #9"), Utf8View("scholaramalgamalg #9")]) OR (item.i_category = Utf8View("Women") OR item.i_category = Utf8View("Music") OR item.i_category = Utf8View("Men")) AND item.i_class IN ([Utf8View("accessories"), Utf8View("classical"), Utf8View("fragrances"), Utf8View("pants")]) AND item.i_brand IN ([Utf8View("amalgimporto #1"), Utf8View("edu packscholar #1"), Utf8View("exportiimporto #1"), Utf8View("importoamalg #1")])] +17)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +18)----------------------Projection: date_dim.d_date_sk, date_dim.d_moy +19)------------------------Filter: date_dim.d_month_seq IN ([Int64(1200), Int64(1201), Int64(1202), Int64(1203), Int64(1204), Int64(1205), Int64(1206), Int64(1207), Int64(1208), Int64(1209), Int64(1210), Int64(1211)]) +20)--------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq, d_moy], partial_filters=[date_dim.d_month_seq IN ([Int64(1200), Int64(1201), Int64(1202), Int64(1203), Int64(1204), Int64(1205), Int64(1206), Int64(1207), Int64(1208), Int64(1209), Int64(1210), Int64(1211)])] +21)------------------TableScan: store projection=[s_store_sk] +physical_plan +01)SortPreservingMergeExec: [i_manager_id@0 ASC NULLS LAST, avg_monthly_sales@2 ASC NULLS LAST, sum_sales@1 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_manager_id@0 as i_manager_id, sum(store_sales.ss_sales_price)@1 as sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 as avg_monthly_sales] +03)----SortExec: TopK(fetch=100), expr=[i_manager_id@0 ASC NULLS LAST, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 ASC NULLS LAST, sum(store_sales.ss_sales_price)@1 ASC NULLS LAST], preserve_partitioning=[true], sort_prefix=[i_manager_id@0 ASC NULLS LAST, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 ASC NULLS LAST] +04)------FilterExec: CASE WHEN avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 > 0.000000 THEN abs(sum(store_sales.ss_sales_price)@1 - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@2 END > 0.1000000000 +05)--------WindowAggExec: wdw=[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_manager_id] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(21, 6), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +06)----------SortExec: expr=[i_manager_id@0 ASC NULLS LAST], preserve_partitioning=[true] +07)------------RepartitionExec: partitioning=Hash([i_manager_id@0], 4), input_partitions=4 +08)--------------ProjectionExec: expr=[i_manager_id@0 as i_manager_id, sum(store_sales.ss_sales_price)@2 as sum(store_sales.ss_sales_price)] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[i_manager_id@0 as i_manager_id, d_moy@1 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +10)------------------RepartitionExec: partitioning=Hash([i_manager_id@0, d_moy@1], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[i_manager_id@0 as i_manager_id, d_moy@2 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +12)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[i_manager_id@1, ss_sales_price@3, d_moy@4] +13)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@1)], projection=[i_manager_id@2, ss_store_sk@4, ss_sales_price@5, d_moy@1] +15)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_moy], file_type=vortex, predicate: d_month_seq@3 IN (SET) ([1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211]) +16)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[i_manager_id@1, ss_sold_date_sk@2, ss_store_sk@4, ss_sales_price@5] +17)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_manager_id], file_type=vortex, predicate: (i_category@12 = Books OR i_category@12 = Children OR i_category@12 = Electronics) AND i_class@10 IN (SET) ([personal, portable, reference, self-help]) AND i_brand@8 IN (SET) ([scholaramalgamalg #14, scholaramalgamalg #7, exportiunivamalg #9, scholaramalgamalg #9]) OR (i_category@12 = Women OR i_category@12 = Music OR i_category@12 = Men) AND i_class@10 IN (SET) ([accessories, classical, fragrances, pants]) AND i_brand@8 IN (SET) ([amalgimporto #1, edu packscholar #1, exportiimporto #1, importoamalg #1]) +18)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q64.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q64.slt.no new file mode 100644 index 00000000000..021307f1aec --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q64.slt.no @@ -0,0 +1,402 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH cs_ui AS + (SELECT cs_item_sk, + sum(cs_ext_list_price) AS sale, + sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) AS refund + FROM catalog_sales, + catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)), + cross_sales AS + (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_street_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + count(*) cnt, + sum(ss_wholesale_cost) s1, + sum(ss_list_price) s2, + sum(ss_coupon_amt) s3 + FROM store_sales, + store_returns, + cs_ui, + date_dim d1, + date_dim d2, + date_dim d3, + store, + customer, + customer_demographics cd1, + customer_demographics cd2, + promotion, + household_demographics hd1, + household_demographics hd2, + customer_address ad1, + customer_address ad2, + income_band ib1, + income_band ib2, + item + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk= cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color IN ('purple', + 'burlywood', + 'indian', + 'spring', + 'floral', + 'medium') + AND i_current_price BETWEEN 64 AND 64 + 10 + AND i_current_price BETWEEN 64 + 1 AND 64 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_street_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear cs1syear, + cs1.cnt cs1cnt, + cs1.s1 AS s11, + cs1.s2 AS s21, + cs1.s3 AS s31, + cs2.s1 AS s12, + cs2.s2 AS s22, + cs2.s3 AS s32, + cs2.syear, + cs2.cnt +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk=cs2.item_sk + AND cs1.syear = 1999 + AND cs2.syear = 1999 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, + cs1.store_name, + cs2.cnt, + cs1.s1, + cs2.s1; +---- +logical_plan +01)Sort: cs1.product_name ASC NULLS LAST, cs1.store_name ASC NULLS LAST, cs2.cnt ASC NULLS LAST, s11 ASC NULLS LAST, s12 ASC NULLS LAST +02)--Projection: cs1.product_name, cs1.store_name, cs1.store_zip, cs1.b_street_number, cs1.b_street_name, cs1.b_city, cs1.b_zip, cs1.c_street_number, cs1.c_street_name, cs1.c_city, cs1.c_zip, cs1.syear AS cs1syear, cs1.cnt AS cs1cnt, cs1.s1 AS s11, cs1.s2 AS s21, cs1.s3 AS s31, cs2.s1 AS s12, cs2.s2 AS s22, cs2.s3 AS s32, cs2.syear, cs2.cnt +03)----Inner Join: cs1.item_sk = cs2.item_sk, cs1.store_name = cs2.store_name, cs1.store_zip = cs2.store_zip Filter: cs2.cnt <= cs1.cnt +04)------SubqueryAlias: cs1 +05)--------SubqueryAlias: cross_sales +06)----------Projection: item.i_product_name AS product_name, item.i_item_sk AS item_sk, store.s_store_name AS store_name, store.s_zip AS store_zip, ad1.ca_street_number AS b_street_number, ad1.ca_street_name AS b_street_name, ad1.ca_city AS b_city, ad1.ca_zip AS b_zip, ad2.ca_street_number AS c_street_number, ad2.ca_street_name AS c_street_name, ad2.ca_city AS c_city, ad2.ca_zip AS c_zip, d1.d_year AS syear, count(Int64(1)) AS count(*) AS cnt, sum(store_sales.ss_wholesale_cost) AS s1, sum(store_sales.ss_list_price) AS s2, sum(store_sales.ss_coupon_amt) AS s3 +07)------------Aggregate: groupBy=[[item.i_product_name, item.i_item_sk, store.s_store_name, store.s_zip, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip, d1.d_year, d2.d_year, d3.d_year]], aggr=[[count(Int64(1)), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_list_price), sum(store_sales.ss_coupon_amt)]] +08)--------------Projection: store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, d2.d_year, d3.d_year, store.s_store_name, store.s_zip, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip, item.i_item_sk, item.i_product_name +09)----------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +10)------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, d2.d_year, d3.d_year, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip +11)--------------------Inner Join: hd2.hd_income_band_sk = ib2.ib_income_band_sk +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, d2.d_year, d3.d_year, hd2.hd_income_band_sk, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip +13)------------------------Inner Join: hd1.hd_income_band_sk = ib1.ib_income_band_sk +14)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, d2.d_year, d3.d_year, hd1.hd_income_band_sk, hd2.hd_income_band_sk, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip +15)----------------------------Inner Join: customer.c_current_addr_sk = ad2.ca_address_sk +16)------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_addr_sk, d2.d_year, d3.d_year, hd1.hd_income_band_sk, hd2.hd_income_band_sk, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip +17)--------------------------------Inner Join: store_sales.ss_addr_sk = ad1.ca_address_sk +18)----------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_addr_sk, d2.d_year, d3.d_year, hd1.hd_income_band_sk, hd2.hd_income_band_sk +19)------------------------------------Inner Join: customer.c_current_hdemo_sk = hd2.hd_demo_sk +20)--------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year, hd1.hd_income_band_sk +21)----------------------------------------Inner Join: store_sales.ss_hdemo_sk = hd1.hd_demo_sk +22)------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year +23)--------------------------------------------Inner Join: store_sales.ss_promo_sk = promotion.p_promo_sk +24)----------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year +25)------------------------------------------------Inner Join: customer.c_current_cdemo_sk = cd2.cd_demo_sk Filter: cd2.cd_marital_status != cd1.cd_marital_status +26)--------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year, cd1.cd_marital_status +27)----------------------------------------------------Inner Join: store_sales.ss_cdemo_sk = cd1.cd_demo_sk +28)------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year +29)--------------------------------------------------------Inner Join: customer.c_first_shipto_date_sk = d3.d_date_sk +30)----------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, customer.c_first_shipto_date_sk, d2.d_year +31)------------------------------------------------------------Inner Join: customer.c_first_sales_date_sk = d2.d_date_sk +32)--------------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, customer.c_first_shipto_date_sk, customer.c_first_sales_date_sk +33)----------------------------------------------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +34)------------------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip +35)--------------------------------------------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +36)----------------------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year +37)------------------------------------------------------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +38)--------------------------------------------------------------------------LeftSemi Join: store_sales.ss_item_sk = cs_ui.cs_item_sk +39)----------------------------------------------------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt +40)------------------------------------------------------------------------------Inner Join: store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +41)--------------------------------------------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_cdemo_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_promo_sk, ss_ticket_number, ss_wholesale_cost, ss_list_price, ss_coupon_amt] +42)--------------------------------------------------------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number] +43)----------------------------------------------------------------------------SubqueryAlias: cs_ui +44)------------------------------------------------------------------------------Projection: catalog_sales.cs_item_sk +45)--------------------------------------------------------------------------------Filter: CAST(sum(catalog_sales.cs_ext_list_price) AS Decimal128(38, 2)) > Decimal128(2,20,0) * sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit) +46)----------------------------------------------------------------------------------Aggregate: groupBy=[[catalog_sales.cs_item_sk]], aggr=[[sum(catalog_sales.cs_ext_list_price), sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)]] +47)------------------------------------------------------------------------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_ext_list_price, catalog_returns.cr_refunded_cash, catalog_returns.cr_reversed_charge, catalog_returns.cr_store_credit +48)--------------------------------------------------------------------------------------Inner Join: catalog_sales.cs_item_sk = catalog_returns.cr_item_sk, catalog_sales.cs_order_number = catalog_returns.cr_order_number +49)----------------------------------------------------------------------------------------TableScan: catalog_sales projection=[cs_item_sk, cs_order_number, cs_ext_list_price] +50)----------------------------------------------------------------------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_refunded_cash, cr_reversed_charge, cr_store_credit] +51)--------------------------------------------------------------------------SubqueryAlias: d1 +52)----------------------------------------------------------------------------Filter: date_dim.d_year = Int64(1999) +53)------------------------------------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(1999)] +54)----------------------------------------------------------------------TableScan: store projection=[s_store_sk, s_store_name, s_zip] +55)------------------------------------------------------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk, c_first_shipto_date_sk, c_first_sales_date_sk] +56)--------------------------------------------------------------SubqueryAlias: d2 +57)----------------------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year] +58)----------------------------------------------------------SubqueryAlias: d3 +59)------------------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year] +60)------------------------------------------------------SubqueryAlias: cd1 +61)--------------------------------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status] +62)--------------------------------------------------SubqueryAlias: cd2 +63)----------------------------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status] +64)----------------------------------------------TableScan: promotion projection=[p_promo_sk] +65)------------------------------------------SubqueryAlias: hd1 +66)--------------------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_income_band_sk] +67)--------------------------------------SubqueryAlias: hd2 +68)----------------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_income_band_sk] +69)----------------------------------SubqueryAlias: ad1 +70)------------------------------------TableScan: customer_address projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip] +71)------------------------------SubqueryAlias: ad2 +72)--------------------------------TableScan: customer_address projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip] +73)--------------------------SubqueryAlias: ib1 +74)----------------------------TableScan: income_band projection=[ib_income_band_sk] +75)----------------------SubqueryAlias: ib2 +76)------------------------TableScan: income_band projection=[ib_income_band_sk] +77)------------------Projection: item.i_item_sk, item.i_product_name +78)--------------------Filter: item.i_color IN ([Utf8View("purple"), Utf8View("burlywood"), Utf8View("indian"), Utf8View("spring"), Utf8View("floral"), Utf8View("medium")]) AND item.i_current_price >= Decimal128(65.00,7,2) AND item.i_current_price <= Decimal128(74.00,7,2) +79)----------------------TableScan: item projection=[i_item_sk, i_current_price, i_color, i_product_name], partial_filters=[item.i_color IN ([Utf8View("purple"), Utf8View("burlywood"), Utf8View("indian"), Utf8View("spring"), Utf8View("floral"), Utf8View("medium")]), item.i_current_price >= Decimal128(65.00,7,2), item.i_current_price <= Decimal128(74.00,7,2)] +80)------SubqueryAlias: cs2 +81)--------SubqueryAlias: cross_sales +82)----------Projection: item.i_item_sk AS item_sk, store.s_store_name AS store_name, store.s_zip AS store_zip, d1.d_year AS syear, count(Int64(1)) AS count(*) AS cnt, sum(store_sales.ss_wholesale_cost) AS s1, sum(store_sales.ss_list_price) AS s2, sum(store_sales.ss_coupon_amt) AS s3 +83)------------Aggregate: groupBy=[[item.i_product_name, item.i_item_sk, store.s_store_name, store.s_zip, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip, d1.d_year, d2.d_year, d3.d_year]], aggr=[[count(Int64(1)), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_list_price), sum(store_sales.ss_coupon_amt)]] +84)--------------Projection: store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, d2.d_year, d3.d_year, store.s_store_name, store.s_zip, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip, item.i_item_sk, item.i_product_name +85)----------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +86)------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, d2.d_year, d3.d_year, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip +87)--------------------Inner Join: hd2.hd_income_band_sk = ib2.ib_income_band_sk +88)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, d2.d_year, d3.d_year, hd2.hd_income_band_sk, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip +89)------------------------Inner Join: hd1.hd_income_band_sk = ib1.ib_income_band_sk +90)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, d2.d_year, d3.d_year, hd1.hd_income_band_sk, hd2.hd_income_band_sk, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip, ad2.ca_street_number, ad2.ca_street_name, ad2.ca_city, ad2.ca_zip +91)----------------------------Inner Join: customer.c_current_addr_sk = ad2.ca_address_sk +92)------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_addr_sk, d2.d_year, d3.d_year, hd1.hd_income_band_sk, hd2.hd_income_band_sk, ad1.ca_street_number, ad1.ca_street_name, ad1.ca_city, ad1.ca_zip +93)--------------------------------Inner Join: store_sales.ss_addr_sk = ad1.ca_address_sk +94)----------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_addr_sk, d2.d_year, d3.d_year, hd1.hd_income_band_sk, hd2.hd_income_band_sk +95)------------------------------------Inner Join: customer.c_current_hdemo_sk = hd2.hd_demo_sk +96)--------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_addr_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year, hd1.hd_income_band_sk +97)----------------------------------------Inner Join: store_sales.ss_hdemo_sk = hd1.hd_demo_sk +98)------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year +99)--------------------------------------------Inner Join: store_sales.ss_promo_sk = promotion.p_promo_sk +100)----------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year +101)------------------------------------------------Inner Join: customer.c_current_cdemo_sk = cd2.cd_demo_sk Filter: cd2.cd_marital_status != cd1.cd_marital_status +102)--------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year, cd1.cd_marital_status +103)----------------------------------------------------Inner Join: store_sales.ss_cdemo_sk = cd1.cd_demo_sk +104)------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, d2.d_year, d3.d_year +105)--------------------------------------------------------Inner Join: customer.c_first_shipto_date_sk = d3.d_date_sk +106)----------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, customer.c_first_shipto_date_sk, d2.d_year +107)------------------------------------------------------------Inner Join: customer.c_first_sales_date_sk = d2.d_date_sk +108)--------------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk, customer.c_first_shipto_date_sk, customer.c_first_sales_date_sk +109)----------------------------------------------------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +110)------------------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year, store.s_store_name, store.s_zip +111)--------------------------------------------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +112)----------------------------------------------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt, d1.d_year +113)------------------------------------------------------------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +114)--------------------------------------------------------------------------LeftSemi Join: store_sales.ss_item_sk = cs_ui.cs_item_sk +115)----------------------------------------------------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_cdemo_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_promo_sk, store_sales.ss_wholesale_cost, store_sales.ss_list_price, store_sales.ss_coupon_amt +116)------------------------------------------------------------------------------Inner Join: store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +117)--------------------------------------------------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_cdemo_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_promo_sk, ss_ticket_number, ss_wholesale_cost, ss_list_price, ss_coupon_amt] +118)--------------------------------------------------------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number] +119)----------------------------------------------------------------------------SubqueryAlias: cs_ui +120)------------------------------------------------------------------------------Projection: catalog_sales.cs_item_sk +121)--------------------------------------------------------------------------------Filter: CAST(sum(catalog_sales.cs_ext_list_price) AS Decimal128(38, 2)) > Decimal128(2,20,0) * sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit) +122)----------------------------------------------------------------------------------Aggregate: groupBy=[[catalog_sales.cs_item_sk]], aggr=[[sum(catalog_sales.cs_ext_list_price), sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)]] +123)------------------------------------------------------------------------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_ext_list_price, catalog_returns.cr_refunded_cash, catalog_returns.cr_reversed_charge, catalog_returns.cr_store_credit +124)--------------------------------------------------------------------------------------Inner Join: catalog_sales.cs_item_sk = catalog_returns.cr_item_sk, catalog_sales.cs_order_number = catalog_returns.cr_order_number +125)----------------------------------------------------------------------------------------TableScan: catalog_sales projection=[cs_item_sk, cs_order_number, cs_ext_list_price] +126)----------------------------------------------------------------------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_refunded_cash, cr_reversed_charge, cr_store_credit] +127)--------------------------------------------------------------------------SubqueryAlias: d1 +128)----------------------------------------------------------------------------Filter: date_dim.d_year = Int64(2000) +129)------------------------------------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +130)----------------------------------------------------------------------TableScan: store projection=[s_store_sk, s_store_name, s_zip] +131)------------------------------------------------------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk, c_first_shipto_date_sk, c_first_sales_date_sk] +132)--------------------------------------------------------------SubqueryAlias: d2 +133)----------------------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year] +134)----------------------------------------------------------SubqueryAlias: d3 +135)------------------------------------------------------------TableScan: date_dim projection=[d_date_sk, d_year] +136)------------------------------------------------------SubqueryAlias: cd1 +137)--------------------------------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status] +138)--------------------------------------------------SubqueryAlias: cd2 +139)----------------------------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status] +140)----------------------------------------------TableScan: promotion projection=[p_promo_sk] +141)------------------------------------------SubqueryAlias: hd1 +142)--------------------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_income_band_sk] +143)--------------------------------------SubqueryAlias: hd2 +144)----------------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_income_band_sk] +145)----------------------------------SubqueryAlias: ad1 +146)------------------------------------TableScan: customer_address projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip] +147)------------------------------SubqueryAlias: ad2 +148)--------------------------------TableScan: customer_address projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip] +149)--------------------------SubqueryAlias: ib1 +150)----------------------------TableScan: income_band projection=[ib_income_band_sk] +151)----------------------SubqueryAlias: ib2 +152)------------------------TableScan: income_band projection=[ib_income_band_sk] +153)------------------Projection: item.i_item_sk, item.i_product_name +154)--------------------Filter: item.i_color IN ([Utf8View("purple"), Utf8View("burlywood"), Utf8View("indian"), Utf8View("spring"), Utf8View("floral"), Utf8View("medium")]) AND item.i_current_price >= Decimal128(65.00,7,2) AND item.i_current_price <= Decimal128(74.00,7,2) +155)----------------------TableScan: item projection=[i_item_sk, i_current_price, i_color, i_product_name], partial_filters=[item.i_color IN ([Utf8View("purple"), Utf8View("burlywood"), Utf8View("indian"), Utf8View("spring"), Utf8View("floral"), Utf8View("medium")]), item.i_current_price >= Decimal128(65.00,7,2), item.i_current_price <= Decimal128(74.00,7,2)] +physical_plan +01)SortPreservingMergeExec: [product_name@0 ASC NULLS LAST, store_name@1 ASC NULLS LAST, cnt@20 ASC NULLS LAST, s11@13 ASC NULLS LAST, s12@16 ASC NULLS LAST] +02)--SortExec: expr=[product_name@0 ASC NULLS LAST, store_name@1 ASC NULLS LAST, cnt@20 ASC NULLS LAST, s11@13 ASC NULLS LAST, s12@16 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[product_name@0 as product_name, store_name@1 as store_name, store_zip@2 as store_zip, b_street_number@3 as b_street_number, b_street_name@4 as b_street_name, b_city@5 as b_city, b_zip@6 as b_zip, c_street_number@7 as c_street_number, c_street_name@8 as c_street_name, c_city@9 as c_city, c_zip@10 as c_zip, syear@11 as cs1syear, cnt@12 as cs1cnt, s1@13 as s11, s2@14 as s21, s3@15 as s31, s1@16 as s12, s2@17 as s22, s3@18 as s32, syear@19 as syear, cnt@20 as cnt] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_sk@1, item_sk@0), (store_name@2, store_name@1), (store_zip@3, store_zip@2)], filter=cnt@1 <= cnt@0, projection=[product_name@0, store_name@2, store_zip@3, b_street_number@4, b_street_name@5, b_city@6, b_zip@7, c_street_number@8, c_street_name@9, c_city@10, c_zip@11, syear@12, cnt@13, s1@14, s2@15, s3@16, s1@22, s2@23, s3@24, syear@20, cnt@21] +05)--------CoalescePartitionsExec +06)----------ProjectionExec: expr=[i_product_name@0 as product_name, i_item_sk@1 as item_sk, s_store_name@2 as store_name, s_zip@3 as store_zip, ca_street_number@4 as b_street_number, ca_street_name@5 as b_street_name, ca_city@6 as b_city, ca_zip@7 as b_zip, ca_street_number@8 as c_street_number, ca_street_name@9 as c_street_name, ca_city@10 as c_city, ca_zip@11 as c_zip, d_year@12 as syear, count(Int64(1))@15 as cnt, sum(store_sales.ss_wholesale_cost)@16 as s1, sum(store_sales.ss_list_price)@17 as s2, sum(store_sales.ss_coupon_amt)@18 as s3] +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_product_name@0 as i_product_name, i_item_sk@1 as i_item_sk, s_store_name@2 as s_store_name, s_zip@3 as s_zip, ca_street_number@4 as ca_street_number, ca_street_name@5 as ca_street_name, ca_city@6 as ca_city, ca_zip@7 as ca_zip, ca_street_number@8 as ca_street_number, ca_street_name@9 as ca_street_name, ca_city@10 as ca_city, ca_zip@11 as ca_zip, d_year@12 as d_year, d_year@13 as d_year, d_year@14 as d_year], aggr=[count(Int64(1)), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_list_price), sum(store_sales.ss_coupon_amt)], ordering_mode=PartiallySorted([12]) +08)--------------RepartitionExec: partitioning=Hash([i_product_name@0, i_item_sk@1, s_store_name@2, s_zip@3, ca_street_number@4, ca_street_name@5, ca_city@6, ca_zip@7, ca_street_number@8, ca_street_name@9, ca_city@10, ca_zip@11, d_year@12, d_year@13, d_year@14], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_product_name@17 as i_product_name, i_item_sk@16 as i_item_sk, s_store_name@6 as s_store_name, s_zip@7 as s_zip, ca_street_number@8 as ca_street_number, ca_street_name@9 as ca_street_name, ca_city@10 as ca_city, ca_zip@11 as ca_zip, ca_street_number@12 as ca_street_number, ca_street_name@13 as ca_street_name, ca_city@14 as ca_city, ca_zip@15 as ca_zip, d_year@3 as d_year, d_year@4 as d_year, d_year@5 as d_year], aggr=[count(Int64(1)), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_list_price), sum(store_sales.ss_coupon_amt)], ordering_mode=PartiallySorted([12]) +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_wholesale_cost@3, ss_list_price@4, ss_coupon_amt@5, d_year@6, d_year@9, d_year@10, s_store_name@7, s_zip@8, ca_street_number@11, ca_street_name@12, ca_city@13, ca_zip@14, ca_street_number@15, ca_street_name@16, ca_city@17, ca_zip@18, i_item_sk@0, i_product_name@1] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_product_name], file_type=vortex, predicate: i_color@17 IN (SET) ([purple, burlywood, indian, spring, floral, medium]) AND i_current_price@5 >= 65.00 AND i_current_price@5 <= 74.00 +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ib_income_band_sk@0, hd_income_band_sk@9)], projection=[ss_item_sk@1, ss_wholesale_cost@2, ss_list_price@3, ss_coupon_amt@4, d_year@5, s_store_name@6, s_zip@7, d_year@8, d_year@9, ca_street_number@11, ca_street_name@12, ca_city@13, ca_zip@14, ca_street_number@15, ca_street_name@16, ca_city@17, ca_zip@18] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/income_band.vortex]]}, projection=[ib_income_band_sk], file_type=vortex +14)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ib_income_band_sk@0, hd_income_band_sk@9)], projection=[ss_item_sk@1, ss_wholesale_cost@2, ss_list_price@3, ss_coupon_amt@4, d_year@5, s_store_name@6, s_zip@7, d_year@8, d_year@9, hd_income_band_sk@11, ca_street_number@12, ca_street_name@13, ca_city@14, ca_zip@15, ca_street_number@16, ca_street_name@17, ca_city@18, ca_zip@19] +15)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/income_band.vortex]]}, projection=[ib_income_band_sk], file_type=vortex +16)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@7)], projection=[ss_item_sk@5, ss_wholesale_cost@6, ss_list_price@7, ss_coupon_amt@8, d_year@9, s_store_name@10, s_zip@11, d_year@13, d_year@14, hd_income_band_sk@15, hd_income_band_sk@16, ca_street_number@17, ca_street_name@18, ca_city@19, ca_zip@20, ca_street_number@1, ca_street_name@2, ca_city@3, ca_zip@4] +17)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip], file_type=vortex +18)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_item_sk@5, ss_wholesale_cost@7, ss_list_price@8, ss_coupon_amt@9, d_year@10, s_store_name@11, s_zip@12, c_current_addr_sk@13, d_year@14, d_year@15, hd_income_band_sk@16, hd_income_band_sk@17, ca_street_number@1, ca_street_name@2, ca_city@3, ca_zip@4] +19)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip], file_type=vortex +20)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, c_current_hdemo_sk@8)], projection=[ss_item_sk@2, ss_addr_sk@3, ss_wholesale_cost@4, ss_list_price@5, ss_coupon_amt@6, d_year@7, s_store_name@8, s_zip@9, c_current_addr_sk@11, d_year@12, d_year@13, hd_income_band_sk@14, hd_income_band_sk@1] +21)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk, hd_income_band_sk], file_type=vortex +22)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_item_sk@2, ss_addr_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_hdemo_sk@11, c_current_addr_sk@12, d_year@13, d_year@14, hd_income_band_sk@1] +23)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk, hd_income_band_sk], file_type=vortex +24)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, ss_promo_sk@3)], projection=[ss_item_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_hdemo_sk@11, c_current_addr_sk@12, d_year@13, d_year@14] +25)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex +26)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@10, cd_demo_sk@0)], filter=cd_marital_status@1 != cd_marital_status@0, projection=[ss_item_sk@0, ss_hdemo_sk@1, ss_addr_sk@2, ss_promo_sk@3, ss_wholesale_cost@4, ss_list_price@5, ss_coupon_amt@6, d_year@7, s_store_name@8, s_zip@9, c_current_hdemo_sk@11, c_current_addr_sk@12, d_year@13, d_year@14] +27)------------------------------------CoalescePartitionsExec +28)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_cdemo_sk@1, cd_demo_sk@0)], projection=[ss_item_sk@0, ss_hdemo_sk@2, ss_addr_sk@3, ss_promo_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_cdemo_sk@11, c_current_hdemo_sk@12, c_current_addr_sk@13, d_year@14, d_year@15, cd_marital_status@17] +29)----------------------------------------CoalescePartitionsExec +30)------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_first_shipto_date_sk@14, d_date_sk@0)], projection=[ss_item_sk@0, ss_cdemo_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_promo_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_cdemo_sk@11, c_current_hdemo_sk@12, c_current_addr_sk@13, d_year@15, d_year@17] +31)--------------------------------------------CoalescePartitionsExec +32)----------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_first_sales_date_sk@15, d_date_sk@0)], projection=[ss_item_sk@0, ss_cdemo_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_promo_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_cdemo_sk@11, c_current_hdemo_sk@12, c_current_addr_sk@13, c_first_shipto_date_sk@14, d_year@17] +33)------------------------------------------------CoalescePartitionsExec +34)--------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[ss_item_sk@6, ss_cdemo_sk@8, ss_hdemo_sk@9, ss_addr_sk@10, ss_promo_sk@11, ss_wholesale_cost@12, ss_list_price@13, ss_coupon_amt@14, d_year@15, s_store_name@16, s_zip@17, c_current_cdemo_sk@1, c_current_hdemo_sk@2, c_current_addr_sk@3, c_first_shipto_date_sk@4, c_first_sales_date_sk@5] +35)----------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk, c_first_shipto_date_sk, c_first_sales_date_sk], file_type=vortex +36)----------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@5)], projection=[ss_item_sk@3, ss_customer_sk@4, ss_cdemo_sk@5, ss_hdemo_sk@6, ss_addr_sk@7, ss_promo_sk@9, ss_wholesale_cost@10, ss_list_price@11, ss_coupon_amt@12, d_year@13, s_store_name@1, s_zip@2] +37)------------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_zip], file_type=vortex +38)------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, ss_customer_sk@4, ss_cdemo_sk@5, ss_hdemo_sk@6, ss_addr_sk@7, ss_store_sk@8, ss_promo_sk@9, ss_wholesale_cost@10, ss_list_price@11, ss_coupon_amt@12, d_year@1] +39)--------------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 1999 +40)--------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(cs_item_sk@0, ss_item_sk@1)] +41)----------------------------------------------------------CoalescePartitionsExec +42)------------------------------------------------------------FilterExec: CAST(sum(catalog_sales.cs_ext_list_price)@1 AS Decimal128(38, 2)) > 2 * sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)@2, projection=[cs_item_sk@0] +43)--------------------------------------------------------------AggregateExec: mode=FinalPartitioned, gby=[cs_item_sk@0 as cs_item_sk], aggr=[sum(catalog_sales.cs_ext_list_price), sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)] +44)----------------------------------------------------------------RepartitionExec: partitioning=Hash([cs_item_sk@0], 4), input_partitions=4 +45)------------------------------------------------------------------AggregateExec: mode=Partial, gby=[cs_item_sk@0 as cs_item_sk], aggr=[sum(catalog_sales.cs_ext_list_price), sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)] +46)--------------------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_item_sk@0, cs_item_sk@0), (cr_order_number@1, cs_order_number@1)], projection=[cs_item_sk@5, cs_ext_list_price@7, cr_refunded_cash@2, cr_reversed_charge@3, cr_store_credit@4] +47)----------------------------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_refunded_cash, cr_reversed_charge, cr_store_credit], file_type=vortex +48)----------------------------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_item_sk, cs_order_number, cs_ext_list_price], file_type=vortex +49)----------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_item_sk@0, ss_item_sk@1), (sr_ticket_number@1, ss_ticket_number@8)], projection=[ss_sold_date_sk@2, ss_item_sk@3, ss_customer_sk@4, ss_cdemo_sk@5, ss_hdemo_sk@6, ss_addr_sk@7, ss_store_sk@8, ss_promo_sk@9, ss_wholesale_cost@11, ss_list_price@12, ss_coupon_amt@13] +50)------------------------------------------------------------CoalescePartitionsExec +51)--------------------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number], file_type=vortex +52)------------------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_cdemo_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_promo_sk, ss_ticket_number, ss_wholesale_cost, ss_list_price, ss_coupon_amt], file_type=vortex +53)------------------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +54)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex +55)--------------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +56)----------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex +57)----------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +58)------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status], file_type=vortex +59)------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +60)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status], file_type=vortex +61)--------ProjectionExec: expr=[i_item_sk@1 as item_sk, s_store_name@2 as store_name, s_zip@3 as store_zip, d_year@12 as syear, count(Int64(1))@15 as cnt, sum(store_sales.ss_wholesale_cost)@16 as s1, sum(store_sales.ss_list_price)@17 as s2, sum(store_sales.ss_coupon_amt)@18 as s3] +62)----------AggregateExec: mode=FinalPartitioned, gby=[i_product_name@0 as i_product_name, i_item_sk@1 as i_item_sk, s_store_name@2 as s_store_name, s_zip@3 as s_zip, ca_street_number@4 as ca_street_number, ca_street_name@5 as ca_street_name, ca_city@6 as ca_city, ca_zip@7 as ca_zip, ca_street_number@8 as ca_street_number, ca_street_name@9 as ca_street_name, ca_city@10 as ca_city, ca_zip@11 as ca_zip, d_year@12 as d_year, d_year@13 as d_year, d_year@14 as d_year], aggr=[count(Int64(1)), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_list_price), sum(store_sales.ss_coupon_amt)], ordering_mode=PartiallySorted([12]) +63)------------RepartitionExec: partitioning=Hash([i_product_name@0, i_item_sk@1, s_store_name@2, s_zip@3, ca_street_number@4, ca_street_name@5, ca_city@6, ca_zip@7, ca_street_number@8, ca_street_name@9, ca_city@10, ca_zip@11, d_year@12, d_year@13, d_year@14], 4), input_partitions=4 +64)--------------AggregateExec: mode=Partial, gby=[i_product_name@17 as i_product_name, i_item_sk@16 as i_item_sk, s_store_name@6 as s_store_name, s_zip@7 as s_zip, ca_street_number@8 as ca_street_number, ca_street_name@9 as ca_street_name, ca_city@10 as ca_city, ca_zip@11 as ca_zip, ca_street_number@12 as ca_street_number, ca_street_name@13 as ca_street_name, ca_city@14 as ca_city, ca_zip@15 as ca_zip, d_year@3 as d_year, d_year@4 as d_year, d_year@5 as d_year], aggr=[count(Int64(1)), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_list_price), sum(store_sales.ss_coupon_amt)], ordering_mode=PartiallySorted([12]) +65)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_wholesale_cost@3, ss_list_price@4, ss_coupon_amt@5, d_year@6, d_year@9, d_year@10, s_store_name@7, s_zip@8, ca_street_number@11, ca_street_name@12, ca_city@13, ca_zip@14, ca_street_number@15, ca_street_name@16, ca_city@17, ca_zip@18, i_item_sk@0, i_product_name@1] +66)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_product_name], file_type=vortex, predicate: i_color@17 IN (SET) ([purple, burlywood, indian, spring, floral, medium]) AND i_current_price@5 >= 65.00 AND i_current_price@5 <= 74.00 +67)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ib_income_band_sk@0, hd_income_band_sk@9)], projection=[ss_item_sk@1, ss_wholesale_cost@2, ss_list_price@3, ss_coupon_amt@4, d_year@5, s_store_name@6, s_zip@7, d_year@8, d_year@9, ca_street_number@11, ca_street_name@12, ca_city@13, ca_zip@14, ca_street_number@15, ca_street_name@16, ca_city@17, ca_zip@18] +68)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/income_band.vortex]]}, projection=[ib_income_band_sk], file_type=vortex +69)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ib_income_band_sk@0, hd_income_band_sk@9)], projection=[ss_item_sk@1, ss_wholesale_cost@2, ss_list_price@3, ss_coupon_amt@4, d_year@5, s_store_name@6, s_zip@7, d_year@8, d_year@9, hd_income_band_sk@11, ca_street_number@12, ca_street_name@13, ca_city@14, ca_zip@15, ca_street_number@16, ca_street_name@17, ca_city@18, ca_zip@19] +70)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/income_band.vortex]]}, projection=[ib_income_band_sk], file_type=vortex +71)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@7)], projection=[ss_item_sk@5, ss_wholesale_cost@6, ss_list_price@7, ss_coupon_amt@8, d_year@9, s_store_name@10, s_zip@11, d_year@13, d_year@14, hd_income_band_sk@15, hd_income_band_sk@16, ca_street_number@17, ca_street_name@18, ca_city@19, ca_zip@20, ca_street_number@1, ca_street_name@2, ca_city@3, ca_zip@4] +72)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip], file_type=vortex +73)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_item_sk@5, ss_wholesale_cost@7, ss_list_price@8, ss_coupon_amt@9, d_year@10, s_store_name@11, s_zip@12, c_current_addr_sk@13, d_year@14, d_year@15, hd_income_band_sk@16, hd_income_band_sk@17, ca_street_number@1, ca_street_name@2, ca_city@3, ca_zip@4] +74)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_street_number, ca_street_name, ca_city, ca_zip], file_type=vortex +75)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, c_current_hdemo_sk@8)], projection=[ss_item_sk@2, ss_addr_sk@3, ss_wholesale_cost@4, ss_list_price@5, ss_coupon_amt@6, d_year@7, s_store_name@8, s_zip@9, c_current_addr_sk@11, d_year@12, d_year@13, hd_income_band_sk@14, hd_income_band_sk@1] +76)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk, hd_income_band_sk], file_type=vortex +77)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_item_sk@2, ss_addr_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_hdemo_sk@11, c_current_addr_sk@12, d_year@13, d_year@14, hd_income_band_sk@1] +78)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk, hd_income_band_sk], file_type=vortex +79)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, ss_promo_sk@3)], projection=[ss_item_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_hdemo_sk@11, c_current_addr_sk@12, d_year@13, d_year@14] +80)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex +81)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@10, cd_demo_sk@0)], filter=cd_marital_status@1 != cd_marital_status@0, projection=[ss_item_sk@0, ss_hdemo_sk@1, ss_addr_sk@2, ss_promo_sk@3, ss_wholesale_cost@4, ss_list_price@5, ss_coupon_amt@6, d_year@7, s_store_name@8, s_zip@9, c_current_hdemo_sk@11, c_current_addr_sk@12, d_year@13, d_year@14] +82)----------------------------------CoalescePartitionsExec +83)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_cdemo_sk@1, cd_demo_sk@0)], projection=[ss_item_sk@0, ss_hdemo_sk@2, ss_addr_sk@3, ss_promo_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_cdemo_sk@11, c_current_hdemo_sk@12, c_current_addr_sk@13, d_year@14, d_year@15, cd_marital_status@17] +84)--------------------------------------CoalescePartitionsExec +85)----------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_first_shipto_date_sk@14, d_date_sk@0)], projection=[ss_item_sk@0, ss_cdemo_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_promo_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_cdemo_sk@11, c_current_hdemo_sk@12, c_current_addr_sk@13, d_year@15, d_year@17] +86)------------------------------------------CoalescePartitionsExec +87)--------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_first_sales_date_sk@15, d_date_sk@0)], projection=[ss_item_sk@0, ss_cdemo_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_promo_sk@4, ss_wholesale_cost@5, ss_list_price@6, ss_coupon_amt@7, d_year@8, s_store_name@9, s_zip@10, c_current_cdemo_sk@11, c_current_hdemo_sk@12, c_current_addr_sk@13, c_first_shipto_date_sk@14, d_year@17] +88)----------------------------------------------CoalescePartitionsExec +89)------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[ss_item_sk@6, ss_cdemo_sk@8, ss_hdemo_sk@9, ss_addr_sk@10, ss_promo_sk@11, ss_wholesale_cost@12, ss_list_price@13, ss_coupon_amt@14, d_year@15, s_store_name@16, s_zip@17, c_current_cdemo_sk@1, c_current_hdemo_sk@2, c_current_addr_sk@3, c_first_shipto_date_sk@4, c_first_sales_date_sk@5] +90)--------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk, c_first_shipto_date_sk, c_first_sales_date_sk], file_type=vortex +91)--------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@5)], projection=[ss_item_sk@3, ss_customer_sk@4, ss_cdemo_sk@5, ss_hdemo_sk@6, ss_addr_sk@7, ss_promo_sk@9, ss_wholesale_cost@10, ss_list_price@11, ss_coupon_amt@12, d_year@13, s_store_name@1, s_zip@2] +92)----------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_zip], file_type=vortex +93)----------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, ss_customer_sk@4, ss_cdemo_sk@5, ss_hdemo_sk@6, ss_addr_sk@7, ss_store_sk@8, ss_promo_sk@9, ss_wholesale_cost@10, ss_list_price@11, ss_coupon_amt@12, d_year@1] +94)------------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2000 +95)------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(cs_item_sk@0, ss_item_sk@1)] +96)--------------------------------------------------------CoalescePartitionsExec +97)----------------------------------------------------------FilterExec: CAST(sum(catalog_sales.cs_ext_list_price)@1 AS Decimal128(38, 2)) > 2 * sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)@2, projection=[cs_item_sk@0] +98)------------------------------------------------------------AggregateExec: mode=FinalPartitioned, gby=[cs_item_sk@0 as cs_item_sk], aggr=[sum(catalog_sales.cs_ext_list_price), sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)] +99)--------------------------------------------------------------RepartitionExec: partitioning=Hash([cs_item_sk@0], 4), input_partitions=4 +100)----------------------------------------------------------------AggregateExec: mode=Partial, gby=[cs_item_sk@0 as cs_item_sk], aggr=[sum(catalog_sales.cs_ext_list_price), sum(catalog_returns.cr_refunded_cash + catalog_returns.cr_reversed_charge + catalog_returns.cr_store_credit)] +101)------------------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_item_sk@0, cs_item_sk@0), (cr_order_number@1, cs_order_number@1)], projection=[cs_item_sk@5, cs_ext_list_price@7, cr_refunded_cash@2, cr_reversed_charge@3, cr_store_credit@4] +102)--------------------------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_refunded_cash, cr_reversed_charge, cr_store_credit], file_type=vortex +103)--------------------------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_item_sk, cs_order_number, cs_ext_list_price], file_type=vortex +104)--------------------------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_item_sk@0, ss_item_sk@1), (sr_ticket_number@1, ss_ticket_number@8)], projection=[ss_sold_date_sk@2, ss_item_sk@3, ss_customer_sk@4, ss_cdemo_sk@5, ss_hdemo_sk@6, ss_addr_sk@7, ss_store_sk@8, ss_promo_sk@9, ss_wholesale_cost@11, ss_list_price@12, ss_coupon_amt@13] +105)----------------------------------------------------------CoalescePartitionsExec +106)------------------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number], file_type=vortex +107)----------------------------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_cdemo_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_promo_sk, ss_ticket_number, ss_wholesale_cost, ss_list_price, ss_coupon_amt], file_type=vortex +108)----------------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +109)------------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex +110)------------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +111)--------------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex +112)--------------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +113)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status], file_type=vortex +114)----------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +115)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q65.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q65.slt.no new file mode 100644 index 00000000000..f18a93236e2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q65.slt.no @@ -0,0 +1,101 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT s_store_name, + i_item_desc, + sc.revenue, + i_current_price, + i_wholesale_cost, + i_brand +FROM store, + item, + (SELECT ss_store_sk, + avg(revenue) AS ave + FROM + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sa + GROUP BY ss_store_sk) sb, + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sc +WHERE sb.ss_store_sk = sc.ss_store_sk + AND sc.revenue <= 0.1 * sb.ave + AND s_store_sk = sc.ss_store_sk + AND i_item_sk = sc.ss_item_sk +ORDER BY s_store_name NULLS FIRST, + i_item_desc NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: store.s_store_name ASC NULLS FIRST, item.i_item_desc ASC NULLS FIRST, fetch=100 +02)--Projection: store.s_store_name, item.i_item_desc, sc.revenue, item.i_current_price, item.i_wholesale_cost, item.i_brand +03)----LeftSemi Join: sc.ss_store_sk = sb.ss_store_sk Filter: CAST(sc.revenue AS Decimal128(30, 15)) <= CAST(Float64(0.1) * CAST(sb.ave AS Float64) AS Decimal128(30, 15)) +04)------Projection: store.s_store_name, sc.ss_store_sk, sc.revenue, item.i_item_desc, item.i_current_price, item.i_wholesale_cost, item.i_brand +05)--------Inner Join: sc.ss_item_sk = item.i_item_sk +06)----------Projection: store.s_store_name, sc.ss_store_sk, sc.ss_item_sk, sc.revenue +07)------------Inner Join: store.s_store_sk = sc.ss_store_sk +08)--------------TableScan: store projection=[s_store_sk, s_store_name] +09)--------------SubqueryAlias: sc +10)----------------Projection: store_sales.ss_store_sk, store_sales.ss_item_sk, sum(store_sales.ss_sales_price) AS revenue +11)------------------Aggregate: groupBy=[[store_sales.ss_store_sk, store_sales.ss_item_sk]], aggr=[[sum(store_sales.ss_sales_price)]] +12)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +13)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +15)------------------------Projection: date_dim.d_date_sk +16)--------------------------Filter: date_dim.d_month_seq >= Int64(1176) AND date_dim.d_month_seq <= Int64(1187) +17)----------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1176), date_dim.d_month_seq <= Int64(1187)] +18)----------TableScan: item projection=[i_item_sk, i_item_desc, i_current_price, i_wholesale_cost, i_brand] +19)------SubqueryAlias: sb +20)--------Projection: sa.ss_store_sk, avg(sa.revenue) AS ave +21)----------Aggregate: groupBy=[[sa.ss_store_sk]], aggr=[[avg(sa.revenue)]] +22)------------SubqueryAlias: sa +23)--------------Projection: store_sales.ss_store_sk, sum(store_sales.ss_sales_price) AS revenue +24)----------------Aggregate: groupBy=[[store_sales.ss_store_sk, store_sales.ss_item_sk]], aggr=[[sum(store_sales.ss_sales_price)]] +25)------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +26)--------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +27)----------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +28)----------------------Projection: date_dim.d_date_sk +29)------------------------Filter: date_dim.d_month_seq >= Int64(1176) AND date_dim.d_month_seq <= Int64(1187) +30)--------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1176), date_dim.d_month_seq <= Int64(1187)] +physical_plan +01)SortPreservingMergeExec: [s_store_name@0 ASC, i_item_desc@1 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[s_store_name@0 ASC, i_item_desc@1 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ss_store_sk@1, ss_store_sk@0)], filter=CAST(revenue@0 AS Decimal128(30, 15)) <= CAST(0.1 * CAST(ave@1 AS Float64) AS Decimal128(30, 15)), projection=[s_store_name@0, i_item_desc@3, revenue@2, i_current_price@4, i_wholesale_cost@5, i_brand@6] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@2)], projection=[s_store_name@5, ss_store_sk@6, revenue@8, i_item_desc@1, i_current_price@2, i_wholesale_cost@3, i_brand@4] +06)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_desc, i_current_price, i_wholesale_cost, i_brand], file_type=vortex +07)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[s_store_name@1, ss_store_sk@2, ss_item_sk@3, revenue@4] +08)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name], file_type=vortex +09)------------ProjectionExec: expr=[ss_store_sk@0 as ss_store_sk, ss_item_sk@1 as ss_item_sk, sum(store_sales.ss_sales_price)@2 as revenue] +10)--------------AggregateExec: mode=FinalPartitioned, gby=[ss_store_sk@0 as ss_store_sk, ss_item_sk@1 as ss_item_sk], aggr=[sum(store_sales.ss_sales_price)] +11)----------------RepartitionExec: partitioning=Hash([ss_store_sk@0, ss_item_sk@1], 4), input_partitions=4 +12)------------------AggregateExec: mode=Partial, gby=[ss_store_sk@1 as ss_store_sk, ss_item_sk@0 as ss_item_sk], aggr=[sum(store_sales.ss_sales_price)] +13)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_sales_price@4] +14)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1176 AND d_month_seq@3 <= 1187 +15)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex +16)------ProjectionExec: expr=[ss_store_sk@0 as ss_store_sk, avg(sa.revenue)@1 as ave] +17)--------AggregateExec: mode=FinalPartitioned, gby=[ss_store_sk@0 as ss_store_sk], aggr=[avg(sa.revenue)] +18)----------RepartitionExec: partitioning=Hash([ss_store_sk@0], 4), input_partitions=4 +19)------------AggregateExec: mode=Partial, gby=[ss_store_sk@0 as ss_store_sk], aggr=[avg(sa.revenue)] +20)--------------ProjectionExec: expr=[ss_store_sk@0 as ss_store_sk, sum(store_sales.ss_sales_price)@2 as revenue] +21)----------------AggregateExec: mode=FinalPartitioned, gby=[ss_store_sk@0 as ss_store_sk, ss_item_sk@1 as ss_item_sk], aggr=[sum(store_sales.ss_sales_price)] +22)------------------RepartitionExec: partitioning=Hash([ss_store_sk@0, ss_item_sk@1], 4), input_partitions=4 +23)--------------------AggregateExec: mode=Partial, gby=[ss_store_sk@1 as ss_store_sk, ss_item_sk@0 as ss_item_sk], aggr=[sum(store_sales.ss_sales_price)] +24)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_sales_price@4] +25)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1176 AND d_month_seq@3 <= 1187 +26)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q66.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q66.slt.no new file mode 100644 index 00000000000..16ee29ad3c1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q66.slt.no @@ -0,0 +1,309 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + ,sum(jan_sales) as jan_sales + ,sum(feb_sales) as feb_sales + ,sum(mar_sales) as mar_sales + ,sum(apr_sales) as apr_sales + ,sum(may_sales) as may_sales + ,sum(jun_sales) as jun_sales + ,sum(jul_sales) as jul_sales + ,sum(aug_sales) as aug_sales + ,sum(sep_sales) as sep_sales + ,sum(oct_sales) as oct_sales + ,sum(nov_sales) as nov_sales + ,sum(dec_sales) as dec_sales + ,sum(jan_sales/w_warehouse_sq_ft) as jan_sales_per_sq_foot + ,sum(feb_sales/w_warehouse_sq_ft) as feb_sales_per_sq_foot + ,sum(mar_sales/w_warehouse_sq_ft) as mar_sales_per_sq_foot + ,sum(apr_sales/w_warehouse_sq_ft) as apr_sales_per_sq_foot + ,sum(may_sales/w_warehouse_sq_ft) as may_sales_per_sq_foot + ,sum(jun_sales/w_warehouse_sq_ft) as jun_sales_per_sq_foot + ,sum(jul_sales/w_warehouse_sq_ft) as jul_sales_per_sq_foot + ,sum(aug_sales/w_warehouse_sq_ft) as aug_sales_per_sq_foot + ,sum(sep_sales/w_warehouse_sq_ft) as sep_sales_per_sq_foot + ,sum(oct_sales/w_warehouse_sq_ft) as oct_sales_per_sq_foot + ,sum(nov_sales/w_warehouse_sq_ft) as nov_sales_per_sq_foot + ,sum(dec_sales/w_warehouse_sq_ft) as dec_sales_per_sq_foot + ,sum(jan_net) as jan_net + ,sum(feb_net) as feb_net + ,sum(mar_net) as mar_net + ,sum(apr_net) as apr_net + ,sum(may_net) as may_net + ,sum(jun_net) as jun_net + ,sum(jul_net) as jul_net + ,sum(aug_net) as aug_net + ,sum(sep_net) as sep_net + ,sum(oct_net) as oct_net + ,sum(nov_net) as nov_net + ,sum(dec_net) as dec_net + from ( + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then ws_ext_sales_price* ws_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then ws_ext_sales_price* ws_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then ws_ext_sales_price* ws_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then ws_ext_sales_price* ws_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then ws_ext_sales_price* ws_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then ws_ext_sales_price* ws_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then ws_ext_sales_price* ws_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then ws_ext_sales_price* ws_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then ws_ext_sales_price* ws_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then ws_ext_sales_price* ws_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then ws_ext_sales_price* ws_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then ws_ext_sales_price* ws_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then ws_net_paid * ws_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then ws_net_paid * ws_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then ws_net_paid * ws_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then ws_net_paid * ws_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then ws_net_paid * ws_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then ws_net_paid * ws_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then ws_net_paid * ws_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then ws_net_paid * ws_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then ws_net_paid * ws_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then ws_net_paid * ws_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then ws_net_paid * ws_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then ws_net_paid * ws_quantity else 0 end) as dec_net + from + web_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + ws_warehouse_sk = w_warehouse_sk + and ws_sold_date_sk = d_date_sk + and ws_sold_time_sk = t_time_sk + and ws_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 and 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + union all + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then cs_sales_price* cs_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then cs_sales_price* cs_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then cs_sales_price* cs_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then cs_sales_price* cs_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then cs_sales_price* cs_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then cs_sales_price* cs_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then cs_sales_price* cs_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then cs_sales_price* cs_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then cs_sales_price* cs_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then cs_sales_price* cs_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then cs_sales_price* cs_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then cs_sales_price* cs_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as dec_net + from + catalog_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + cs_warehouse_sk = w_warehouse_sk + and cs_sold_date_sk = d_date_sk + and cs_sold_time_sk = t_time_sk + and cs_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 AND 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + ) x + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + order by w_warehouse_name NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: x.w_warehouse_name ASC NULLS FIRST, fetch=100 +02)--Projection: x.w_warehouse_name, x.w_warehouse_sq_ft, x.w_city, x.w_county, x.w_state, x.w_country, x.ship_carriers, x.year_, sum(x.jan_sales) AS jan_sales, sum(x.feb_sales) AS feb_sales, sum(x.mar_sales) AS mar_sales, sum(x.apr_sales) AS apr_sales, sum(x.may_sales) AS may_sales, sum(x.jun_sales) AS jun_sales, sum(x.jul_sales) AS jul_sales, sum(x.aug_sales) AS aug_sales, sum(x.sep_sales) AS sep_sales, sum(x.oct_sales) AS oct_sales, sum(x.nov_sales) AS nov_sales, sum(x.dec_sales) AS dec_sales, sum(x.jan_sales / x.w_warehouse_sq_ft) AS jan_sales_per_sq_foot, sum(x.feb_sales / x.w_warehouse_sq_ft) AS feb_sales_per_sq_foot, sum(x.mar_sales / x.w_warehouse_sq_ft) AS mar_sales_per_sq_foot, sum(x.apr_sales / x.w_warehouse_sq_ft) AS apr_sales_per_sq_foot, sum(x.may_sales / x.w_warehouse_sq_ft) AS may_sales_per_sq_foot, sum(x.jun_sales / x.w_warehouse_sq_ft) AS jun_sales_per_sq_foot, sum(x.jul_sales / x.w_warehouse_sq_ft) AS jul_sales_per_sq_foot, sum(x.aug_sales / x.w_warehouse_sq_ft) AS aug_sales_per_sq_foot, sum(x.sep_sales / x.w_warehouse_sq_ft) AS sep_sales_per_sq_foot, sum(x.oct_sales / x.w_warehouse_sq_ft) AS oct_sales_per_sq_foot, sum(x.nov_sales / x.w_warehouse_sq_ft) AS nov_sales_per_sq_foot, sum(x.dec_sales / x.w_warehouse_sq_ft) AS dec_sales_per_sq_foot, sum(x.jan_net) AS jan_net, sum(x.feb_net) AS feb_net, sum(x.mar_net) AS mar_net, sum(x.apr_net) AS apr_net, sum(x.may_net) AS may_net, sum(x.jun_net) AS jun_net, sum(x.jul_net) AS jul_net, sum(x.aug_net) AS aug_net, sum(x.sep_net) AS sep_net, sum(x.oct_net) AS oct_net, sum(x.nov_net) AS nov_net, sum(x.dec_net) AS dec_net +03)----Aggregate: groupBy=[[x.w_warehouse_name, x.w_warehouse_sq_ft, x.w_city, x.w_county, x.w_state, x.w_country, x.ship_carriers, x.year_]], aggr=[[sum(x.jan_sales), sum(x.feb_sales), sum(x.mar_sales), sum(x.apr_sales), sum(x.may_sales), sum(x.jun_sales), sum(x.jul_sales), sum(x.aug_sales), sum(x.sep_sales), sum(x.oct_sales), sum(x.nov_sales), sum(x.dec_sales), sum(x.jan_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.feb_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.mar_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.apr_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.may_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.jun_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.jul_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.aug_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.sep_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.oct_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.nov_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.dec_sales / __common_expr_1 AS x.w_warehouse_sq_ft), sum(x.jan_net), sum(x.feb_net), sum(x.mar_net), sum(x.apr_net), sum(x.may_net), sum(x.jun_net), sum(x.jul_net), sum(x.aug_net), sum(x.sep_net), sum(x.oct_net), sum(x.nov_net), sum(x.dec_net)]] +04)------Projection: CAST(x.w_warehouse_sq_ft AS Decimal128(20, 0)) AS __common_expr_1, x.w_warehouse_name, x.w_warehouse_sq_ft, x.w_city, x.w_county, x.w_state, x.w_country, x.ship_carriers, x.year_, x.jan_sales, x.feb_sales, x.mar_sales, x.apr_sales, x.may_sales, x.jun_sales, x.jul_sales, x.aug_sales, x.sep_sales, x.oct_sales, x.nov_sales, x.dec_sales, x.jan_net, x.feb_net, x.mar_net, x.apr_net, x.may_net, x.jun_net, x.jul_net, x.aug_net, x.sep_net, x.oct_net, x.nov_net, x.dec_net +05)--------SubqueryAlias: x +06)----------Union +07)------------Projection: warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, Utf8("DHL,BARIAN") AS ship_carriers, date_dim.d_year AS year_, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS jan_sales, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS feb_sales, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS mar_sales, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS apr_sales, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS may_sales, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS jun_sales, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS jul_sales, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS aug_sales, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS sep_sales, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS oct_sales, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS nov_sales, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END) AS dec_sales, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS jan_net, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS feb_net, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS mar_net, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS apr_net, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS may_net, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS jun_net, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS jul_net, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS aug_net, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS sep_net, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS oct_net, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS nov_net, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END) AS dec_net +08)--------------Aggregate: groupBy=[[warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year]], aggr=[[sum(CASE WHEN __common_expr_2 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_3 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_4 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_5 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_6 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_7 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_8 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_9 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_10 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_11 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_12 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_13 THEN web_sales.ws_ext_sales_price * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_2 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_3 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_4 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_5 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_6 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_7 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_8 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_9 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_10 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_11 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_12 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_13 THEN web_sales.ws_net_paid * CAST(web_sales.ws_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)]] +09)----------------Projection: date_dim.d_moy = Int64(1) AS __common_expr_2, date_dim.d_moy = Int64(2) AS __common_expr_3, date_dim.d_moy = Int64(3) AS __common_expr_4, date_dim.d_moy = Int64(4) AS __common_expr_5, date_dim.d_moy = Int64(5) AS __common_expr_6, date_dim.d_moy = Int64(6) AS __common_expr_7, date_dim.d_moy = Int64(7) AS __common_expr_8, date_dim.d_moy = Int64(8) AS __common_expr_9, date_dim.d_moy = Int64(9) AS __common_expr_10, date_dim.d_moy = Int64(10) AS __common_expr_11, date_dim.d_moy = Int64(11) AS __common_expr_12, date_dim.d_moy = Int64(12) AS __common_expr_13, web_sales.ws_quantity, web_sales.ws_ext_sales_price, web_sales.ws_net_paid, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year +10)------------------Inner Join: web_sales.ws_ship_mode_sk = ship_mode.sm_ship_mode_sk +11)--------------------Projection: web_sales.ws_ship_mode_sk, web_sales.ws_quantity, web_sales.ws_ext_sales_price, web_sales.ws_net_paid, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year, date_dim.d_moy +12)----------------------Inner Join: web_sales.ws_sold_time_sk = time_dim.t_time_sk +13)------------------------Projection: web_sales.ws_sold_time_sk, web_sales.ws_ship_mode_sk, web_sales.ws_quantity, web_sales.ws_ext_sales_price, web_sales.ws_net_paid, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year, date_dim.d_moy +14)--------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +15)----------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_sold_time_sk, web_sales.ws_ship_mode_sk, web_sales.ws_quantity, web_sales.ws_ext_sales_price, web_sales.ws_net_paid, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country +16)------------------------------Inner Join: web_sales.ws_warehouse_sk = warehouse.w_warehouse_sk +17)--------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_sold_time_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_quantity, ws_ext_sales_price, ws_net_paid] +18)--------------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country] +19)----------------------------Filter: date_dim.d_year = Int64(2001) +20)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001)] +21)------------------------Projection: time_dim.t_time_sk +22)--------------------------Filter: time_dim.t_time >= Int64(30838) AND time_dim.t_time <= Int64(59638) +23)----------------------------TableScan: time_dim projection=[t_time_sk, t_time], partial_filters=[time_dim.t_time >= Int64(30838), time_dim.t_time <= Int64(59638)] +24)--------------------Projection: ship_mode.sm_ship_mode_sk +25)----------------------Filter: ship_mode.sm_carrier = Utf8View("DHL") OR ship_mode.sm_carrier = Utf8View("BARIAN") +26)------------------------TableScan: ship_mode projection=[sm_ship_mode_sk, sm_carrier], partial_filters=[ship_mode.sm_carrier = Utf8View("DHL") OR ship_mode.sm_carrier = Utf8View("BARIAN")] +27)------------Projection: warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, Utf8("DHL,BARIAN") AS ship_carriers, date_dim.d_year AS year_, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS jan_sales, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS feb_sales, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS mar_sales, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS apr_sales, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS may_sales, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS jun_sales, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS jul_sales, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS aug_sales, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS sep_sales, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS oct_sales, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS nov_sales, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END) AS dec_sales, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS jan_net, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS feb_net, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS mar_net, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS apr_net, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS may_net, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS jun_net, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS jul_net, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS aug_net, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS sep_net, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS oct_net, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS nov_net, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END) AS dec_net +28)--------------Aggregate: groupBy=[[warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year]], aggr=[[sum(CASE WHEN __common_expr_14 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_15 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_16 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_17 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_18 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_19 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_20 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_21 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_22 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_23 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_24 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_25 THEN catalog_sales.cs_sales_price * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_14 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_15 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_16 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_17 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_18 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_19 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_20 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_21 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_22 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_23 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_24 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_25 THEN catalog_sales.cs_net_paid_inc_tax * CAST(catalog_sales.cs_quantity AS Decimal128(20, 0)) ELSE Decimal128(0.00,28,2) END) AS sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)]] +29)----------------Projection: date_dim.d_moy = Int64(1) AS __common_expr_14, date_dim.d_moy = Int64(2) AS __common_expr_15, date_dim.d_moy = Int64(3) AS __common_expr_16, date_dim.d_moy = Int64(4) AS __common_expr_17, date_dim.d_moy = Int64(5) AS __common_expr_18, date_dim.d_moy = Int64(6) AS __common_expr_19, date_dim.d_moy = Int64(7) AS __common_expr_20, date_dim.d_moy = Int64(8) AS __common_expr_21, date_dim.d_moy = Int64(9) AS __common_expr_22, date_dim.d_moy = Int64(10) AS __common_expr_23, date_dim.d_moy = Int64(11) AS __common_expr_24, date_dim.d_moy = Int64(12) AS __common_expr_25, catalog_sales.cs_quantity, catalog_sales.cs_sales_price, catalog_sales.cs_net_paid_inc_tax, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year +30)------------------Inner Join: catalog_sales.cs_ship_mode_sk = ship_mode.sm_ship_mode_sk +31)--------------------Projection: catalog_sales.cs_ship_mode_sk, catalog_sales.cs_quantity, catalog_sales.cs_sales_price, catalog_sales.cs_net_paid_inc_tax, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year, date_dim.d_moy +32)----------------------Inner Join: catalog_sales.cs_sold_time_sk = time_dim.t_time_sk +33)------------------------Projection: catalog_sales.cs_sold_time_sk, catalog_sales.cs_ship_mode_sk, catalog_sales.cs_quantity, catalog_sales.cs_sales_price, catalog_sales.cs_net_paid_inc_tax, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country, date_dim.d_year, date_dim.d_moy +34)--------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +35)----------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_sold_time_sk, catalog_sales.cs_ship_mode_sk, catalog_sales.cs_quantity, catalog_sales.cs_sales_price, catalog_sales.cs_net_paid_inc_tax, warehouse.w_warehouse_name, warehouse.w_warehouse_sq_ft, warehouse.w_city, warehouse.w_county, warehouse.w_state, warehouse.w_country +36)------------------------------Inner Join: catalog_sales.cs_warehouse_sk = warehouse.w_warehouse_sk +37)--------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_sold_time_sk, cs_ship_mode_sk, cs_warehouse_sk, cs_quantity, cs_sales_price, cs_net_paid_inc_tax] +38)--------------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country] +39)----------------------------Filter: date_dim.d_year = Int64(2001) +40)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001)] +41)------------------------Projection: time_dim.t_time_sk +42)--------------------------Filter: time_dim.t_time >= Int64(30838) AND time_dim.t_time <= Int64(59638) +43)----------------------------TableScan: time_dim projection=[t_time_sk, t_time], partial_filters=[time_dim.t_time >= Int64(30838), time_dim.t_time <= Int64(59638)] +44)--------------------Projection: ship_mode.sm_ship_mode_sk +45)----------------------Filter: ship_mode.sm_carrier = Utf8View("DHL") OR ship_mode.sm_carrier = Utf8View("BARIAN") +46)------------------------TableScan: ship_mode projection=[sm_ship_mode_sk, sm_carrier], partial_filters=[ship_mode.sm_carrier = Utf8View("DHL") OR ship_mode.sm_carrier = Utf8View("BARIAN")] +physical_plan +01)SortPreservingMergeExec: [w_warehouse_name@0 ASC], fetch=100 +02)--ProjectionExec: expr=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sq_ft@1 as w_warehouse_sq_ft, w_city@2 as w_city, w_county@3 as w_county, w_state@4 as w_state, w_country@5 as w_country, ship_carriers@6 as ship_carriers, year_@7 as year_, sum(x.jan_sales)@8 as jan_sales, sum(x.feb_sales)@9 as feb_sales, sum(x.mar_sales)@10 as mar_sales, sum(x.apr_sales)@11 as apr_sales, sum(x.may_sales)@12 as may_sales, sum(x.jun_sales)@13 as jun_sales, sum(x.jul_sales)@14 as jul_sales, sum(x.aug_sales)@15 as aug_sales, sum(x.sep_sales)@16 as sep_sales, sum(x.oct_sales)@17 as oct_sales, sum(x.nov_sales)@18 as nov_sales, sum(x.dec_sales)@19 as dec_sales, sum(x.jan_sales / x.w_warehouse_sq_ft)@20 as jan_sales_per_sq_foot, sum(x.feb_sales / x.w_warehouse_sq_ft)@21 as feb_sales_per_sq_foot, sum(x.mar_sales / x.w_warehouse_sq_ft)@22 as mar_sales_per_sq_foot, sum(x.apr_sales / x.w_warehouse_sq_ft)@23 as apr_sales_per_sq_foot, sum(x.may_sales / x.w_warehouse_sq_ft)@24 as may_sales_per_sq_foot, sum(x.jun_sales / x.w_warehouse_sq_ft)@25 as jun_sales_per_sq_foot, sum(x.jul_sales / x.w_warehouse_sq_ft)@26 as jul_sales_per_sq_foot, sum(x.aug_sales / x.w_warehouse_sq_ft)@27 as aug_sales_per_sq_foot, sum(x.sep_sales / x.w_warehouse_sq_ft)@28 as sep_sales_per_sq_foot, sum(x.oct_sales / x.w_warehouse_sq_ft)@29 as oct_sales_per_sq_foot, sum(x.nov_sales / x.w_warehouse_sq_ft)@30 as nov_sales_per_sq_foot, sum(x.dec_sales / x.w_warehouse_sq_ft)@31 as dec_sales_per_sq_foot, sum(x.jan_net)@32 as jan_net, sum(x.feb_net)@33 as feb_net, sum(x.mar_net)@34 as mar_net, sum(x.apr_net)@35 as apr_net, sum(x.may_net)@36 as may_net, sum(x.jun_net)@37 as jun_net, sum(x.jul_net)@38 as jul_net, sum(x.aug_net)@39 as aug_net, sum(x.sep_net)@40 as sep_net, sum(x.oct_net)@41 as oct_net, sum(x.nov_net)@42 as nov_net, sum(x.dec_net)@43 as dec_net] +03)----SortExec: TopK(fetch=100), expr=[w_warehouse_name@0 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=SinglePartitioned, gby=[w_warehouse_name@1 as w_warehouse_name, w_warehouse_sq_ft@2 as w_warehouse_sq_ft, w_city@3 as w_city, w_county@4 as w_county, w_state@5 as w_state, w_country@6 as w_country, ship_carriers@7 as ship_carriers, year_@8 as year_], aggr=[sum(x.jan_sales), sum(x.feb_sales), sum(x.mar_sales), sum(x.apr_sales), sum(x.may_sales), sum(x.jun_sales), sum(x.jul_sales), sum(x.aug_sales), sum(x.sep_sales), sum(x.oct_sales), sum(x.nov_sales), sum(x.dec_sales), sum(x.jan_sales / x.w_warehouse_sq_ft), sum(x.feb_sales / x.w_warehouse_sq_ft), sum(x.mar_sales / x.w_warehouse_sq_ft), sum(x.apr_sales / x.w_warehouse_sq_ft), sum(x.may_sales / x.w_warehouse_sq_ft), sum(x.jun_sales / x.w_warehouse_sq_ft), sum(x.jul_sales / x.w_warehouse_sq_ft), sum(x.aug_sales / x.w_warehouse_sq_ft), sum(x.sep_sales / x.w_warehouse_sq_ft), sum(x.oct_sales / x.w_warehouse_sq_ft), sum(x.nov_sales / x.w_warehouse_sq_ft), sum(x.dec_sales / x.w_warehouse_sq_ft), sum(x.jan_net), sum(x.feb_net), sum(x.mar_net), sum(x.apr_net), sum(x.may_net), sum(x.jun_net), sum(x.jul_net), sum(x.aug_net), sum(x.sep_net), sum(x.oct_net), sum(x.nov_net), sum(x.dec_net)] +05)--------ProjectionExec: expr=[CAST(w_warehouse_sq_ft@1 AS Decimal128(20, 0)) as __common_expr_1, w_warehouse_name@0 as w_warehouse_name, w_warehouse_sq_ft@1 as w_warehouse_sq_ft, w_city@2 as w_city, w_county@3 as w_county, w_state@4 as w_state, w_country@5 as w_country, ship_carriers@6 as ship_carriers, year_@7 as year_, jan_sales@8 as jan_sales, feb_sales@9 as feb_sales, mar_sales@10 as mar_sales, apr_sales@11 as apr_sales, may_sales@12 as may_sales, jun_sales@13 as jun_sales, jul_sales@14 as jul_sales, aug_sales@15 as aug_sales, sep_sales@16 as sep_sales, oct_sales@17 as oct_sales, nov_sales@18 as nov_sales, dec_sales@19 as dec_sales, jan_net@20 as jan_net, feb_net@21 as feb_net, mar_net@22 as mar_net, apr_net@23 as apr_net, may_net@24 as may_net, jun_net@25 as jun_net, jul_net@26 as jul_net, aug_net@27 as aug_net, sep_net@28 as sep_net, oct_net@29 as oct_net, nov_net@30 as nov_net, dec_net@31 as dec_net] +06)----------InterleaveExec +07)------------ProjectionExec: expr=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sq_ft@1 as w_warehouse_sq_ft, w_city@2 as w_city, w_county@3 as w_county, w_state@4 as w_state, w_country@5 as w_country, DHL,BARIAN as ship_carriers, d_year@6 as year_, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@7 as jan_sales, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@8 as feb_sales, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@9 as mar_sales, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@10 as apr_sales, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@11 as may_sales, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@12 as jun_sales, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@13 as jul_sales, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@14 as aug_sales, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@15 as sep_sales, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@16 as oct_sales, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@17 as nov_sales, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END)@18 as dec_sales, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@19 as jan_net, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@20 as feb_net, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@21 as mar_net, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@22 as apr_net, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@23 as may_net, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@24 as jun_net, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@25 as jul_net, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@26 as aug_net, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@27 as sep_net, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@28 as oct_net, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@29 as nov_net, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)@30 as dec_net] +08)--------------AggregateExec: mode=FinalPartitioned, gby=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sq_ft@1 as w_warehouse_sq_ft, w_city@2 as w_city, w_county@3 as w_county, w_state@4 as w_state, w_country@5 as w_country, d_year@6 as d_year], aggr=[sum(CASE WHEN __common_expr_2 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_3 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_4 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_5 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_6 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_7 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_8 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_9 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_10 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_11 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_12 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_13 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_2 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_3 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_4 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_5 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_6 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_7 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_8 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_9 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_10 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_11 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_12 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_13 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)], ordering_mode=PartiallySorted([6]) +09)----------------RepartitionExec: partitioning=Hash([w_warehouse_name@0, w_warehouse_sq_ft@1, w_city@2, w_county@3, w_state@4, w_country@5, d_year@6], 4), input_partitions=4 +10)------------------AggregateExec: mode=Partial, gby=[w_warehouse_name@15 as w_warehouse_name, w_warehouse_sq_ft@16 as w_warehouse_sq_ft, w_city@17 as w_city, w_county@18 as w_county, w_state@19 as w_state, w_country@20 as w_country, d_year@21 as d_year], aggr=[sum(CASE WHEN __common_expr_2 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_3 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_4 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_5 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_6 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_7 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_8 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_9 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_10 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_11 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_12 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_13 THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_ext_sales_price * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_2 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_3 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_4 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_5 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_6 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_7 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_8 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_9 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_10 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_11 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_12 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_13 THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN web_sales.ws_net_paid * web_sales.ws_quantity ELSE Int64(0) END)], ordering_mode=PartiallySorted([6]) +11)--------------------ProjectionExec: expr=[d_moy@0 = 1 as __common_expr_2, d_moy@0 = 2 as __common_expr_3, d_moy@0 = 3 as __common_expr_4, d_moy@0 = 4 as __common_expr_5, d_moy@0 = 5 as __common_expr_6, d_moy@0 = 6 as __common_expr_7, d_moy@0 = 7 as __common_expr_8, d_moy@0 = 8 as __common_expr_9, d_moy@0 = 9 as __common_expr_10, d_moy@0 = 10 as __common_expr_11, d_moy@0 = 11 as __common_expr_12, d_moy@0 = 12 as __common_expr_13, ws_quantity@1 as ws_quantity, ws_ext_sales_price@2 as ws_ext_sales_price, ws_net_paid@3 as ws_net_paid, w_warehouse_name@4 as w_warehouse_name, w_warehouse_sq_ft@5 as w_warehouse_sq_ft, w_city@6 as w_city, w_county@7 as w_county, w_state@8 as w_state, w_country@9 as w_country, d_year@10 as d_year] +12)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sm_ship_mode_sk@0, ws_ship_mode_sk@0)], projection=[d_moy@12, ws_quantity@2, ws_ext_sales_price@3, ws_net_paid@4, w_warehouse_name@5, w_warehouse_sq_ft@6, w_city@7, w_county@8, w_state@9, w_country@10, d_year@11] +13)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/ship_mode.vortex]]}, projection=[sm_ship_mode_sk], file_type=vortex, predicate: sm_carrier@4 = DHL OR sm_carrier@4 = BARIAN +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_sold_time_sk@0, t_time_sk@0)], projection=[ws_ship_mode_sk@1, ws_quantity@2, ws_ext_sales_price@3, ws_net_paid@4, w_warehouse_name@5, w_warehouse_sq_ft@6, w_city@7, w_county@8, w_state@9, w_country@10, d_year@11, d_moy@12] +15)--------------------------CoalescePartitionsExec +16)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_sold_time_sk@4, ws_ship_mode_sk@5, ws_quantity@6, ws_ext_sales_price@7, ws_net_paid@8, w_warehouse_name@9, w_warehouse_sq_ft@10, w_city@11, w_county@12, w_state@13, w_country@14, d_year@1, d_moy@2] +17)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 2001 +18)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, ws_warehouse_sk@3)], projection=[ws_sold_date_sk@7, ws_sold_time_sk@8, ws_ship_mode_sk@9, ws_quantity@11, ws_ext_sales_price@12, ws_net_paid@13, w_warehouse_name@1, w_warehouse_sq_ft@2, w_city@3, w_county@4, w_state@5, w_country@6] +19)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country], file_type=vortex +20)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_sold_time_sk, ws_ship_mode_sk, ws_warehouse_sk, ws_quantity, ws_ext_sales_price, ws_net_paid], file_type=vortex +21)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_time@2 >= 30838 AND t_time@2 <= 59638 +23)------------ProjectionExec: expr=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sq_ft@1 as w_warehouse_sq_ft, w_city@2 as w_city, w_county@3 as w_county, w_state@4 as w_state, w_country@5 as w_country, DHL,BARIAN as ship_carriers, d_year@6 as year_, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@7 as jan_sales, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@8 as feb_sales, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@9 as mar_sales, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@10 as apr_sales, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@11 as may_sales, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@12 as jun_sales, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@13 as jul_sales, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@14 as aug_sales, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@15 as sep_sales, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@16 as oct_sales, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@17 as nov_sales, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END)@18 as dec_sales, sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@19 as jan_net, sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@20 as feb_net, sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@21 as mar_net, sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@22 as apr_net, sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@23 as may_net, sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@24 as jun_net, sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@25 as jul_net, sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@26 as aug_net, sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@27 as sep_net, sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@28 as oct_net, sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@29 as nov_net, sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)@30 as dec_net] +24)--------------AggregateExec: mode=FinalPartitioned, gby=[w_warehouse_name@0 as w_warehouse_name, w_warehouse_sq_ft@1 as w_warehouse_sq_ft, w_city@2 as w_city, w_county@3 as w_county, w_state@4 as w_state, w_country@5 as w_country, d_year@6 as d_year], aggr=[sum(CASE WHEN __common_expr_14 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_15 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_16 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_17 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_18 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_19 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_20 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_21 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_22 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_23 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_24 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_25 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_14 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_15 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_16 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_17 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_18 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_19 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_20 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_21 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_22 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_23 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_24 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_25 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)], ordering_mode=PartiallySorted([6]) +25)----------------RepartitionExec: partitioning=Hash([w_warehouse_name@0, w_warehouse_sq_ft@1, w_city@2, w_county@3, w_state@4, w_country@5, d_year@6], 4), input_partitions=4 +26)------------------AggregateExec: mode=Partial, gby=[w_warehouse_name@15 as w_warehouse_name, w_warehouse_sq_ft@16 as w_warehouse_sq_ft, w_city@17 as w_city, w_county@18 as w_county, w_state@19 as w_state, w_country@20 as w_country, d_year@21 as d_year], aggr=[sum(CASE WHEN __common_expr_14 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_15 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_16 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_17 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_18 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_19 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_20 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_21 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_22 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_23 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_24 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_25 THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_sales_price * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_14 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(1) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_15 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(2) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_16 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(3) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_17 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(4) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_18 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(5) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_19 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(6) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_20 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(7) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_21 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(8) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_22 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(9) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_23 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(10) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_24 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(11) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END), sum(CASE WHEN __common_expr_25 THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE 0.00 END) as sum(CASE WHEN date_dim.d_moy = Int64(12) THEN catalog_sales.cs_net_paid_inc_tax * catalog_sales.cs_quantity ELSE Int64(0) END)], ordering_mode=PartiallySorted([6]) +27)--------------------ProjectionExec: expr=[d_moy@0 = 1 as __common_expr_14, d_moy@0 = 2 as __common_expr_15, d_moy@0 = 3 as __common_expr_16, d_moy@0 = 4 as __common_expr_17, d_moy@0 = 5 as __common_expr_18, d_moy@0 = 6 as __common_expr_19, d_moy@0 = 7 as __common_expr_20, d_moy@0 = 8 as __common_expr_21, d_moy@0 = 9 as __common_expr_22, d_moy@0 = 10 as __common_expr_23, d_moy@0 = 11 as __common_expr_24, d_moy@0 = 12 as __common_expr_25, cs_quantity@1 as cs_quantity, cs_sales_price@2 as cs_sales_price, cs_net_paid_inc_tax@3 as cs_net_paid_inc_tax, w_warehouse_name@4 as w_warehouse_name, w_warehouse_sq_ft@5 as w_warehouse_sq_ft, w_city@6 as w_city, w_county@7 as w_county, w_state@8 as w_state, w_country@9 as w_country, d_year@10 as d_year] +28)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sm_ship_mode_sk@0, cs_ship_mode_sk@0)], projection=[d_moy@12, cs_quantity@2, cs_sales_price@3, cs_net_paid_inc_tax@4, w_warehouse_name@5, w_warehouse_sq_ft@6, w_city@7, w_county@8, w_state@9, w_country@10, d_year@11] +29)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/ship_mode.vortex]]}, projection=[sm_ship_mode_sk], file_type=vortex, predicate: sm_carrier@4 = DHL OR sm_carrier@4 = BARIAN +30)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_sold_time_sk@0, t_time_sk@0)], projection=[cs_ship_mode_sk@1, cs_quantity@2, cs_sales_price@3, cs_net_paid_inc_tax@4, w_warehouse_name@5, w_warehouse_sq_ft@6, w_city@7, w_county@8, w_state@9, w_country@10, d_year@11, d_moy@12] +31)--------------------------CoalescePartitionsExec +32)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_sold_time_sk@4, cs_ship_mode_sk@5, cs_quantity@6, cs_sales_price@7, cs_net_paid_inc_tax@8, w_warehouse_name@9, w_warehouse_sq_ft@10, w_city@11, w_county@12, w_state@13, w_country@14, d_year@1, d_moy@2] +33)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy], file_type=vortex, predicate: d_year@6 = 2001 +34)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, cs_warehouse_sk@3)], projection=[cs_sold_date_sk@7, cs_sold_time_sk@8, cs_ship_mode_sk@9, cs_quantity@11, cs_sales_price@12, cs_net_paid_inc_tax@13, w_warehouse_name@1, w_warehouse_sq_ft@2, w_city@3, w_county@4, w_state@5, w_country@6] +35)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_warehouse_name, w_warehouse_sq_ft, w_city, w_county, w_state, w_country], file_type=vortex +36)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_sold_time_sk, cs_ship_mode_sk, cs_warehouse_sk, cs_quantity, cs_sales_price, cs_net_paid_inc_tax], file_type=vortex +37)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +38)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_time@2 >= 30838 AND t_time@2 <= 59638 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q67.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q67.slt.no new file mode 100644 index 00000000000..4732d3adde5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q67.slt.no @@ -0,0 +1,91 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * +FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rank() OVER (PARTITION BY i_category + ORDER BY sumsales DESC) rk + FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + FROM store_sales, + date_dim, + store, + item + WHERE ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + GROUP BY rollup(i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id))dw1) dw2 +WHERE rk <= 100 +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_brand NULLS FIRST, + i_product_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + d_moy NULLS FIRST, + s_store_id NULLS FIRST, + sumsales NULLS FIRST, + rk NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: dw2.i_category ASC NULLS FIRST, dw2.i_class ASC NULLS FIRST, dw2.i_brand ASC NULLS FIRST, dw2.i_product_name ASC NULLS FIRST, dw2.d_year ASC NULLS FIRST, dw2.d_qoy ASC NULLS FIRST, dw2.d_moy ASC NULLS FIRST, dw2.s_store_id ASC NULLS FIRST, dw2.sumsales ASC NULLS FIRST, dw2.rk ASC NULLS FIRST, fetch=100 +02)--SubqueryAlias: dw2 +03)----Projection: dw1.i_category, dw1.i_class, dw1.i_brand, dw1.i_product_name, dw1.d_year, dw1.d_qoy, dw1.d_moy, dw1.s_store_id, dw1.sumsales, rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rk +04)------Filter: rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(100) +05)--------WindowAggr: windowExpr=[[rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +06)----------SubqueryAlias: dw1 +07)------------Projection: item.i_category, item.i_class, item.i_brand, item.i_product_name, date_dim.d_year, date_dim.d_qoy, date_dim.d_moy, store.s_store_id, sum(coalesce(store_sales.ss_sales_price * store_sales.ss_quantity,Int64(0))) AS sumsales +08)--------------Aggregate: groupBy=[[ROLLUP (item.i_category, item.i_class, item.i_brand, item.i_product_name, date_dim.d_year, date_dim.d_qoy, date_dim.d_moy, store.s_store_id)]], aggr=[[sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE Decimal128(0.00,28,2) END) AS sum(coalesce(store_sales.ss_sales_price * store_sales.ss_quantity,Int64(0)))]] +09)----------------Projection: store_sales.ss_sales_price * CAST(store_sales.ss_quantity AS Decimal128(20, 0)) AS __common_expr_1, date_dim.d_year, date_dim.d_moy, date_dim.d_qoy, store.s_store_id, item.i_brand, item.i_class, item.i_category, item.i_product_name +10)------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +11)--------------------Projection: store_sales.ss_item_sk, store_sales.ss_quantity, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy, date_dim.d_qoy, store.s_store_id +12)----------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +13)------------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_quantity, store_sales.ss_sales_price, date_dim.d_year, date_dim.d_moy, date_dim.d_qoy +14)--------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +15)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_quantity, ss_sales_price] +16)----------------------------Projection: date_dim.d_date_sk, date_dim.d_year, date_dim.d_moy, date_dim.d_qoy +17)------------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +18)--------------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq, d_year, d_moy, d_qoy], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +19)------------------------TableScan: store projection=[s_store_sk, s_store_id] +20)--------------------TableScan: item projection=[i_item_sk, i_brand, i_class, i_category, i_product_name] +physical_plan +01)SortPreservingMergeExec: [i_category@0 ASC, i_class@1 ASC, i_brand@2 ASC, i_product_name@3 ASC, d_year@4 ASC, d_qoy@5 ASC, d_moy@6 ASC, s_store_id@7 ASC, sumsales@8 ASC, rk@9 ASC], fetch=100 +02)--ProjectionExec: expr=[i_category@0 as i_category, i_class@1 as i_class, i_brand@2 as i_brand, i_product_name@3 as i_product_name, d_year@4 as d_year, d_qoy@5 as d_qoy, d_moy@6 as d_moy, s_store_id@7 as s_store_id, sumsales@8 as sumsales, rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@9 as rk] +03)----SortExec: TopK(fetch=100), expr=[i_category@0 ASC, i_class@1 ASC, i_brand@2 ASC, i_product_name@3 ASC, d_year@4 ASC, d_qoy@5 ASC, d_moy@6 ASC, s_store_id@7 ASC, sumsales@8 ASC, rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@9 ASC], preserve_partitioning=[true] +04)------FilterExec: rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@9 <= 100 +05)--------BoundedWindowAggExec: wdw=[rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [dw1.i_category] ORDER BY [dw1.sumsales DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +06)----------SortExec: expr=[i_category@0 ASC NULLS LAST, sumsales@8 DESC], preserve_partitioning=[true] +07)------------RepartitionExec: partitioning=Hash([i_category@0], 4), input_partitions=4 +08)--------------ProjectionExec: expr=[i_category@0 as i_category, i_class@1 as i_class, i_brand@2 as i_brand, i_product_name@3 as i_product_name, d_year@4 as d_year, d_qoy@5 as d_qoy, d_moy@6 as d_moy, s_store_id@7 as s_store_id, sum(coalesce(store_sales.ss_sales_price * store_sales.ss_quantity,Int64(0)))@9 as sumsales] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_class@1 as i_class, i_brand@2 as i_brand, i_product_name@3 as i_product_name, d_year@4 as d_year, d_qoy@5 as d_qoy, d_moy@6 as d_moy, s_store_id@7 as s_store_id, __grouping_id@8 as __grouping_id], aggr=[sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE 0.00 END) as sum(coalesce(store_sales.ss_sales_price * store_sales.ss_quantity,Int64(0)))] +10)------------------RepartitionExec: partitioning=Hash([i_category@0, i_class@1, i_brand@2, i_product_name@3, d_year@4, d_qoy@5, d_moy@6, s_store_id@7, __grouping_id@8], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[(NULL as i_category, NULL as i_class, NULL as i_brand, NULL as i_product_name, NULL as d_year, NULL as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, NULL as i_class, NULL as i_brand, NULL as i_product_name, NULL as d_year, NULL as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, NULL as i_brand, NULL as i_product_name, NULL as d_year, NULL as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, i_brand@5 as i_brand, NULL as i_product_name, NULL as d_year, NULL as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, i_brand@5 as i_brand, i_product_name@8 as i_product_name, NULL as d_year, NULL as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, i_brand@5 as i_brand, i_product_name@8 as i_product_name, d_year@1 as d_year, NULL as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, i_brand@5 as i_brand, i_product_name@8 as i_product_name, d_year@1 as d_year, d_qoy@3 as d_qoy, NULL as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, i_brand@5 as i_brand, i_product_name@8 as i_product_name, d_year@1 as d_year, d_qoy@3 as d_qoy, d_moy@2 as d_moy, NULL as s_store_id), (i_category@7 as i_category, i_class@6 as i_class, i_brand@5 as i_brand, i_product_name@8 as i_product_name, d_year@1 as d_year, d_qoy@3 as d_qoy, d_moy@2 as d_moy, s_store_id@4 as s_store_id)], aggr=[sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE 0.00 END) as sum(coalesce(store_sales.ss_sales_price * store_sales.ss_quantity,Int64(0)))] +12)----------------------ProjectionExec: expr=[ss_sales_price@0 * CAST(ss_quantity@1 AS Decimal128(20, 0)) as __common_expr_1, d_year@2 as d_year, d_moy@3 as d_moy, d_qoy@4 as d_qoy, s_store_id@5 as s_store_id, i_brand@6 as i_brand, i_class@7 as i_class, i_category@8 as i_category, i_product_name@9 as i_product_name] +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_sales_price@7, ss_quantity@6, d_year@8, d_moy@9, d_qoy@10, s_store_id@11, i_brand@1, i_class@2, i_category@3, i_product_name@4] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_class, i_category, i_product_name], file_type=vortex +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@2, ss_quantity@4, ss_sales_price@5, d_year@6, d_moy@7, d_qoy@8, s_store_id@1] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id], file_type=vortex +17)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@5, ss_store_sk@6, ss_quantity@7, ss_sales_price@8, d_year@1, d_moy@2, d_qoy@3] +18)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_moy, d_qoy], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +19)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_quantity, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q68.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q68.slt.no new file mode 100644 index 00000000000..3214f282971 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q68.slt.no @@ -0,0 +1,101 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_ext_sales_price) extended_price, + sum(ss_ext_list_price) list_price, + sum(ss_ext_tax) extended_tax + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: customer.c_last_name ASC NULLS FIRST, dn.ss_ticket_number ASC NULLS FIRST, fetch=100 +02)--Projection: customer.c_last_name, customer.c_first_name, current_addr.ca_city, dn.bought_city, dn.ss_ticket_number, dn.extended_price, dn.extended_tax, dn.list_price +03)----Inner Join: customer.c_current_addr_sk = current_addr.ca_address_sk Filter: dn.bought_city != current_addr.ca_city +04)------Projection: dn.ss_ticket_number, dn.bought_city, dn.extended_price, dn.list_price, dn.extended_tax, customer.c_current_addr_sk, customer.c_first_name, customer.c_last_name +05)--------Inner Join: dn.ss_customer_sk = customer.c_customer_sk +06)----------SubqueryAlias: dn +07)------------Projection: store_sales.ss_ticket_number, store_sales.ss_customer_sk, customer_address.ca_city AS bought_city, sum(store_sales.ss_ext_sales_price) AS extended_price, sum(store_sales.ss_ext_list_price) AS list_price, sum(store_sales.ss_ext_tax) AS extended_tax +08)--------------Aggregate: groupBy=[[store_sales.ss_ticket_number, store_sales.ss_customer_sk, store_sales.ss_addr_sk, customer_address.ca_city]], aggr=[[sum(store_sales.ss_ext_sales_price), sum(store_sales.ss_ext_list_price), sum(store_sales.ss_ext_tax)]] +09)----------------Projection: store_sales.ss_customer_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_ext_sales_price, store_sales.ss_ext_list_price, store_sales.ss_ext_tax, customer_address.ca_city +10)------------------Inner Join: store_sales.ss_addr_sk = customer_address.ca_address_sk +11)--------------------Projection: store_sales.ss_customer_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_ext_sales_price, store_sales.ss_ext_list_price, store_sales.ss_ext_tax +12)----------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +13)------------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_ext_sales_price, store_sales.ss_ext_list_price, store_sales.ss_ext_tax +14)--------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +15)----------------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_ticket_number, store_sales.ss_ext_sales_price, store_sales.ss_ext_list_price, store_sales.ss_ext_tax +16)------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +17)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_ticket_number, ss_ext_sales_price, ss_ext_list_price, ss_ext_tax] +18)--------------------------------Projection: date_dim.d_date_sk +19)----------------------------------Filter: date_dim.d_dom >= Int64(1) AND date_dim.d_dom <= Int64(2) AND (date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)) +20)------------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_dom], partial_filters=[date_dim.d_dom >= Int64(1), date_dim.d_dom <= Int64(2), date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)] +21)----------------------------Projection: store.s_store_sk +22)------------------------------Filter: store.s_city = Utf8View("Fairview") OR store.s_city = Utf8View("Midway") +23)--------------------------------TableScan: store projection=[s_store_sk, s_city], partial_filters=[store.s_city = Utf8View("Fairview") OR store.s_city = Utf8View("Midway")] +24)------------------------Projection: household_demographics.hd_demo_sk +25)--------------------------Filter: household_demographics.hd_dep_count = Int64(4) OR household_demographics.hd_vehicle_count = Int32(3) +26)----------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) OR household_demographics.hd_vehicle_count = Int32(3)] +27)--------------------TableScan: customer_address projection=[ca_address_sk, ca_city] +28)----------TableScan: customer projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name] +29)------SubqueryAlias: current_addr +30)--------TableScan: customer_address projection=[ca_address_sk, ca_city] +physical_plan +01)SortPreservingMergeExec: [c_last_name@0 ASC, ss_ticket_number@4 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_last_name@0 ASC, ss_ticket_number@4 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@5)], filter=bought_city@0 != ca_city@1, projection=[c_last_name@9, c_first_name@8, ca_city@1, bought_city@3, ss_ticket_number@2, extended_price@4, extended_tax@6, list_price@5] +04)------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_city], file_type=vortex +05)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[ss_ticket_number@4, bought_city@6, extended_price@7, list_price@8, extended_tax@9, c_current_addr_sk@1, c_first_name@2, c_last_name@3] +06)--------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_addr_sk, c_first_name, c_last_name], file_type=vortex +07)--------ProjectionExec: expr=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, ca_city@3 as bought_city, sum(store_sales.ss_ext_sales_price)@4 as extended_price, sum(store_sales.ss_ext_list_price)@5 as list_price, sum(store_sales.ss_ext_tax)@6 as extended_tax] +08)----------AggregateExec: mode=FinalPartitioned, gby=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, ss_addr_sk@2 as ss_addr_sk, ca_city@3 as ca_city], aggr=[sum(store_sales.ss_ext_sales_price), sum(store_sales.ss_ext_list_price), sum(store_sales.ss_ext_tax)] +09)------------RepartitionExec: partitioning=Hash([ss_ticket_number@0, ss_customer_sk@1, ss_addr_sk@2, ca_city@3], 4), input_partitions=4 +10)--------------AggregateExec: mode=Partial, gby=[ss_ticket_number@2 as ss_ticket_number, ss_customer_sk@0 as ss_customer_sk, ss_addr_sk@1 as ss_addr_sk, ca_city@6 as ca_city], aggr=[sum(store_sales.ss_ext_sales_price), sum(store_sales.ss_ext_list_price), sum(store_sales.ss_ext_tax)] +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ss_addr_sk@1)], projection=[ss_customer_sk@2, ss_addr_sk@3, ss_ticket_number@4, ss_ext_sales_price@5, ss_ext_list_price@6, ss_ext_tax@7, ca_city@1] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_city], file_type=vortex +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_customer_sk@1, ss_addr_sk@3, ss_ticket_number@4, ss_ext_sales_price@5, ss_ext_list_price@6, ss_ext_tax@7] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 OR hd_vehicle_count@4 = 3 +15)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[ss_customer_sk@1, ss_hdemo_sk@2, ss_addr_sk@3, ss_ticket_number@5, ss_ext_sales_price@6, ss_ext_list_price@7, ss_ext_tax@8] +16)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_city@22 = Fairview OR s_city@22 = Midway +17)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@2, ss_hdemo_sk@3, ss_addr_sk@4, ss_store_sk@5, ss_ticket_number@6, ss_ext_sales_price@7, ss_ext_list_price@8, ss_ext_tax@9] +18)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_dom@9 >= 1 AND d_dom@9 <= 2 AND (d_year@6 = 1999 OR d_year@6 = 2000 OR d_year@6 = 2001) +19)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_ticket_number, ss_ext_sales_price, ss_ext_list_price, ss_ext_tax], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q69.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q69.slt.no new file mode 100644 index 00000000000..dc5871a7c54 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q69.slt.no @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ('KY', + 'GA', + 'NM') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND (NOT EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND NOT EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +LIMIT 100; +---- +logical_plan +01)Sort: customer_demographics.cd_gender ASC NULLS LAST, customer_demographics.cd_marital_status ASC NULLS LAST, customer_demographics.cd_education_status ASC NULLS LAST, customer_demographics.cd_purchase_estimate ASC NULLS LAST, customer_demographics.cd_credit_rating ASC NULLS LAST, fetch=100 +02)--Projection: customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, count(Int64(1)) AS count(*) AS cnt1, customer_demographics.cd_purchase_estimate, count(Int64(1)) AS count(*) AS cnt2, customer_demographics.cd_credit_rating, count(Int64(1)) AS count(*) AS cnt3 +03)----Aggregate: groupBy=[[customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating]], aggr=[[count(Int64(1))]] +04)------Projection: customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating +05)--------LeftAnti Join: c.c_customer_sk = __correlated_sq_3.cs_ship_customer_sk +06)----------LeftAnti Join: c.c_customer_sk = __correlated_sq_2.ws_bill_customer_sk +07)------------LeftSemi Join: c.c_customer_sk = __correlated_sq_1.ss_customer_sk +08)--------------Projection: c.c_customer_sk, customer_demographics.cd_gender, customer_demographics.cd_marital_status, customer_demographics.cd_education_status, customer_demographics.cd_purchase_estimate, customer_demographics.cd_credit_rating +09)----------------Inner Join: c.c_current_cdemo_sk = customer_demographics.cd_demo_sk +10)------------------Projection: c.c_customer_sk, c.c_current_cdemo_sk +11)--------------------Inner Join: c.c_current_addr_sk = ca.ca_address_sk +12)----------------------SubqueryAlias: c +13)------------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk] +14)----------------------SubqueryAlias: ca +15)------------------------Projection: customer_address.ca_address_sk +16)--------------------------Filter: customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("GA") OR customer_address.ca_state = Utf8View("NM") +17)----------------------------TableScan: customer_address projection=[ca_address_sk, ca_state], partial_filters=[customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("GA") OR customer_address.ca_state = Utf8View("NM")] +18)------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status, cd_purchase_estimate, cd_credit_rating] +19)--------------SubqueryAlias: __correlated_sq_1 +20)----------------Projection: store_sales.ss_customer_sk +21)------------------LeftSemi Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +22)--------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk] +23)--------------------Projection: date_dim.d_date_sk +24)----------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy >= Int64(4) AND date_dim.d_moy <= Int64(6) +25)------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy >= Int64(4), date_dim.d_moy <= Int64(6)] +26)------------SubqueryAlias: __correlated_sq_2 +27)--------------Projection: web_sales.ws_bill_customer_sk +28)----------------LeftSemi Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +29)------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk] +30)------------------Projection: date_dim.d_date_sk +31)--------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy >= Int64(4) AND date_dim.d_moy <= Int64(6) +32)----------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy >= Int64(4), date_dim.d_moy <= Int64(6)] +33)----------SubqueryAlias: __correlated_sq_3 +34)------------Projection: catalog_sales.cs_ship_customer_sk +35)--------------LeftSemi Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +36)----------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ship_customer_sk] +37)----------------Projection: date_dim.d_date_sk +38)------------------Filter: date_dim.d_year = Int64(2001) AND date_dim.d_moy >= Int64(4) AND date_dim.d_moy <= Int64(6) +39)--------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(2001), date_dim.d_moy >= Int64(4), date_dim.d_moy <= Int64(6)] +physical_plan +01)SortPreservingMergeExec: [cd_gender@0 ASC NULLS LAST, cd_marital_status@1 ASC NULLS LAST, cd_education_status@2 ASC NULLS LAST, cd_purchase_estimate@4 ASC NULLS LAST, cd_credit_rating@6 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[cd_gender@0 as cd_gender, cd_marital_status@1 as cd_marital_status, cd_education_status@2 as cd_education_status, count(Int64(1))@5 as cnt1, cd_purchase_estimate@3 as cd_purchase_estimate, count(Int64(1))@5 as cnt2, cd_credit_rating@4 as cd_credit_rating, count(Int64(1))@5 as cnt3] +03)----SortExec: TopK(fetch=100), expr=[cd_gender@0 ASC NULLS LAST, cd_marital_status@1 ASC NULLS LAST, cd_education_status@2 ASC NULLS LAST, cd_purchase_estimate@3 ASC NULLS LAST, cd_credit_rating@4 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[cd_gender@0 as cd_gender, cd_marital_status@1 as cd_marital_status, cd_education_status@2 as cd_education_status, cd_purchase_estimate@3 as cd_purchase_estimate, cd_credit_rating@4 as cd_credit_rating], aggr=[count(Int64(1))] +05)--------RepartitionExec: partitioning=Hash([cd_gender@0, cd_marital_status@1, cd_education_status@2, cd_purchase_estimate@3, cd_credit_rating@4], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[cd_gender@0 as cd_gender, cd_marital_status@1 as cd_marital_status, cd_education_status@2 as cd_education_status, cd_purchase_estimate@3 as cd_purchase_estimate, cd_credit_rating@4 as cd_credit_rating], aggr=[count(Int64(1))] +07)------------HashJoinExec: mode=CollectLeft, join_type=LeftAnti, on=[(c_customer_sk@0, cs_ship_customer_sk@0)], projection=[cd_gender@1, cd_marital_status@2, cd_education_status@3, cd_purchase_estimate@4, cd_credit_rating@5] +08)--------------CoalescePartitionsExec +09)----------------HashJoinExec: mode=CollectLeft, join_type=LeftAnti, on=[(c_customer_sk@0, ws_bill_customer_sk@0)] +10)------------------CoalescePartitionsExec +11)--------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(c_customer_sk@0, ss_customer_sk@0)] +12)----------------------CoalescePartitionsExec +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@1, cd_demo_sk@0)], projection=[c_customer_sk@0, cd_gender@3, cd_marital_status@4, cd_education_status@5, cd_purchase_estimate@6, cd_credit_rating@7] +14)--------------------------CoalescePartitionsExec +15)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@2)], projection=[c_customer_sk@1, c_current_cdemo_sk@2] +16)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_state@8 = KY OR ca_state@8 = GA OR ca_state@8 = NM +17)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +18)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_addr_sk], file_type=vortex +19)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +20)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status, cd_purchase_estimate, cd_credit_rating], file_type=vortex +21)----------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@1] +22)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 >= 4 AND d_moy@8 <= 6 +23)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk], file_type=vortex +24)------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_customer_sk@1] +25)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 >= 4 AND d_moy@8 <= 6 +26)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk], file_type=vortex +27)--------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ship_customer_sk@1] +28)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2001 AND d_moy@8 >= 4 AND d_moy@8 <= 6 +29)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_ship_customer_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q7.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q7.slt.no new file mode 100644 index 00000000000..8022e2be4a5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q7.slt.no @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS LAST, fetch=100 +02)--Projection: item.i_item_id, avg(store_sales.ss_quantity) AS agg1, avg(store_sales.ss_list_price) AS agg2, avg(store_sales.ss_coupon_amt) AS agg3, avg(store_sales.ss_sales_price) AS agg4 +03)----Aggregate: groupBy=[[item.i_item_id]], aggr=[[avg(CAST(store_sales.ss_quantity AS Float64)), avg(store_sales.ss_list_price), avg(store_sales.ss_coupon_amt), avg(store_sales.ss_sales_price)]] +04)------Projection: store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt, item.i_item_id +05)--------Inner Join: store_sales.ss_promo_sk = promotion.p_promo_sk +06)----------Projection: store_sales.ss_promo_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt, item.i_item_id +07)------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +08)--------------Projection: store_sales.ss_item_sk, store_sales.ss_promo_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +09)----------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +10)------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_promo_sk, store_sales.ss_quantity, store_sales.ss_list_price, store_sales.ss_sales_price, store_sales.ss_coupon_amt +11)--------------------Inner Join: store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk +12)----------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_promo_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt] +13)----------------------Projection: customer_demographics.cd_demo_sk +14)------------------------Filter: customer_demographics.cd_gender = Utf8View("M") AND customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") +15)--------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_gender, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_gender = Utf8View("M"), customer_demographics.cd_marital_status = Utf8View("S"), customer_demographics.cd_education_status = Utf8View("College")] +16)------------------Projection: date_dim.d_date_sk +17)--------------------Filter: date_dim.d_year = Int64(2000) +18)----------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +19)--------------TableScan: item projection=[i_item_sk, i_item_id] +20)----------Projection: promotion.p_promo_sk +21)------------Filter: promotion.p_channel_email = Utf8View("N") OR promotion.p_channel_event = Utf8View("N") +22)--------------TableScan: promotion projection=[p_promo_sk, p_channel_email, p_channel_event], partial_filters=[promotion.p_channel_email = Utf8View("N") OR promotion.p_channel_event = Utf8View("N")] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST], fetch=100 +02)--ProjectionExec: expr=[i_item_id@0 as i_item_id, avg(store_sales.ss_quantity)@1 as agg1, avg(store_sales.ss_list_price)@2 as agg2, avg(store_sales.ss_coupon_amt)@3 as agg3, avg(store_sales.ss_sales_price)@4 as agg4] +03)----SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[avg(store_sales.ss_quantity), avg(store_sales.ss_list_price), avg(store_sales.ss_coupon_amt), avg(store_sales.ss_sales_price)] +05)--------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_item_id@4 as i_item_id], aggr=[avg(store_sales.ss_quantity), avg(store_sales.ss_list_price), avg(store_sales.ss_coupon_amt), avg(store_sales.ss_sales_price)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, ss_promo_sk@0)], projection=[ss_quantity@2, ss_list_price@3, ss_sales_price@4, ss_coupon_amt@5, i_item_id@6] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex, predicate: p_channel_email@9 = N OR p_channel_event@14 = N +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_promo_sk@3, ss_quantity@4, ss_list_price@5, ss_sales_price@6, ss_coupon_amt@7, i_item_id@1] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_promo_sk@3, ss_quantity@4, ss_list_price@5, ss_sales_price@6, ss_coupon_amt@7] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, ss_cdemo_sk@2)], projection=[ss_sold_date_sk@1, ss_item_sk@2, ss_promo_sk@4, ss_quantity@5, ss_list_price@6, ss_sales_price@7, ss_coupon_amt@8] +14)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex, predicate: cd_gender@1 = M AND cd_marital_status@2 = S AND cd_education_status@3 = College +15)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_cdemo_sk, ss_promo_sk, ss_quantity, ss_list_price, ss_sales_price, ss_coupon_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q70.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q70.slt.no new file mode 100644 index 00000000000..6000b9b4432 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q70.slt.no @@ -0,0 +1,105 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT sum(ss_net_profit) AS total_sum, + s_state, + s_county, + grouping(s_state)+grouping(s_county) AS lochierarchy, + rank() OVER (PARTITION BY grouping(s_state)+grouping(s_county), + CASE + WHEN grouping(s_county) = 0 THEN s_state + END + ORDER BY sum(ss_net_profit) DESC) AS rank_within_parent +FROM store_sales, + date_dim d1, + store +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN + (SELECT s_state + FROM + (SELECT s_state AS s_state, + rank() OVER (PARTITION BY s_state + ORDER BY sum(ss_net_profit) DESC) AS ranking + FROM store_sales, + store, + date_dim + WHERE d_month_seq BETWEEN 1200 AND 1200+11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5 ) +GROUP BY rollup(s_state,s_county) +ORDER BY lochierarchy DESC , + CASE + WHEN grouping(s_state)+grouping(s_county) = 0 THEN s_state + END , + rank_within_parent +LIMIT 100; +---- +logical_plan +01)Sort: lochierarchy DESC NULLS FIRST, CASE WHEN lochierarchy = Int32(0) THEN store.s_state END AS CASE WHEN lochierarchy = Int64(0) THEN store.s_state END ASC NULLS LAST, rank_within_parent ASC NULLS LAST, fetch=100 +02)--Projection: sum(store_sales.ss_net_profit) AS total_sum, store.s_state, store.s_county, grouping(store.s_state) + grouping(store.s_county) AS lochierarchy, rank() PARTITION BY [grouping(store.s_state) + grouping(store.s_county), CASE WHEN grouping(store.s_county) = Int64(0) THEN store.s_state END] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rank_within_parent +03)----WindowAggr: windowExpr=[[rank() PARTITION BY [grouping(store.s_state) + grouping(store.s_county), CASE WHEN grouping(store.s_county) = Int32(0) THEN store.s_state END] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rank() PARTITION BY [grouping(store.s_state) + grouping(store.s_county), CASE WHEN grouping(store.s_county) = Int64(0) THEN store.s_state END] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +04)------Projection: store.s_state, store.s_county, sum(store_sales.ss_net_profit), CAST(__grouping_id & UInt8(2) >> UInt8(1) AS Int32) AS grouping(store.s_state), CAST(__grouping_id & UInt8(1) AS Int32) AS grouping(store.s_county) +05)--------Aggregate: groupBy=[[ROLLUP (store.s_state, store.s_county)]], aggr=[[sum(store_sales.ss_net_profit)]] +06)----------LeftSemi Join: store.s_state = __correlated_sq_1.s_state +07)------------Projection: store_sales.ss_net_profit, store.s_county, store.s_state +08)--------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +09)----------------Projection: store_sales.ss_store_sk, store_sales.ss_net_profit +10)------------------Inner Join: store_sales.ss_sold_date_sk = d1.d_date_sk +11)--------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_net_profit] +12)--------------------SubqueryAlias: d1 +13)----------------------Projection: date_dim.d_date_sk +14)------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +15)--------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +16)----------------TableScan: store projection=[s_store_sk, s_county, s_state] +17)------------SubqueryAlias: __correlated_sq_1 +18)--------------SubqueryAlias: tmp1 +19)----------------Projection: store.s_state +20)------------------Filter: rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW <= UInt64(5) +21)--------------------Projection: store.s_state, rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW +22)----------------------WindowAggr: windowExpr=[[rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +23)------------------------Aggregate: groupBy=[[store.s_state]], aggr=[[sum(store_sales.ss_net_profit)]] +24)--------------------------Projection: store_sales.ss_net_profit, store.s_state +25)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +26)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_net_profit, store.s_state +27)--------------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +28)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_net_profit] +29)----------------------------------TableScan: store projection=[s_store_sk, s_state] +30)------------------------------Projection: date_dim.d_date_sk +31)--------------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +32)----------------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +physical_plan +01)SortPreservingMergeExec: [lochierarchy@3 DESC, CASE WHEN lochierarchy@3 = 0 THEN s_state@1 END ASC NULLS LAST, rank_within_parent@4 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[lochierarchy@3 DESC, CASE WHEN lochierarchy@3 = 0 THEN s_state@1 END ASC NULLS LAST, rank_within_parent@4 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[sum(store_sales.ss_net_profit)@2 as total_sum, s_state@0 as s_state, s_county@1 as s_county, grouping(store.s_state)@3 + grouping(store.s_county)@4 as lochierarchy, rank() PARTITION BY [grouping(store.s_state) + grouping(store.s_county), CASE WHEN grouping(store.s_county) = Int64(0) THEN store.s_state END] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@5 as rank_within_parent] +04)------BoundedWindowAggExec: wdw=[rank() PARTITION BY [grouping(store.s_state) + grouping(store.s_county), CASE WHEN grouping(store.s_county) = Int64(0) THEN store.s_state END] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [grouping(store.s_state) + grouping(store.s_county), CASE WHEN grouping(store.s_county) = Int64(0) THEN store.s_state END] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +05)--------SortExec: expr=[grouping(store.s_state)@3 + grouping(store.s_county)@4 ASC NULLS LAST, CASE WHEN grouping(store.s_county)@4 = 0 THEN s_state@0 END ASC NULLS LAST, sum(store_sales.ss_net_profit)@2 DESC], preserve_partitioning=[true] +06)----------RepartitionExec: partitioning=Hash([grouping(store.s_state)@3 + grouping(store.s_county)@4, CASE WHEN grouping(store.s_county)@4 = 0 THEN s_state@0 END], 4), input_partitions=4 +07)------------ProjectionExec: expr=[s_state@0 as s_state, s_county@1 as s_county, sum(store_sales.ss_net_profit)@3 as sum(store_sales.ss_net_profit), CAST(__grouping_id@2 & 2 >> 1 AS Int32) as grouping(store.s_state), CAST(__grouping_id@2 & 1 AS Int32) as grouping(store.s_county)] +08)--------------AggregateExec: mode=FinalPartitioned, gby=[s_state@0 as s_state, s_county@1 as s_county, __grouping_id@2 as __grouping_id], aggr=[sum(store_sales.ss_net_profit)] +09)----------------RepartitionExec: partitioning=Hash([s_state@0, s_county@1, __grouping_id@2], 4), input_partitions=4 +10)------------------AggregateExec: mode=Partial, gby=[(NULL as s_state, NULL as s_county), (s_state@2 as s_state, NULL as s_county), (s_state@2 as s_state, s_county@1 as s_county)], aggr=[sum(store_sales.ss_net_profit)] +11)--------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(s_state@2, s_state@0)] +12)----------------------CoalescePartitionsExec +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[ss_net_profit@4, s_county@1, s_state@2] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_county, s_state], file_type=vortex +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_store_sk@2, ss_net_profit@3] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_net_profit], file_type=vortex +18)----------------------FilterExec: rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@1 <= 5, projection=[s_state@0] +19)------------------------ProjectionExec: expr=[s_state@0 as s_state, rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@2 as rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW] +20)--------------------------BoundedWindowAggExec: wdw=[rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [store.s_state] ORDER BY [sum(store_sales.ss_net_profit) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +21)----------------------------SortExec: expr=[s_state@0 ASC NULLS LAST, sum(store_sales.ss_net_profit)@1 DESC], preserve_partitioning=[true] +22)------------------------------AggregateExec: mode=FinalPartitioned, gby=[s_state@0 as s_state], aggr=[sum(store_sales.ss_net_profit)] +23)--------------------------------RepartitionExec: partitioning=Hash([s_state@0], 4), input_partitions=4 +24)----------------------------------AggregateExec: mode=Partial, gby=[s_state@1 as s_state], aggr=[sum(store_sales.ss_net_profit)] +25)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_net_profit@2, s_state@3] +26)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +27)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_sold_date_sk@2, ss_net_profit@4, s_state@1] +28)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_state], file_type=vortex +29)----------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q71.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q71.slt.no new file mode 100644 index 00000000000..486b9272d07 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q71.slt.no @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + sum(ext_price) ext_price +FROM item, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, + date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, + date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy=11 + AND d_year=1999 ) tmp, + time_dim +WHERE sold_item_sk = i_item_sk + AND i_manager_id=1 + AND time_sk = t_time_sk + AND (t_meal_time = 'breakfast' + OR t_meal_time = 'dinner') +GROUP BY i_brand, + i_brand_id, + t_hour, + t_minute +ORDER BY ext_price DESC NULLS FIRST, + i_brand_id NULLS FIRST, + t_hour NULLS FIRST; +---- +logical_plan +01)Sort: ext_price DESC NULLS FIRST, brand_id ASC NULLS FIRST, time_dim.t_hour ASC NULLS FIRST +02)--Projection: item.i_brand_id AS brand_id, item.i_brand AS brand, time_dim.t_hour, time_dim.t_minute, sum(tmp.ext_price) AS ext_price +03)----Aggregate: groupBy=[[item.i_brand, item.i_brand_id, time_dim.t_hour, time_dim.t_minute]], aggr=[[sum(tmp.ext_price)]] +04)------Projection: item.i_brand_id, item.i_brand, tmp.ext_price, time_dim.t_hour, time_dim.t_minute +05)--------Inner Join: tmp.time_sk = time_dim.t_time_sk +06)----------Projection: item.i_brand_id, item.i_brand, tmp.ext_price, tmp.time_sk +07)------------Inner Join: item.i_item_sk = tmp.sold_item_sk +08)--------------Projection: item.i_item_sk, item.i_brand_id, item.i_brand +09)----------------Filter: item.i_manager_id = Int64(1) +10)------------------TableScan: item projection=[i_item_sk, i_brand_id, i_brand, i_manager_id], partial_filters=[item.i_manager_id = Int64(1)] +11)--------------SubqueryAlias: tmp +12)----------------Union +13)------------------Projection: web_sales.ws_ext_sales_price AS ext_price, web_sales.ws_item_sk AS sold_item_sk, web_sales.ws_sold_time_sk AS time_sk +14)--------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +15)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_sold_time_sk, ws_item_sk, ws_ext_sales_price] +16)----------------------Projection: date_dim.d_date_sk +17)------------------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(1999) +18)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(1999)] +19)------------------Projection: catalog_sales.cs_ext_sales_price AS ext_price, catalog_sales.cs_item_sk AS sold_item_sk, catalog_sales.cs_sold_time_sk AS time_sk +20)--------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +21)----------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_sold_time_sk, cs_item_sk, cs_ext_sales_price] +22)----------------------Projection: date_dim.d_date_sk +23)------------------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(1999) +24)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(1999)] +25)------------------Projection: store_sales.ss_ext_sales_price AS ext_price, store_sales.ss_item_sk AS sold_item_sk, store_sales.ss_sold_time_sk AS time_sk +26)--------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +27)----------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_sold_time_sk, ss_item_sk, ss_ext_sales_price] +28)----------------------Projection: date_dim.d_date_sk +29)------------------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(1999) +30)--------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(1999)] +31)----------Projection: time_dim.t_time_sk, time_dim.t_hour, time_dim.t_minute +32)------------Filter: time_dim.t_meal_time = Utf8View("breakfast") OR time_dim.t_meal_time = Utf8View("dinner") +33)--------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute, t_meal_time], partial_filters=[time_dim.t_meal_time = Utf8View("breakfast") OR time_dim.t_meal_time = Utf8View("dinner")] +physical_plan +01)SortPreservingMergeExec: [ext_price@4 DESC, brand_id@0 ASC, t_hour@2 ASC] +02)--ProjectionExec: expr=[i_brand_id@1 as brand_id, i_brand@0 as brand, t_hour@2 as t_hour, t_minute@3 as t_minute, sum(tmp.ext_price)@4 as ext_price] +03)----SortExec: expr=[sum(tmp.ext_price)@4 DESC, i_brand_id@1 ASC, t_hour@2 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_brand@0 as i_brand, i_brand_id@1 as i_brand_id, t_hour@2 as t_hour, t_minute@3 as t_minute], aggr=[sum(tmp.ext_price)] +05)--------RepartitionExec: partitioning=Hash([i_brand@0, i_brand_id@1, t_hour@2, t_minute@3], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_brand@1 as i_brand, i_brand_id@0 as i_brand_id, t_hour@3 as t_hour, t_minute@4 as t_minute], aggr=[sum(tmp.ext_price)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(time_sk@3, t_time_sk@0)], projection=[i_brand_id@0, i_brand@1, ext_price@2, t_hour@5, t_minute@6] +08)--------------CoalescePartitionsExec +09)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, sold_item_sk@1)], projection=[i_brand_id@1, i_brand@2, ext_price@3, time_sk@5] +10)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_brand], file_type=vortex, predicate: i_manager_id@20 = 1 +11)------------------UnionExec +12)--------------------ProjectionExec: expr=[ws_ext_sales_price@0 as ext_price, ws_item_sk@1 as sold_item_sk, ws_sold_time_sk@2 as time_sk] +13)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_ext_sales_price@4, ws_item_sk@3, ws_sold_time_sk@2] +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 1999 +15)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_sold_time_sk, ws_item_sk, ws_ext_sales_price], file_type=vortex +16)--------------------ProjectionExec: expr=[cs_ext_sales_price@0 as ext_price, cs_item_sk@1 as sold_item_sk, cs_sold_time_sk@2 as time_sk] +17)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ext_sales_price@4, cs_item_sk@3, cs_sold_time_sk@2] +18)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 1999 +19)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_sold_time_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex +20)--------------------ProjectionExec: expr=[ss_ext_sales_price@0 as ext_price, ss_item_sk@1 as sold_item_sk, ss_sold_time_sk@2 as time_sk] +21)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_ext_sales_price@4, ss_item_sk@3, ss_sold_time_sk@2] +22)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 1999 +23)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_sold_time_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex +24)--------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +25)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk, t_hour, t_minute], file_type=vortex, predicate: t_meal_time@9 = breakfast OR t_meal_time@9 = dinner diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q72.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q72.slt.no new file mode 100644 index 00000000000..7516f48e8f1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q72.slt.no @@ -0,0 +1,120 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_desc, + w_warehouse_name, + d1.d_week_seq, + sum(CASE + WHEN p_promo_sk IS NULL THEN 1 + ELSE 0 + END) no_promo, + sum(CASE + WHEN p_promo_sk IS NOT NULL THEN 1 + ELSE 0 + END) promo, + count(*) total_cnt +FROM catalog_sales +JOIN inventory ON (cs_item_sk = inv_item_sk) +JOIN warehouse ON (w_warehouse_sk=inv_warehouse_sk) +JOIN item ON (i_item_sk = cs_item_sk) +JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk) +JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk) +JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk) +JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk) +JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk) +LEFT OUTER JOIN promotion ON (cs_promo_sk=p_promo_sk) +LEFT OUTER JOIN catalog_returns ON (cr_item_sk = cs_item_sk + AND cr_order_number = cs_order_number) +WHERE d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > (d1.d_date + INTERVAL '5' DAY) + AND hd_buy_potential = '>10000' + AND d1.d_year = 1999 + AND cd_marital_status = 'D' +GROUP BY i_item_desc, + w_warehouse_name, + d1.d_week_seq +ORDER BY total_cnt DESC NULLS FIRST, + i_item_desc NULLS FIRST, + w_warehouse_name NULLS FIRST, + d1.d_week_seq NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: total_cnt DESC NULLS FIRST, item.i_item_desc ASC NULLS FIRST, warehouse.w_warehouse_name ASC NULLS FIRST, d1.d_week_seq ASC NULLS FIRST, fetch=100 +02)--Projection: item.i_item_desc, warehouse.w_warehouse_name, d1.d_week_seq, sum(CASE WHEN promotion.p_promo_sk IS NULL THEN Int64(1) ELSE Int64(0) END) AS no_promo, sum(CASE WHEN promotion.p_promo_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END) AS promo, count(Int64(1)) AS count(*) AS total_cnt +03)----Aggregate: groupBy=[[item.i_item_desc, warehouse.w_warehouse_name, d1.d_week_seq]], aggr=[[sum(CASE WHEN promotion.p_promo_sk IS NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN promotion.p_promo_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END), count(Int64(1))]] +04)------Projection: warehouse.w_warehouse_name, item.i_item_desc, d1.d_week_seq, promotion.p_promo_sk +05)--------Left Join: catalog_sales.cs_item_sk = catalog_returns.cr_item_sk, catalog_sales.cs_order_number = catalog_returns.cr_order_number +06)----------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_order_number, warehouse.w_warehouse_name, item.i_item_desc, d1.d_week_seq, promotion.p_promo_sk +07)------------Left Join: catalog_sales.cs_promo_sk = promotion.p_promo_sk +08)--------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, warehouse.w_warehouse_name, item.i_item_desc, d1.d_week_seq +09)----------------Inner Join: catalog_sales.cs_ship_date_sk = d3.d_date_sk Filter: d3.d_date > d1.d_date + IntervalMonthDayNano("IntervalMonthDayNano { months: 0, days: 5, nanoseconds: 0 }") +10)------------------Projection: catalog_sales.cs_ship_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, warehouse.w_warehouse_name, item.i_item_desc, d1.d_date, d1.d_week_seq +11)--------------------Inner Join: inventory.inv_date_sk = d2.d_date_sk, d1.d_week_seq = d2.d_week_seq +12)----------------------Projection: catalog_sales.cs_ship_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, inventory.inv_date_sk, warehouse.w_warehouse_name, item.i_item_desc, d1.d_date, d1.d_week_seq +13)------------------------Inner Join: catalog_sales.cs_sold_date_sk = d1.d_date_sk +14)--------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, inventory.inv_date_sk, warehouse.w_warehouse_name, item.i_item_desc +15)----------------------------Inner Join: catalog_sales.cs_bill_hdemo_sk = household_demographics.hd_demo_sk +16)------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_bill_hdemo_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, inventory.inv_date_sk, warehouse.w_warehouse_name, item.i_item_desc +17)--------------------------------Inner Join: catalog_sales.cs_bill_cdemo_sk = customer_demographics.cd_demo_sk +18)----------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_bill_cdemo_sk, catalog_sales.cs_bill_hdemo_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, inventory.inv_date_sk, warehouse.w_warehouse_name, item.i_item_desc +19)------------------------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +20)--------------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_bill_cdemo_sk, catalog_sales.cs_bill_hdemo_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, inventory.inv_date_sk, warehouse.w_warehouse_name +21)----------------------------------------Inner Join: inventory.inv_warehouse_sk = warehouse.w_warehouse_sk +22)------------------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_bill_cdemo_sk, catalog_sales.cs_bill_hdemo_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_order_number, inventory.inv_date_sk, inventory.inv_warehouse_sk +23)--------------------------------------------Inner Join: catalog_sales.cs_item_sk = inventory.inv_item_sk Filter: CAST(inventory.inv_quantity_on_hand AS Int64) < catalog_sales.cs_quantity +24)----------------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ship_date_sk, cs_bill_cdemo_sk, cs_bill_hdemo_sk, cs_item_sk, cs_promo_sk, cs_order_number, cs_quantity] +25)----------------------------------------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand] +26)------------------------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name] +27)--------------------------------------TableScan: item projection=[i_item_sk, i_item_desc] +28)----------------------------------Projection: customer_demographics.cd_demo_sk +29)------------------------------------Filter: customer_demographics.cd_marital_status = Utf8View("D") +30)--------------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status], partial_filters=[customer_demographics.cd_marital_status = Utf8View("D")] +31)------------------------------Projection: household_demographics.hd_demo_sk +32)--------------------------------Filter: household_demographics.hd_buy_potential = Utf8View(">10000") +33)----------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_buy_potential], partial_filters=[household_demographics.hd_buy_potential = Utf8View(">10000")] +34)--------------------------SubqueryAlias: d1 +35)----------------------------Projection: date_dim.d_date_sk, date_dim.d_date, date_dim.d_week_seq +36)------------------------------Filter: date_dim.d_year = Int64(1999) +37)--------------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_week_seq, d_year], partial_filters=[date_dim.d_year = Int64(1999)] +38)----------------------SubqueryAlias: d2 +39)------------------------TableScan: date_dim projection=[d_date_sk, d_week_seq] +40)------------------SubqueryAlias: d3 +41)--------------------TableScan: date_dim projection=[d_date_sk, d_date] +42)--------------TableScan: promotion projection=[p_promo_sk] +43)----------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number] +physical_plan +01)SortPreservingMergeExec: [total_cnt@5 DESC, i_item_desc@0 ASC, w_warehouse_name@1 ASC, d_week_seq@2 ASC], fetch=100 +02)--ProjectionExec: expr=[i_item_desc@0 as i_item_desc, w_warehouse_name@1 as w_warehouse_name, d_week_seq@2 as d_week_seq, sum(CASE WHEN promotion.p_promo_sk IS NULL THEN Int64(1) ELSE Int64(0) END)@3 as no_promo, sum(CASE WHEN promotion.p_promo_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END)@4 as promo, count(Int64(1))@5 as total_cnt] +03)----SortExec: TopK(fetch=100), expr=[count(Int64(1))@5 DESC, i_item_desc@0 ASC, w_warehouse_name@1 ASC, d_week_seq@2 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[i_item_desc@0 as i_item_desc, w_warehouse_name@1 as w_warehouse_name, d_week_seq@2 as d_week_seq], aggr=[sum(CASE WHEN promotion.p_promo_sk IS NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN promotion.p_promo_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END), count(Int64(1))] +05)--------RepartitionExec: partitioning=Hash([i_item_desc@0, w_warehouse_name@1, d_week_seq@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[i_item_desc@1 as i_item_desc, w_warehouse_name@0 as w_warehouse_name, d_week_seq@2 as d_week_seq], aggr=[sum(CASE WHEN promotion.p_promo_sk IS NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN promotion.p_promo_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END), count(Int64(1))] +07)------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(cr_item_sk@0, cs_item_sk@0), (cr_order_number@1, cs_order_number@1)], projection=[w_warehouse_name@4, i_item_desc@5, d_week_seq@6, p_promo_sk@7] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number], file_type=vortex +09)--------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(p_promo_sk@0, cs_promo_sk@1)], projection=[cs_item_sk@1, cs_order_number@3, w_warehouse_name@4, i_item_desc@5, d_week_seq@6, p_promo_sk@0] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_ship_date_sk@0)], filter=d_date@1 > d_date@0 + IntervalMonthDayNano { months: 0, days: 5, nanoseconds: 0 }, projection=[cs_item_sk@3, cs_promo_sk@4, cs_order_number@5, w_warehouse_name@6, i_item_desc@7, d_week_seq@9] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +13)------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(d_date_sk@0, inv_date_sk@4), (d_week_seq@1, d_week_seq@8)], projection=[cs_ship_date_sk@2, cs_item_sk@3, cs_promo_sk@4, cs_order_number@5, w_warehouse_name@7, i_item_desc@8, d_date@9, d_week_seq@10] +14)--------------------RepartitionExec: partitioning=Hash([d_date_sk@0, d_week_seq@1], 4), input_partitions=1 +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_week_seq], file_type=vortex +16)--------------------RepartitionExec: partitioning=Hash([inv_date_sk@4, d_week_seq@8], 4), input_partitions=4 +17)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_ship_date_sk@4, cs_item_sk@5, cs_promo_sk@6, cs_order_number@7, inv_date_sk@8, w_warehouse_name@9, i_item_desc@10, d_date@1, d_week_seq@2] +18)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date, d_week_seq], file_type=vortex, predicate: d_year@6 = 1999 +19)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, cs_bill_hdemo_sk@2)], projection=[cs_sold_date_sk@1, cs_ship_date_sk@2, cs_item_sk@4, cs_promo_sk@5, cs_order_number@6, inv_date_sk@7, w_warehouse_name@8, i_item_desc@9] +20)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_buy_potential@2 = >10000 +21)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, cs_bill_cdemo_sk@2)], projection=[cs_sold_date_sk@1, cs_ship_date_sk@2, cs_bill_hdemo_sk@4, cs_item_sk@5, cs_promo_sk@6, cs_order_number@7, inv_date_sk@8, w_warehouse_name@9, i_item_desc@10] +22)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex, predicate: cd_marital_status@2 = D +23)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@4)], projection=[cs_sold_date_sk@2, cs_ship_date_sk@3, cs_bill_cdemo_sk@4, cs_bill_hdemo_sk@5, cs_item_sk@6, cs_promo_sk@7, cs_order_number@8, inv_date_sk@9, w_warehouse_name@10, i_item_desc@1] +24)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_desc], file_type=vortex +25)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@0, inv_warehouse_sk@8)], projection=[cs_sold_date_sk@2, cs_ship_date_sk@3, cs_bill_cdemo_sk@4, cs_bill_hdemo_sk@5, cs_item_sk@6, cs_promo_sk@7, cs_order_number@8, inv_date_sk@9, w_warehouse_name@1] +26)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[w_warehouse_sk, w_warehouse_name], file_type=vortex +27)--------------------------------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(inv_item_sk@1, cs_item_sk@4)], filter=CAST(inv_quantity_on_hand@1 AS Int64) < cs_quantity@0, projection=[cs_sold_date_sk@4, cs_ship_date_sk@5, cs_bill_cdemo_sk@6, cs_bill_hdemo_sk@7, cs_item_sk@8, cs_promo_sk@9, cs_order_number@10, inv_date_sk@0, inv_warehouse_sk@2] +28)----------------------------------RepartitionExec: partitioning=Hash([inv_item_sk@1], 4), input_partitions=1 +29)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk, inv_warehouse_sk, inv_quantity_on_hand], file_type=vortex +30)----------------------------------RepartitionExec: partitioning=Hash([cs_item_sk@4], 4), input_partitions=4 +31)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_ship_date_sk, cs_bill_cdemo_sk, cs_bill_hdemo_sk, cs_item_sk, cs_promo_sk, cs_order_number, cs_quantity], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q73.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q73.slt.no new file mode 100644 index 00000000000..dfe0886291c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q73.slt.no @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_buy_potential = 'Unknown' + OR household_demographics.hd_buy_potential = '>10000') + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END > 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county IN ('Orange County', + 'Bronx County', + 'Franklin Parish', + 'Williamson County') + GROUP BY ss_ticket_number, + ss_customer_sk) dj, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt DESC, + c_last_name ASC; +---- +logical_plan +01)Sort: dj.cnt DESC NULLS FIRST, customer.c_last_name ASC NULLS LAST +02)--Projection: customer.c_last_name, customer.c_first_name, customer.c_salutation, customer.c_preferred_cust_flag, dj.ss_ticket_number, dj.cnt +03)----Inner Join: dj.ss_customer_sk = customer.c_customer_sk +04)------SubqueryAlias: dj +05)--------Projection: store_sales.ss_ticket_number, store_sales.ss_customer_sk, count(Int64(1)) AS count(*) AS cnt +06)----------Filter: count(Int64(1)) >= Int64(1) AND count(Int64(1)) <= Int64(5) +07)------------Aggregate: groupBy=[[store_sales.ss_ticket_number, store_sales.ss_customer_sk]], aggr=[[count(Int64(1))]] +08)--------------Projection: store_sales.ss_customer_sk, store_sales.ss_ticket_number +09)----------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +10)------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_ticket_number +11)--------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +12)----------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_store_sk, store_sales.ss_ticket_number +13)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)--------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_store_sk, ss_ticket_number] +15)--------------------------Projection: date_dim.d_date_sk +16)----------------------------Filter: date_dim.d_dom >= Int64(1) AND date_dim.d_dom <= Int64(2) AND (date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)) +17)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_dom], partial_filters=[date_dim.d_dom >= Int64(1), date_dim.d_dom <= Int64(2), date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)] +18)----------------------Projection: store.s_store_sk +19)------------------------Filter: store.s_county IN ([Utf8View("Orange County"), Utf8View("Bronx County"), Utf8View("Franklin Parish"), Utf8View("Williamson County")]) +20)--------------------------TableScan: store projection=[s_store_sk, s_county], partial_filters=[store.s_county IN ([Utf8View("Orange County"), Utf8View("Bronx County"), Utf8View("Franklin Parish"), Utf8View("Williamson County")])] +21)------------------Projection: household_demographics.hd_demo_sk +22)--------------------Filter: (household_demographics.hd_buy_potential = Utf8View("Unknown") OR household_demographics.hd_buy_potential = Utf8View(">10000")) AND household_demographics.hd_vehicle_count > Int32(0) AND CASE WHEN household_demographics.hd_vehicle_count > Int32(0) THEN CAST(household_demographics.hd_dep_count AS Float64) / CAST(household_demographics.hd_vehicle_count AS Float64) ELSE Float64(NULL) END > Float64(1) +23)----------------------TableScan: household_demographics projection=[hd_demo_sk, hd_buy_potential, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_buy_potential = Utf8View("Unknown") OR household_demographics.hd_buy_potential = Utf8View(">10000"), household_demographics.hd_vehicle_count > Int32(0), CASE WHEN household_demographics.hd_vehicle_count > Int32(0) THEN CAST(household_demographics.hd_dep_count AS Float64) / CAST(household_demographics.hd_vehicle_count AS Float64) ELSE Float64(NULL) END > Float64(1)] +24)------TableScan: customer projection=[c_customer_sk, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag] +physical_plan +01)SortPreservingMergeExec: [cnt@5 DESC, c_last_name@0 ASC NULLS LAST] +02)--SortExec: expr=[cnt@5 DESC, c_last_name@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_last_name@3, c_first_name@2, c_salutation@1, c_preferred_cust_flag@4, ss_ticket_number@5, cnt@7] +04)------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_salutation, c_first_name, c_last_name, c_preferred_cust_flag], file_type=vortex +05)------ProjectionExec: expr=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, count(Int64(1))@2 as cnt] +06)--------FilterExec: count(Int64(1))@2 >= 1 AND count(Int64(1))@2 <= 5 +07)----------AggregateExec: mode=FinalPartitioned, gby=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk], aggr=[count(Int64(1))] +08)------------RepartitionExec: partitioning=Hash([ss_ticket_number@0, ss_customer_sk@1], 4), input_partitions=4 +09)--------------AggregateExec: mode=Partial, gby=[ss_ticket_number@1 as ss_ticket_number, ss_customer_sk@0 as ss_customer_sk], aggr=[count(Int64(1))] +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_customer_sk@1, ss_ticket_number@3] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: (hd_buy_potential@2 = Unknown OR hd_buy_potential@2 = >10000) AND hd_vehicle_count@4 > 0 AND CASE WHEN hd_vehicle_count@4 > 0 THEN CAST(hd_dep_count@3 AS Float64) / CAST(hd_vehicle_count@4 AS Float64) END > 1 +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@2)], projection=[ss_customer_sk@1, ss_hdemo_sk@2, ss_ticket_number@4] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_county@23 IN (SET) ([Orange County, Bronx County, Franklin Parish, Williamson County]) +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@2, ss_hdemo_sk@3, ss_store_sk@4, ss_ticket_number@5] +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_dom@9 >= 1 AND d_dom@9 <= 2 AND (d_year@6 = 1999 OR d_year@6 = 2000 OR d_year@6 = 2001) +16)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_store_sk, ss_ticket_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q74.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q74.slt.no new file mode 100644 index 00000000000..27f984affb4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q74.slt.no @@ -0,0 +1,178 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ss_net_paid) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ws_net_paid) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year_ = 2001 + AND t_s_secyear.year_ = 2001+1 + AND t_w_firstyear.year_ = 2001 + AND t_w_secyear.year_ = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END +ORDER BY 1 NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: t_s_secyear.customer_id ASC NULLS FIRST, fetch=100 +02)--Projection: t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name +03)----Inner Join: t_s_firstyear.customer_id = t_w_secyear.customer_id Filter: CASE WHEN t_w_firstyear.year_total > Decimal128(0.00,17,2) THEN t_w_secyear.year_total / t_w_firstyear.year_total ELSE Decimal128(NULL,23,6) END > CASE WHEN t_s_firstyear.year_total > Decimal128(0.00,17,2) THEN t_s_secyear.year_total / t_s_firstyear.year_total ELSE Decimal128(NULL,23,6) END +04)------Projection: t_s_firstyear.customer_id, t_s_firstyear.year_total, t_s_secyear.customer_id, t_s_secyear.customer_first_name, t_s_secyear.customer_last_name, t_s_secyear.year_total, t_w_firstyear.year_total +05)--------Inner Join: t_s_firstyear.customer_id = t_w_firstyear.customer_id +06)----------Inner Join: t_s_firstyear.customer_id = t_s_secyear.customer_id +07)------------SubqueryAlias: t_s_firstyear +08)--------------SubqueryAlias: year_total +09)----------------Projection: customer.c_customer_id AS customer_id, sum(store_sales.ss_net_paid) AS year_total +10)------------------Filter: sum(store_sales.ss_net_paid) > Decimal128(0.00,17,2) +11)--------------------Projection: customer.c_customer_id, sum(store_sales.ss_net_paid) +12)----------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, date_dim.d_year]], aggr=[[sum(store_sales.ss_net_paid)]] +13)------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, store_sales.ss_net_paid, date_dim.d_year +14)--------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +15)----------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, store_sales.ss_sold_date_sk, store_sales.ss_net_paid +16)------------------------------Inner Join: customer.c_customer_sk = store_sales.ss_customer_sk +17)--------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], partial_filters=[Boolean(true)] +18)--------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_net_paid] +19)----------------------------Filter: date_dim.d_year = Int64(2001) +20)------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001) OR date_dim.d_year = Int64(2002), date_dim.d_year = Int64(2001)] +21)------------SubqueryAlias: t_s_secyear +22)--------------SubqueryAlias: year_total +23)----------------Projection: customer.c_customer_id AS customer_id, customer.c_first_name AS customer_first_name, customer.c_last_name AS customer_last_name, sum(store_sales.ss_net_paid) AS year_total +24)------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, date_dim.d_year]], aggr=[[sum(store_sales.ss_net_paid)]] +25)--------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, store_sales.ss_net_paid, date_dim.d_year +26)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +27)------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, store_sales.ss_sold_date_sk, store_sales.ss_net_paid +28)--------------------------Inner Join: customer.c_customer_sk = store_sales.ss_customer_sk +29)----------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], partial_filters=[Boolean(true)] +30)----------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_net_paid] +31)------------------------Filter: (date_dim.d_year = Int64(2001) OR date_dim.d_year = Int64(2002)) AND date_dim.d_year = Int64(2002) +32)--------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001) OR date_dim.d_year = Int64(2002), date_dim.d_year = Int64(2002)] +33)----------SubqueryAlias: t_w_firstyear +34)------------SubqueryAlias: year_total +35)--------------Projection: customer.c_customer_id AS customer_id, sum(web_sales.ws_net_paid) AS year_total +36)----------------Filter: sum(web_sales.ws_net_paid) > Decimal128(0.00,17,2) +37)------------------Projection: customer.c_customer_id, sum(web_sales.ws_net_paid) +38)--------------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, date_dim.d_year]], aggr=[[sum(web_sales.ws_net_paid)]] +39)----------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, web_sales.ws_net_paid, date_dim.d_year +40)------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +41)--------------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, web_sales.ws_sold_date_sk, web_sales.ws_net_paid +42)----------------------------Inner Join: customer.c_customer_sk = web_sales.ws_bill_customer_sk +43)------------------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], partial_filters=[Boolean(true)] +44)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_net_paid] +45)--------------------------Filter: date_dim.d_year = Int64(2001) +46)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001) OR date_dim.d_year = Int64(2002), date_dim.d_year = Int64(2001)] +47)------SubqueryAlias: t_w_secyear +48)--------SubqueryAlias: year_total +49)----------Projection: customer.c_customer_id AS customer_id, sum(web_sales.ws_net_paid) AS year_total +50)------------Aggregate: groupBy=[[customer.c_customer_id, customer.c_first_name, customer.c_last_name, date_dim.d_year]], aggr=[[sum(web_sales.ws_net_paid)]] +51)--------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, web_sales.ws_net_paid, date_dim.d_year +52)----------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +53)------------------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, web_sales.ws_sold_date_sk, web_sales.ws_net_paid +54)--------------------Inner Join: customer.c_customer_sk = web_sales.ws_bill_customer_sk +55)----------------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], partial_filters=[Boolean(true)] +56)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_net_paid] +57)------------------Filter: (date_dim.d_year = Int64(2001) OR date_dim.d_year = Int64(2002)) AND date_dim.d_year = Int64(2002) +58)--------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001) OR date_dim.d_year = Int64(2002), date_dim.d_year = Int64(2002)] +physical_plan +01)SortPreservingMergeExec: [customer_id@0 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[customer_id@0 ASC], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], filter=CASE WHEN year_total@2 > 0.00 THEN year_total@3 / year_total@2 END > CASE WHEN year_total@0 > 0.00 THEN year_total@1 / year_total@0 END, projection=[customer_id@2, customer_first_name@3, customer_last_name@4] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)], projection=[customer_id@2, year_total@3, customer_id@4, customer_first_name@5, customer_last_name@6, year_total@7, year_total@1] +06)----------CoalescePartitionsExec +07)------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(web_sales.ws_net_paid)@1 as year_total] +08)--------------FilterExec: sum(web_sales.ws_net_paid)@1 > 0.00 +09)----------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(web_sales.ws_net_paid)@4 as sum(web_sales.ws_net_paid)] +10)------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@3 as d_year], aggr=[sum(web_sales.ws_net_paid)], ordering_mode=PartiallySorted([3]) +11)--------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, d_year@3], 4), input_partitions=4 +12)----------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@4 as d_year], aggr=[sum(web_sales.ws_net_paid)], ordering_mode=PartiallySorted([3]) +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@3)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, ws_net_paid@6, d_year@1] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, ws_sold_date_sk@4, ws_net_paid@6] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], file_type=vortex +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_net_paid], file_type=vortex +18)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(customer_id@0, customer_id@0)] +19)------------CoalescePartitionsExec +20)--------------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(store_sales.ss_net_paid)@1 as year_total] +21)----------------FilterExec: sum(store_sales.ss_net_paid)@1 > 0.00 +22)------------------ProjectionExec: expr=[c_customer_id@0 as c_customer_id, sum(store_sales.ss_net_paid)@4 as sum(store_sales.ss_net_paid)] +23)--------------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@3 as d_year], aggr=[sum(store_sales.ss_net_paid)], ordering_mode=PartiallySorted([3]) +24)----------------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, d_year@3], 4), input_partitions=4 +25)------------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@4 as d_year], aggr=[sum(store_sales.ss_net_paid)], ordering_mode=PartiallySorted([3]) +26)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@3)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, ss_net_paid@6, d_year@1] +27)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +28)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, ss_sold_date_sk@4, ss_net_paid@6] +29)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], file_type=vortex +30)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_net_paid], file_type=vortex +31)------------ProjectionExec: expr=[c_customer_id@0 as customer_id, c_first_name@1 as customer_first_name, c_last_name@2 as customer_last_name, sum(store_sales.ss_net_paid)@4 as year_total] +32)--------------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@3 as d_year], aggr=[sum(store_sales.ss_net_paid)], ordering_mode=PartiallySorted([3]) +33)----------------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, d_year@3], 4), input_partitions=4 +34)------------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@4 as d_year], aggr=[sum(store_sales.ss_net_paid)], ordering_mode=PartiallySorted([3]) +35)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@3)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, ss_net_paid@6, d_year@1] +36)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: (d_year@6 = 2001 OR d_year@6 = 2002) AND d_year@6 = 2002 +37)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, ss_sold_date_sk@4, ss_net_paid@6] +38)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], file_type=vortex +39)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_net_paid], file_type=vortex +40)------ProjectionExec: expr=[c_customer_id@0 as customer_id, sum(web_sales.ws_net_paid)@4 as year_total] +41)--------AggregateExec: mode=FinalPartitioned, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@3 as d_year], aggr=[sum(web_sales.ws_net_paid)], ordering_mode=PartiallySorted([3]) +42)----------RepartitionExec: partitioning=Hash([c_customer_id@0, c_first_name@1, c_last_name@2, d_year@3], 4), input_partitions=4 +43)------------AggregateExec: mode=Partial, gby=[c_customer_id@0 as c_customer_id, c_first_name@1 as c_first_name, c_last_name@2 as c_last_name, d_year@4 as d_year], aggr=[sum(web_sales.ws_net_paid)], ordering_mode=PartiallySorted([3]) +44)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@3)], projection=[c_customer_id@2, c_first_name@3, c_last_name@4, ws_net_paid@6, d_year@1] +45)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: (d_year@6 = 2001 OR d_year@6 = 2002) AND d_year@6 = 2002 +46)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@1)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, ws_sold_date_sk@4, ws_net_paid@6] +47)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_first_name, c_last_name], file_type=vortex +48)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk, ws_net_paid], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q75.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q75.slt.no new file mode 100644 index 00000000000..9f966a8eecb --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q75.slt.no @@ -0,0 +1,270 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH all_sales AS + ( SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + SUM(sales_cnt) AS sales_cnt , + SUM(sales_amt) AS sales_amt + FROM + (SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + cs_quantity - COALESCE(cr_return_quantity,0) AS sales_cnt , + cs_ext_sales_price - COALESCE(cr_return_amount,0.0) AS sales_amt + FROM catalog_sales + JOIN item ON i_item_sk=cs_item_sk + JOIN date_dim ON d_date_sk=cs_sold_date_sk + LEFT JOIN catalog_returns ON (cs_order_number=cr_order_number + AND cs_item_sk=cr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ss_quantity - COALESCE(sr_return_quantity,0) AS sales_cnt , + ss_ext_sales_price - COALESCE(sr_return_amt,0.0) AS sales_amt + FROM store_sales + JOIN item ON i_item_sk=ss_item_sk + JOIN date_dim ON d_date_sk=ss_sold_date_sk + LEFT JOIN store_returns ON (ss_ticket_number=sr_ticket_number + AND ss_item_sk=sr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ws_quantity - COALESCE(wr_return_quantity,0) AS sales_cnt , + ws_ext_sales_price - COALESCE(wr_return_amt,0.0) AS sales_amt + FROM web_sales + JOIN item ON i_item_sk=ws_item_sk + JOIN date_dim ON d_date_sk=ws_sold_date_sk + LEFT JOIN web_returns ON (ws_order_number=wr_order_number + AND ws_item_sk=wr_item_sk) + WHERE i_category='Books') sales_detail + GROUP BY d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id) +SELECT prev_yr.d_year AS prev_year , + curr_yr.d_year AS year_ , + curr_yr.i_brand_id , + curr_yr.i_class_id , + curr_yr.i_category_id , + curr_yr.i_manufact_id , + prev_yr.sales_cnt AS prev_yr_cnt , + curr_yr.sales_cnt AS curr_yr_cnt , + curr_yr.sales_cnt-prev_yr.sales_cnt AS sales_cnt_diff , + curr_yr.sales_amt-prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, + all_sales prev_yr +WHERE curr_yr.i_brand_id=prev_yr.i_brand_id + AND curr_yr.i_class_id=prev_yr.i_class_id + AND curr_yr.i_category_id=prev_yr.i_category_id + AND curr_yr.i_manufact_id=prev_yr.i_manufact_id + AND curr_yr.d_year=2002 + AND prev_yr.d_year=2002-1 + AND CAST(curr_yr.sales_cnt AS DECIMAL(17,2))/CAST(prev_yr.sales_cnt AS DECIMAL(17,2))<0.9 +ORDER BY sales_cnt_diff, + sales_amt_diff +LIMIT 100; +---- +logical_plan +01)Sort: sales_cnt_diff ASC NULLS LAST, sales_amt_diff ASC NULLS LAST, fetch=100 +02)--Projection: prev_yr.d_year AS prev_year, curr_yr.d_year AS year_, curr_yr.i_brand_id, curr_yr.i_class_id, curr_yr.i_category_id, curr_yr.i_manufact_id, prev_yr.sales_cnt AS prev_yr_cnt, curr_yr.sales_cnt AS curr_yr_cnt, curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff, curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff +03)----Inner Join: curr_yr.i_brand_id = prev_yr.i_brand_id, curr_yr.i_class_id = prev_yr.i_class_id, curr_yr.i_category_id = prev_yr.i_category_id, curr_yr.i_manufact_id = prev_yr.i_manufact_id Filter: CAST(curr_yr.sales_cnt AS Decimal128(17, 2)) / CAST(prev_yr.sales_cnt AS Decimal128(17, 2)) < Decimal128(0.900000,23,6) +04)------SubqueryAlias: curr_yr +05)--------SubqueryAlias: all_sales +06)----------Projection: sales_detail.d_year, sales_detail.i_brand_id, sales_detail.i_class_id, sales_detail.i_category_id, sales_detail.i_manufact_id, sum(sales_detail.sales_cnt) AS sales_cnt, sum(sales_detail.sales_amt) AS sales_amt +07)------------Aggregate: groupBy=[[sales_detail.d_year, sales_detail.i_brand_id, sales_detail.i_class_id, sales_detail.i_category_id, sales_detail.i_manufact_id]], aggr=[[sum(sales_detail.sales_cnt), sum(sales_detail.sales_amt)]] +08)--------------SubqueryAlias: sales_detail +09)----------------Aggregate: groupBy=[[d_year, i_brand_id, i_class_id, i_category_id, i_manufact_id, sales_cnt, sales_amt]], aggr=[[]] +10)------------------Union +11)--------------------Projection: date_dim.d_year, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, catalog_sales.cs_quantity - CASE WHEN catalog_returns.cr_return_quantity IS NOT NULL THEN catalog_returns.cr_return_quantity ELSE Int64(0) END AS sales_cnt, catalog_sales.cs_ext_sales_price - CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE Decimal128(0.000000000000000,30,15) END AS sales_amt +12)----------------------Projection: CAST(catalog_returns.cr_return_amount AS Decimal128(30, 15)) AS __common_expr_1, catalog_sales.cs_quantity, catalog_sales.cs_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year, catalog_returns.cr_return_quantity +13)------------------------Left Join: catalog_sales.cs_order_number = catalog_returns.cr_order_number, catalog_sales.cs_item_sk = catalog_returns.cr_item_sk +14)--------------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_order_number, catalog_sales.cs_quantity, catalog_sales.cs_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year +15)----------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +16)------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_order_number, catalog_sales.cs_quantity, catalog_sales.cs_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +17)--------------------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +18)----------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_order_number, cs_quantity, cs_ext_sales_price] +19)----------------------------------Projection: item.i_item_sk, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +20)------------------------------------Filter: item.i_category = Utf8View("Books") +21)--------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Books")] +22)------------------------------Filter: date_dim.d_year = Int64(2002) +23)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +24)--------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_return_quantity, cr_return_amount] +25)--------------------Projection: date_dim.d_year, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, store_sales.ss_quantity - CASE WHEN store_returns.sr_return_quantity IS NOT NULL THEN store_returns.sr_return_quantity ELSE Int64(0) END AS sales_cnt, store_sales.ss_ext_sales_price - CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE Decimal128(0.000000000000000,30,15) END AS sales_amt +26)----------------------Projection: CAST(store_returns.sr_return_amt AS Decimal128(30, 15)) AS __common_expr_2, store_sales.ss_quantity, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year, store_returns.sr_return_quantity +27)------------------------Left Join: store_sales.ss_ticket_number = store_returns.sr_ticket_number, store_sales.ss_item_sk = store_returns.sr_item_sk +28)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_ticket_number, store_sales.ss_quantity, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year +29)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +30)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_ticket_number, store_sales.ss_quantity, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +31)--------------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +32)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ticket_number, ss_quantity, ss_ext_sales_price] +33)----------------------------------Projection: item.i_item_sk, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +34)------------------------------------Filter: item.i_category = Utf8View("Books") +35)--------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Books")] +36)------------------------------Filter: date_dim.d_year = Int64(2002) +37)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +38)--------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number, sr_return_quantity, sr_return_amt] +39)--------------------Projection: date_dim.d_year, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, web_sales.ws_quantity - CASE WHEN web_returns.wr_return_quantity IS NOT NULL THEN web_returns.wr_return_quantity ELSE Int64(0) END AS sales_cnt, web_sales.ws_ext_sales_price - CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE Decimal128(0.000000000000000,30,15) END AS sales_amt +40)----------------------Projection: CAST(web_returns.wr_return_amt AS Decimal128(30, 15)) AS __common_expr_3, web_sales.ws_quantity, web_sales.ws_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year, web_returns.wr_return_quantity +41)------------------------Left Join: web_sales.ws_order_number = web_returns.wr_order_number, web_sales.ws_item_sk = web_returns.wr_item_sk +42)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_order_number, web_sales.ws_quantity, web_sales.ws_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year +43)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +44)------------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_order_number, web_sales.ws_quantity, web_sales.ws_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +45)--------------------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +46)----------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_order_number, ws_quantity, ws_ext_sales_price] +47)----------------------------------Projection: item.i_item_sk, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +48)------------------------------------Filter: item.i_category = Utf8View("Books") +49)--------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Books")] +50)------------------------------Filter: date_dim.d_year = Int64(2002) +51)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2002)] +52)--------------------------TableScan: web_returns projection=[wr_item_sk, wr_order_number, wr_return_quantity, wr_return_amt] +53)------SubqueryAlias: prev_yr +54)--------SubqueryAlias: all_sales +55)----------Projection: sales_detail.d_year, sales_detail.i_brand_id, sales_detail.i_class_id, sales_detail.i_category_id, sales_detail.i_manufact_id, sum(sales_detail.sales_cnt) AS sales_cnt, sum(sales_detail.sales_amt) AS sales_amt +56)------------Aggregate: groupBy=[[sales_detail.d_year, sales_detail.i_brand_id, sales_detail.i_class_id, sales_detail.i_category_id, sales_detail.i_manufact_id]], aggr=[[sum(sales_detail.sales_cnt), sum(sales_detail.sales_amt)]] +57)--------------SubqueryAlias: sales_detail +58)----------------Aggregate: groupBy=[[d_year, i_brand_id, i_class_id, i_category_id, i_manufact_id, sales_cnt, sales_amt]], aggr=[[]] +59)------------------Union +60)--------------------Projection: date_dim.d_year, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, catalog_sales.cs_quantity - CASE WHEN catalog_returns.cr_return_quantity IS NOT NULL THEN catalog_returns.cr_return_quantity ELSE Int64(0) END AS sales_cnt, catalog_sales.cs_ext_sales_price - CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE Decimal128(0.000000000000000,30,15) END AS sales_amt +61)----------------------Projection: CAST(catalog_returns.cr_return_amount AS Decimal128(30, 15)) AS __common_expr_4, catalog_sales.cs_quantity, catalog_sales.cs_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year, catalog_returns.cr_return_quantity +62)------------------------Left Join: catalog_sales.cs_order_number = catalog_returns.cr_order_number, catalog_sales.cs_item_sk = catalog_returns.cr_item_sk +63)--------------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_order_number, catalog_sales.cs_quantity, catalog_sales.cs_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year +64)----------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +65)------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_order_number, catalog_sales.cs_quantity, catalog_sales.cs_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +66)--------------------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +67)----------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_item_sk, cs_order_number, cs_quantity, cs_ext_sales_price] +68)----------------------------------Projection: item.i_item_sk, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +69)------------------------------------Filter: item.i_category = Utf8View("Books") +70)--------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Books")] +71)------------------------------Filter: date_dim.d_year = Int64(2001) +72)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +73)--------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_return_quantity, cr_return_amount] +74)--------------------Projection: date_dim.d_year, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, store_sales.ss_quantity - CASE WHEN store_returns.sr_return_quantity IS NOT NULL THEN store_returns.sr_return_quantity ELSE Int64(0) END AS sales_cnt, store_sales.ss_ext_sales_price - CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE Decimal128(0.000000000000000,30,15) END AS sales_amt +75)----------------------Projection: CAST(store_returns.sr_return_amt AS Decimal128(30, 15)) AS __common_expr_5, store_sales.ss_quantity, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year, store_returns.sr_return_quantity +76)------------------------Left Join: store_sales.ss_ticket_number = store_returns.sr_ticket_number, store_sales.ss_item_sk = store_returns.sr_item_sk +77)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_ticket_number, store_sales.ss_quantity, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year +78)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +79)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_ticket_number, store_sales.ss_quantity, store_sales.ss_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +80)--------------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +81)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ticket_number, ss_quantity, ss_ext_sales_price] +82)----------------------------------Projection: item.i_item_sk, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +83)------------------------------------Filter: item.i_category = Utf8View("Books") +84)--------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Books")] +85)------------------------------Filter: date_dim.d_year = Int64(2001) +86)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +87)--------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number, sr_return_quantity, sr_return_amt] +88)--------------------Projection: date_dim.d_year, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, web_sales.ws_quantity - CASE WHEN web_returns.wr_return_quantity IS NOT NULL THEN web_returns.wr_return_quantity ELSE Int64(0) END AS sales_cnt, web_sales.ws_ext_sales_price - CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE Decimal128(0.000000000000000,30,15) END AS sales_amt +89)----------------------Projection: CAST(web_returns.wr_return_amt AS Decimal128(30, 15)) AS __common_expr_6, web_sales.ws_quantity, web_sales.ws_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year, web_returns.wr_return_quantity +90)------------------------Left Join: web_sales.ws_order_number = web_returns.wr_order_number, web_sales.ws_item_sk = web_returns.wr_item_sk +91)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_order_number, web_sales.ws_quantity, web_sales.ws_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id, date_dim.d_year +92)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +93)------------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_order_number, web_sales.ws_quantity, web_sales.ws_ext_sales_price, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +94)--------------------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +95)----------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_order_number, ws_quantity, ws_ext_sales_price] +96)----------------------------------Projection: item.i_item_sk, item.i_brand_id, item.i_class_id, item.i_category_id, item.i_manufact_id +97)------------------------------------Filter: item.i_category = Utf8View("Books") +98)--------------------------------------TableScan: item projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_category, i_manufact_id], partial_filters=[item.i_category = Utf8View("Books")] +99)------------------------------Filter: date_dim.d_year = Int64(2001) +100)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2001)] +101)--------------------------TableScan: web_returns projection=[wr_item_sk, wr_order_number, wr_return_quantity, wr_return_amt] +physical_plan +01)SortPreservingMergeExec: [sales_cnt_diff@8 ASC NULLS LAST, sales_amt_diff@9 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[sales_cnt_diff@8 ASC NULLS LAST, sales_amt_diff@9 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[d_year@0 as prev_year, d_year@1 as year_, i_brand_id@2 as i_brand_id, i_class_id@3 as i_class_id, i_category_id@4 as i_category_id, i_manufact_id@5 as i_manufact_id, sales_cnt@6 as prev_yr_cnt, sales_cnt@7 as curr_yr_cnt, sales_cnt@7 - sales_cnt@6 as sales_cnt_diff, sales_amt@8 - sales_amt@9 as sales_amt_diff] +04)------HashJoinExec: mode=Partitioned, join_type=Inner, on=[(i_brand_id@1, i_brand_id@1), (i_class_id@2, i_class_id@2), (i_category_id@3, i_category_id@3), (i_manufact_id@4, i_manufact_id@4)], filter=CAST(sales_cnt@0 AS Decimal128(17, 2)) / CAST(sales_cnt@1 AS Decimal128(17, 2)) < 0.900000, projection=[d_year@7, d_year@0, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4, sales_cnt@12, sales_cnt@5, sales_amt@6, sales_amt@13] +05)--------RepartitionExec: partitioning=Hash([i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4], 4), input_partitions=4 +06)----------ProjectionExec: expr=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id, sum(sales_detail.sales_cnt)@5 as sales_cnt, sum(sales_detail.sales_amt)@6 as sales_amt] +07)------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id], aggr=[sum(sales_detail.sales_cnt), sum(sales_detail.sales_amt)], ordering_mode=PartiallySorted([0]) +08)--------------RepartitionExec: partitioning=Hash([d_year@0, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id], aggr=[sum(sales_detail.sales_cnt), sum(sales_detail.sales_amt)], ordering_mode=PartiallySorted([0]) +10)------------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id, sales_cnt@5 as sales_cnt, sales_amt@6 as sales_amt], aggr=[], ordering_mode=PartiallySorted([0]) +11)--------------------RepartitionExec: partitioning=Hash([d_year@0, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4, sales_cnt@5, sales_amt@6], 4), input_partitions=12 +12)----------------------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id, sales_cnt@5 as sales_cnt, sales_amt@6 as sales_amt], aggr=[], ordering_mode=PartiallySorted([0]) +13)------------------------UnionExec +14)--------------------------ProjectionExec: expr=[d_year@7 as d_year, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, cs_quantity@1 - CASE WHEN cr_return_quantity@8 IS NOT NULL THEN cr_return_quantity@8 ELSE 0 END as sales_cnt, cs_ext_sales_price@2 - CASE WHEN __common_expr_1@0 IS NOT NULL THEN __common_expr_1@0 ELSE 0.000000000000000 END as sales_amt] +15)----------------------------ProjectionExec: expr=[CAST(cr_return_amount@0 AS Decimal128(30, 15)) as __common_expr_1, cs_quantity@1 as cs_quantity, cs_ext_sales_price@2 as cs_ext_sales_price, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, d_year@7 as d_year, cr_return_quantity@8 as cr_return_quantity] +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(cs_order_number@1, cr_order_number@1), (cs_item_sk@0, cr_item_sk@0)], projection=[cr_return_amount@12, cs_quantity@2, cs_ext_sales_price@3, i_brand_id@4, i_class_id@5, i_category_id@6, i_manufact_id@7, d_year@8, cr_return_quantity@11] +17)--------------------------------CoalescePartitionsExec +18)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_item_sk@3, cs_order_number@4, cs_quantity@5, cs_ext_sales_price@6, i_brand_id@7, i_class_id@8, i_category_id@9, i_manufact_id@10, d_year@1] +19)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +20)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@5, cs_item_sk@6, cs_order_number@7, cs_quantity@8, cs_ext_sales_price@9, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4] +21)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_manufact_id], file_type=vortex, predicate: i_category@12 = Books +22)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_order_number, cs_quantity, cs_ext_sales_price], file_type=vortex +23)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +24)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_return_quantity, cr_return_amount], file_type=vortex +25)--------------------------ProjectionExec: expr=[d_year@7 as d_year, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, ss_quantity@1 - CASE WHEN sr_return_quantity@8 IS NOT NULL THEN sr_return_quantity@8 ELSE 0 END as sales_cnt, ss_ext_sales_price@2 - CASE WHEN __common_expr_2@0 IS NOT NULL THEN __common_expr_2@0 ELSE 0.000000000000000 END as sales_amt] +26)----------------------------ProjectionExec: expr=[CAST(sr_return_amt@0 AS Decimal128(30, 15)) as __common_expr_2, ss_quantity@1 as ss_quantity, ss_ext_sales_price@2 as ss_ext_sales_price, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, d_year@7 as d_year, sr_return_quantity@8 as sr_return_quantity] +27)------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(ss_ticket_number@1, sr_ticket_number@1), (ss_item_sk@0, sr_item_sk@0)], projection=[sr_return_amt@12, ss_quantity@2, ss_ext_sales_price@3, i_brand_id@4, i_class_id@5, i_category_id@6, i_manufact_id@7, d_year@8, sr_return_quantity@11] +28)--------------------------------CoalescePartitionsExec +29)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, ss_ticket_number@4, ss_quantity@5, ss_ext_sales_price@6, i_brand_id@7, i_class_id@8, i_category_id@9, i_manufact_id@10, d_year@1] +30)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +31)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@5, ss_item_sk@6, ss_ticket_number@7, ss_quantity@8, ss_ext_sales_price@9, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4] +32)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_manufact_id], file_type=vortex, predicate: i_category@12 = Books +33)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ticket_number, ss_quantity, ss_ext_sales_price], file_type=vortex +34)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number, sr_return_quantity, sr_return_amt], file_type=vortex +35)--------------------------ProjectionExec: expr=[d_year@7 as d_year, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, ws_quantity@1 - CASE WHEN wr_return_quantity@8 IS NOT NULL THEN wr_return_quantity@8 ELSE 0 END as sales_cnt, ws_ext_sales_price@2 - CASE WHEN __common_expr_3@0 IS NOT NULL THEN __common_expr_3@0 ELSE 0.000000000000000 END as sales_amt] +36)----------------------------ProjectionExec: expr=[CAST(wr_return_amt@12 AS Decimal128(30, 15)) as __common_expr_3, ws_quantity@2 as ws_quantity, ws_ext_sales_price@3 as ws_ext_sales_price, i_brand_id@4 as i_brand_id, i_class_id@5 as i_class_id, i_category_id@6 as i_category_id, i_manufact_id@7 as i_manufact_id, d_year@8 as d_year, wr_return_quantity@11 as wr_return_quantity] +37)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +38)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(ws_order_number@1, wr_order_number@1), (ws_item_sk@0, wr_item_sk@0)] +39)----------------------------------CoalescePartitionsExec +40)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@3, ws_order_number@4, ws_quantity@5, ws_ext_sales_price@6, i_brand_id@7, i_class_id@8, i_category_id@9, i_manufact_id@10, d_year@1] +41)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2002 +42)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@5, ws_item_sk@6, ws_order_number@7, ws_quantity@8, ws_ext_sales_price@9, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4] +43)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_manufact_id], file_type=vortex, predicate: i_category@12 = Books +44)----------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_order_number, ws_quantity, ws_ext_sales_price], file_type=vortex +45)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_item_sk, wr_order_number, wr_return_quantity, wr_return_amt], file_type=vortex +46)--------RepartitionExec: partitioning=Hash([i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4], 4), input_partitions=4 +47)----------ProjectionExec: expr=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id, sum(sales_detail.sales_cnt)@5 as sales_cnt, sum(sales_detail.sales_amt)@6 as sales_amt] +48)------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id], aggr=[sum(sales_detail.sales_cnt), sum(sales_detail.sales_amt)], ordering_mode=PartiallySorted([0]) +49)--------------RepartitionExec: partitioning=Hash([d_year@0, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4], 4), input_partitions=4 +50)----------------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id], aggr=[sum(sales_detail.sales_cnt), sum(sales_detail.sales_amt)], ordering_mode=PartiallySorted([0]) +51)------------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id, sales_cnt@5 as sales_cnt, sales_amt@6 as sales_amt], aggr=[], ordering_mode=PartiallySorted([0]) +52)--------------------RepartitionExec: partitioning=Hash([d_year@0, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4, sales_cnt@5, sales_amt@6], 4), input_partitions=12 +53)----------------------AggregateExec: mode=Partial, gby=[d_year@0 as d_year, i_brand_id@1 as i_brand_id, i_class_id@2 as i_class_id, i_category_id@3 as i_category_id, i_manufact_id@4 as i_manufact_id, sales_cnt@5 as sales_cnt, sales_amt@6 as sales_amt], aggr=[], ordering_mode=PartiallySorted([0]) +54)------------------------UnionExec +55)--------------------------ProjectionExec: expr=[d_year@7 as d_year, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, cs_quantity@1 - CASE WHEN cr_return_quantity@8 IS NOT NULL THEN cr_return_quantity@8 ELSE 0 END as sales_cnt, cs_ext_sales_price@2 - CASE WHEN __common_expr_4@0 IS NOT NULL THEN __common_expr_4@0 ELSE 0.000000000000000 END as sales_amt] +56)----------------------------ProjectionExec: expr=[CAST(cr_return_amount@0 AS Decimal128(30, 15)) as __common_expr_4, cs_quantity@1 as cs_quantity, cs_ext_sales_price@2 as cs_ext_sales_price, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, d_year@7 as d_year, cr_return_quantity@8 as cr_return_quantity] +57)------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(cs_order_number@1, cr_order_number@1), (cs_item_sk@0, cr_item_sk@0)], projection=[cr_return_amount@12, cs_quantity@2, cs_ext_sales_price@3, i_brand_id@4, i_class_id@5, i_category_id@6, i_manufact_id@7, d_year@8, cr_return_quantity@11] +58)--------------------------------CoalescePartitionsExec +59)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_item_sk@3, cs_order_number@4, cs_quantity@5, cs_ext_sales_price@6, i_brand_id@7, i_class_id@8, i_category_id@9, i_manufact_id@10, d_year@1] +60)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +61)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@5, cs_item_sk@6, cs_order_number@7, cs_quantity@8, cs_ext_sales_price@9, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4] +62)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_manufact_id], file_type=vortex, predicate: i_category@12 = Books +63)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_order_number, cs_quantity, cs_ext_sales_price], file_type=vortex +64)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +65)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_return_quantity, cr_return_amount], file_type=vortex +66)--------------------------ProjectionExec: expr=[d_year@7 as d_year, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, ss_quantity@1 - CASE WHEN sr_return_quantity@8 IS NOT NULL THEN sr_return_quantity@8 ELSE 0 END as sales_cnt, ss_ext_sales_price@2 - CASE WHEN __common_expr_5@0 IS NOT NULL THEN __common_expr_5@0 ELSE 0.000000000000000 END as sales_amt] +67)----------------------------ProjectionExec: expr=[CAST(sr_return_amt@0 AS Decimal128(30, 15)) as __common_expr_5, ss_quantity@1 as ss_quantity, ss_ext_sales_price@2 as ss_ext_sales_price, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, d_year@7 as d_year, sr_return_quantity@8 as sr_return_quantity] +68)------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(ss_ticket_number@1, sr_ticket_number@1), (ss_item_sk@0, sr_item_sk@0)], projection=[sr_return_amt@12, ss_quantity@2, ss_ext_sales_price@3, i_brand_id@4, i_class_id@5, i_category_id@6, i_manufact_id@7, d_year@8, sr_return_quantity@11] +69)--------------------------------CoalescePartitionsExec +70)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, ss_ticket_number@4, ss_quantity@5, ss_ext_sales_price@6, i_brand_id@7, i_class_id@8, i_category_id@9, i_manufact_id@10, d_year@1] +71)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +72)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@5, ss_item_sk@6, ss_ticket_number@7, ss_quantity@8, ss_ext_sales_price@9, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4] +73)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_manufact_id], file_type=vortex, predicate: i_category@12 = Books +74)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ticket_number, ss_quantity, ss_ext_sales_price], file_type=vortex +75)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number, sr_return_quantity, sr_return_amt], file_type=vortex +76)--------------------------ProjectionExec: expr=[d_year@7 as d_year, i_brand_id@3 as i_brand_id, i_class_id@4 as i_class_id, i_category_id@5 as i_category_id, i_manufact_id@6 as i_manufact_id, ws_quantity@1 - CASE WHEN wr_return_quantity@8 IS NOT NULL THEN wr_return_quantity@8 ELSE 0 END as sales_cnt, ws_ext_sales_price@2 - CASE WHEN __common_expr_6@0 IS NOT NULL THEN __common_expr_6@0 ELSE 0.000000000000000 END as sales_amt] +77)----------------------------ProjectionExec: expr=[CAST(wr_return_amt@12 AS Decimal128(30, 15)) as __common_expr_6, ws_quantity@2 as ws_quantity, ws_ext_sales_price@3 as ws_ext_sales_price, i_brand_id@4 as i_brand_id, i_class_id@5 as i_class_id, i_category_id@6 as i_category_id, i_manufact_id@7 as i_manufact_id, d_year@8 as d_year, wr_return_quantity@11 as wr_return_quantity] +78)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +79)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Left, on=[(ws_order_number@1, wr_order_number@1), (ws_item_sk@0, wr_item_sk@0)] +80)----------------------------------CoalescePartitionsExec +81)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@3, ws_order_number@4, ws_quantity@5, ws_ext_sales_price@6, i_brand_id@7, i_class_id@8, i_category_id@9, i_manufact_id@10, d_year@1] +82)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2001 +83)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@5, ws_item_sk@6, ws_order_number@7, ws_quantity@8, ws_ext_sales_price@9, i_brand_id@1, i_class_id@2, i_category_id@3, i_manufact_id@4] +84)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand_id, i_class_id, i_category_id, i_manufact_id], file_type=vortex, predicate: i_category@12 = Books +85)----------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_order_number, ws_quantity, ws_ext_sales_price], file_type=vortex +86)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_item_sk, wr_order_number, wr_return_quantity, wr_return_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q76.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q76.slt.no new file mode 100644 index 00000000000..89632d78322 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q76.slt.no @@ -0,0 +1,126 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT channel, + col_name, + d_year, + d_qoy, + i_category, + COUNT(*) sales_cnt, + SUM(ext_sales_price) sales_amt +FROM + ( SELECT 'store' AS channel, + 'ss_store_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, + item, + date_dim + WHERE ss_store_sk IS NULL + AND ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + UNION ALL SELECT 'web' AS channel, + 'ws_ship_customer_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, + item, + date_dim + WHERE ws_ship_customer_sk IS NULL + AND ws_sold_date_sk=d_date_sk + AND ws_item_sk=i_item_sk + UNION ALL SELECT 'catalog' AS channel, + 'cs_ship_addr_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, + item, + date_dim + WHERE cs_ship_addr_sk IS NULL + AND cs_sold_date_sk=d_date_sk + AND cs_item_sk=i_item_sk) foo +GROUP BY channel, + col_name, + d_year, + d_qoy, + i_category +ORDER BY channel NULLS FIRST, + col_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: foo.channel ASC NULLS FIRST, foo.col_name ASC NULLS FIRST, foo.d_year ASC NULLS FIRST, foo.d_qoy ASC NULLS FIRST, foo.i_category ASC NULLS FIRST, fetch=100 +02)--Projection: foo.channel, foo.col_name, foo.d_year, foo.d_qoy, foo.i_category, count(Int64(1)) AS count(*) AS sales_cnt, sum(foo.ext_sales_price) AS sales_amt +03)----Aggregate: groupBy=[[foo.channel, foo.col_name, foo.d_year, foo.d_qoy, foo.i_category]], aggr=[[count(Int64(1)), sum(foo.ext_sales_price)]] +04)------SubqueryAlias: foo +05)--------Union +06)----------Projection: Utf8("store") AS channel, Utf8("ss_store_sk") AS col_name, date_dim.d_year, date_dim.d_qoy, item.i_category, store_sales.ss_ext_sales_price AS ext_sales_price +07)------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +08)--------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_ext_sales_price, item.i_category +09)----------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +10)------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_ext_sales_price +11)--------------------Filter: store_sales.ss_store_sk IS NULL +12)----------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_ext_sales_price], partial_filters=[store_sales.ss_store_sk IS NULL] +13)------------------TableScan: item projection=[i_item_sk, i_category] +14)--------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy] +15)----------Projection: Utf8("web") AS channel, Utf8("ws_ship_customer_sk") AS col_name, date_dim.d_year, date_dim.d_qoy, item.i_category, web_sales.ws_ext_sales_price AS ext_sales_price +16)------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +17)--------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ext_sales_price, item.i_category +18)----------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +19)------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_ext_sales_price +20)--------------------Filter: web_sales.ws_ship_customer_sk IS NULL +21)----------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_ship_customer_sk, ws_ext_sales_price], partial_filters=[web_sales.ws_ship_customer_sk IS NULL] +22)------------------TableScan: item projection=[i_item_sk, i_category] +23)--------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy] +24)----------Projection: Utf8("catalog") AS channel, Utf8("cs_ship_addr_sk") AS col_name, date_dim.d_year, date_dim.d_qoy, item.i_category, catalog_sales.cs_ext_sales_price AS ext_sales_price +25)------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +26)--------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ext_sales_price, item.i_category +27)----------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +28)------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_item_sk, catalog_sales.cs_ext_sales_price +29)--------------------Filter: catalog_sales.cs_ship_addr_sk IS NULL +30)----------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ship_addr_sk, cs_item_sk, cs_ext_sales_price], partial_filters=[catalog_sales.cs_ship_addr_sk IS NULL] +31)------------------TableScan: item projection=[i_item_sk, i_category] +32)--------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy] +physical_plan +01)SortPreservingMergeExec: [channel@0 ASC, col_name@1 ASC, d_year@2 ASC, d_qoy@3 ASC, i_category@4 ASC], fetch=100 +02)--ProjectionExec: expr=[channel@0 as channel, col_name@1 as col_name, d_year@2 as d_year, d_qoy@3 as d_qoy, i_category@4 as i_category, count(Int64(1))@5 as sales_cnt, sum(foo.ext_sales_price)@6 as sales_amt] +03)----SortExec: TopK(fetch=100), expr=[channel@0 ASC, col_name@1 ASC, d_year@2 ASC, d_qoy@3 ASC, i_category@4 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[channel@0 as channel, col_name@1 as col_name, d_year@2 as d_year, d_qoy@3 as d_qoy, i_category@4 as i_category], aggr=[count(Int64(1)), sum(foo.ext_sales_price)] +05)--------RepartitionExec: partitioning=Hash([channel@0, col_name@1, d_year@2, d_qoy@3, i_category@4], 4), input_partitions=12 +06)----------AggregateExec: mode=Partial, gby=[channel@0 as channel, col_name@1 as col_name, d_year@2 as d_year, d_qoy@3 as d_qoy, i_category@4 as i_category], aggr=[count(Int64(1)), sum(foo.ext_sales_price)], ordering_mode=PartiallySorted([0, 1]) +07)------------UnionExec +08)--------------ProjectionExec: expr=[store as channel, ss_store_sk as col_name, d_year@0 as d_year, d_qoy@1 as d_qoy, i_category@2 as i_category, ss_ext_sales_price@3 as ext_sales_price] +09)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ss_sold_date_sk@0, d_date_sk@0)], projection=[d_year@4, d_qoy@5, i_category@2, ss_ext_sales_price@1] +10)------------------CoalescePartitionsExec +11)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@2, ss_ext_sales_price@4, i_category@1] +12)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_category], file_type=vortex +13)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex, predicate: ss_store_sk@7 IS NULL +14)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +15)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex +16)--------------ProjectionExec: expr=[web as channel, ws_ship_customer_sk as col_name, d_year@0 as d_year, d_qoy@1 as d_qoy, i_category@2 as i_category, ws_ext_sales_price@3 as ext_sales_price] +17)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ws_sold_date_sk@0, d_date_sk@0)], projection=[d_year@4, d_qoy@5, i_category@2, ws_ext_sales_price@1] +18)------------------CoalescePartitionsExec +19)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@2, ws_ext_sales_price@4, i_category@1] +20)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_category], file_type=vortex +21)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_ext_sales_price], file_type=vortex, predicate: ws_ship_customer_sk@8 IS NULL +22)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +23)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex +24)--------------ProjectionExec: expr=[catalog as channel, cs_ship_addr_sk as col_name, d_year@0 as d_year, d_qoy@1 as d_qoy, i_category@2 as i_category, cs_ext_sales_price@3 as ext_sales_price] +25)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_sold_date_sk@0, d_date_sk@0)], projection=[d_year@4, d_qoy@5, i_category@2, cs_ext_sales_price@1] +26)------------------CoalescePartitionsExec +27)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@1)], projection=[cs_sold_date_sk@2, cs_ext_sales_price@4, i_category@1] +28)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_category], file_type=vortex +29)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_item_sk, cs_ext_sales_price], file_type=vortex, predicate: cs_ship_addr_sk@10 IS NULL +30)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +31)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year, d_qoy], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q77.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q77.slt.no new file mode 100644 index 00000000000..1f1c8dde519 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q77.slt.no @@ -0,0 +1,252 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ss AS + (SELECT s_store_sk, + sum(ss_ext_sales_price) AS sales, + sum(ss_net_profit) AS profit + FROM store_sales, + date_dim, + store + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk) , + sr AS + (SELECT s_store_sk, + sum(sr_return_amt) AS returns_, + sum(sr_net_loss) AS profit_loss + FROM store_returns, + date_dim, + store + WHERE sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), + cs AS + (SELECT cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cs_call_center_sk), + cr AS + (SELECT cr_call_center_sk, + sum(cr_return_amount) AS returns_, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, + date_dim + WHERE cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cr_call_center_sk ), + ws AS + (SELECT wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, + date_dim, + web_page + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), + wr AS + (SELECT wp_web_page_sk, + sum(wr_return_amt) AS returns_, + sum(wr_net_loss) AS profit_loss + FROM web_returns, + date_dim, + web_page + WHERE wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + ss.s_store_sk AS id , + sales , + coalesce(returns_, 0) AS returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ss + LEFT JOIN sr ON ss.s_store_sk = sr.s_store_sk + UNION ALL SELECT 'catalog channel' AS channel , + cs_call_center_sk AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM cs , + cr + UNION ALL SELECT 'web channel' AS channel , + ws.wp_web_page_sk AS id , + sales , + coalesce(returns_, 0) returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ws + LEFT JOIN wr ON ws.wp_web_page_sk = wr.wp_web_page_sk ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST, + returns_ DESC +LIMIT 100; +---- +logical_plan +01)Sort: x.channel ASC NULLS FIRST, x.id ASC NULLS FIRST, returns_ DESC NULLS FIRST, fetch=100 +02)--Projection: x.channel, x.id, sum(x.sales) AS sales, sum(x.returns_) AS returns_, sum(x.profit) AS profit +03)----Aggregate: groupBy=[[ROLLUP (x.channel, x.id)]], aggr=[[sum(x.sales), sum(x.returns_), sum(x.profit)]] +04)------SubqueryAlias: x +05)--------Union +06)----------Projection: Utf8("store channel") AS channel, ss.s_store_sk AS id, ss.sales, CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE Decimal128(0.00,22,2) END AS returns_, ss.profit - CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE Decimal128(0.00,22,2) END AS profit +07)------------Projection: CAST(sr.returns_ AS Decimal128(22, 2)) AS __common_expr_1, CAST(sr.profit_loss AS Decimal128(22, 2)) AS __common_expr_2, ss.s_store_sk, ss.sales, ss.profit +08)--------------Left Join: ss.s_store_sk = sr.s_store_sk +09)----------------SubqueryAlias: ss +10)------------------Projection: store.s_store_sk, sum(store_sales.ss_ext_sales_price) AS sales, sum(store_sales.ss_net_profit) AS profit +11)--------------------Aggregate: groupBy=[[store.s_store_sk]], aggr=[[sum(store_sales.ss_ext_sales_price), sum(store_sales.ss_net_profit)]] +12)----------------------Projection: store_sales.ss_ext_sales_price, store_sales.ss_net_profit, store.s_store_sk +13)------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +14)--------------------------Projection: store_sales.ss_store_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit +15)----------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +16)------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit] +17)------------------------------Projection: date_dim.d_date_sk +18)--------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +19)----------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +20)--------------------------TableScan: store projection=[s_store_sk] +21)----------------SubqueryAlias: sr +22)------------------Projection: store.s_store_sk, sum(store_returns.sr_return_amt) AS returns_, sum(store_returns.sr_net_loss) AS profit_loss +23)--------------------Aggregate: groupBy=[[store.s_store_sk]], aggr=[[sum(store_returns.sr_return_amt), sum(store_returns.sr_net_loss)]] +24)----------------------Projection: store_returns.sr_return_amt, store_returns.sr_net_loss, store.s_store_sk +25)------------------------Inner Join: store_returns.sr_store_sk = store.s_store_sk +26)--------------------------Projection: store_returns.sr_store_sk, store_returns.sr_return_amt, store_returns.sr_net_loss +27)----------------------------Inner Join: store_returns.sr_returned_date_sk = date_dim.d_date_sk +28)------------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_store_sk, sr_return_amt, sr_net_loss] +29)------------------------------Projection: date_dim.d_date_sk +30)--------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +31)----------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +32)--------------------------TableScan: store projection=[s_store_sk] +33)----------Projection: Utf8("catalog channel") AS channel, cs.cs_call_center_sk AS id, cs.sales, CAST(cr.returns_ AS Decimal128(22, 2)) AS returns_, CAST(cs.profit - cr.profit_loss AS Decimal128(23, 2)) AS profit +34)------------Cross Join: +35)--------------SubqueryAlias: cs +36)----------------Projection: catalog_sales.cs_call_center_sk, sum(catalog_sales.cs_ext_sales_price) AS sales, sum(catalog_sales.cs_net_profit) AS profit +37)------------------Aggregate: groupBy=[[catalog_sales.cs_call_center_sk]], aggr=[[sum(catalog_sales.cs_ext_sales_price), sum(catalog_sales.cs_net_profit)]] +38)--------------------Projection: catalog_sales.cs_call_center_sk, catalog_sales.cs_ext_sales_price, catalog_sales.cs_net_profit +39)----------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +40)------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_call_center_sk, cs_ext_sales_price, cs_net_profit] +41)------------------------Projection: date_dim.d_date_sk +42)--------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +43)----------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +44)--------------SubqueryAlias: cr +45)----------------Projection: sum(catalog_returns.cr_return_amount) AS returns_, sum(catalog_returns.cr_net_loss) AS profit_loss +46)------------------Aggregate: groupBy=[[catalog_returns.cr_call_center_sk]], aggr=[[sum(catalog_returns.cr_return_amount), sum(catalog_returns.cr_net_loss)]] +47)--------------------Projection: catalog_returns.cr_call_center_sk, catalog_returns.cr_return_amount, catalog_returns.cr_net_loss +48)----------------------Inner Join: catalog_returns.cr_returned_date_sk = date_dim.d_date_sk +49)------------------------TableScan: catalog_returns projection=[cr_returned_date_sk, cr_call_center_sk, cr_return_amount, cr_net_loss] +50)------------------------Projection: date_dim.d_date_sk +51)--------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +52)----------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +53)----------Projection: Utf8("web channel") AS channel, ws.wp_web_page_sk AS id, ws.sales, CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE Decimal128(0.00,22,2) END AS returns_, ws.profit - CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE Decimal128(0.00,22,2) END AS profit +54)------------Projection: CAST(wr.returns_ AS Decimal128(22, 2)) AS __common_expr_3, CAST(wr.profit_loss AS Decimal128(22, 2)) AS __common_expr_4, ws.wp_web_page_sk, ws.sales, ws.profit +55)--------------Left Join: ws.wp_web_page_sk = wr.wp_web_page_sk +56)----------------SubqueryAlias: ws +57)------------------Projection: web_page.wp_web_page_sk, sum(web_sales.ws_ext_sales_price) AS sales, sum(web_sales.ws_net_profit) AS profit +58)--------------------Aggregate: groupBy=[[web_page.wp_web_page_sk]], aggr=[[sum(web_sales.ws_ext_sales_price), sum(web_sales.ws_net_profit)]] +59)----------------------Projection: web_sales.ws_ext_sales_price, web_sales.ws_net_profit, web_page.wp_web_page_sk +60)------------------------Inner Join: web_sales.ws_web_page_sk = web_page.wp_web_page_sk +61)--------------------------Projection: web_sales.ws_web_page_sk, web_sales.ws_ext_sales_price, web_sales.ws_net_profit +62)----------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +63)------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_web_page_sk, ws_ext_sales_price, ws_net_profit] +64)------------------------------Projection: date_dim.d_date_sk +65)--------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +66)----------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +67)--------------------------TableScan: web_page projection=[wp_web_page_sk] +68)----------------SubqueryAlias: wr +69)------------------Projection: web_page.wp_web_page_sk, sum(web_returns.wr_return_amt) AS returns_, sum(web_returns.wr_net_loss) AS profit_loss +70)--------------------Aggregate: groupBy=[[web_page.wp_web_page_sk]], aggr=[[sum(web_returns.wr_return_amt), sum(web_returns.wr_net_loss)]] +71)----------------------Projection: web_returns.wr_return_amt, web_returns.wr_net_loss, web_page.wp_web_page_sk +72)------------------------Inner Join: web_returns.wr_web_page_sk = web_page.wp_web_page_sk +73)--------------------------Projection: web_returns.wr_web_page_sk, web_returns.wr_return_amt, web_returns.wr_net_loss +74)----------------------------Inner Join: web_returns.wr_returned_date_sk = date_dim.d_date_sk +75)------------------------------TableScan: web_returns projection=[wr_returned_date_sk, wr_web_page_sk, wr_return_amt, wr_net_loss] +76)------------------------------Projection: date_dim.d_date_sk +77)--------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +78)----------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +79)--------------------------TableScan: web_page projection=[wp_web_page_sk] +physical_plan +01)SortPreservingMergeExec: [channel@0 ASC, id@1 ASC, returns_@3 DESC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[channel@0 ASC, id@1 ASC, returns_@3 DESC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[channel@0 as channel, id@1 as id, sum(x.sales)@3 as sales, sum(x.returns_)@4 as returns_, sum(x.profit)@5 as profit] +04)------AggregateExec: mode=FinalPartitioned, gby=[channel@0 as channel, id@1 as id, __grouping_id@2 as __grouping_id], aggr=[sum(x.sales), sum(x.returns_), sum(x.profit)] +05)--------RepartitionExec: partitioning=Hash([channel@0, id@1, __grouping_id@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[(NULL as channel, NULL as id), (channel@0 as channel, NULL as id), (channel@0 as channel, id@1 as id)], aggr=[sum(x.sales), sum(x.returns_), sum(x.profit)] +07)------------InterleaveExec +08)--------------ProjectionExec: expr=[store channel as channel, s_store_sk@2 as id, sales@3 as sales, CAST(CASE WHEN __common_expr_1@0 IS NOT NULL THEN __common_expr_1@0 ELSE 0.00 END AS Decimal128(22, 2)) as returns_, profit@4 - CASE WHEN __common_expr_2@1 IS NOT NULL THEN __common_expr_2@1 ELSE 0.00 END as profit] +09)----------------ProjectionExec: expr=[CAST(returns_@0 AS Decimal128(22, 2)) as __common_expr_1, CAST(profit_loss@1 AS Decimal128(22, 2)) as __common_expr_2, s_store_sk@2 as s_store_sk, sales@3 as sales, profit@4 as profit] +10)------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(s_store_sk@0, s_store_sk@0)], projection=[returns_@1, profit_loss@2, s_store_sk@3, sales@4, profit@5] +11)--------------------CoalescePartitionsExec +12)----------------------ProjectionExec: expr=[s_store_sk@0 as s_store_sk, sum(store_returns.sr_return_amt)@1 as returns_, sum(store_returns.sr_net_loss)@2 as profit_loss] +13)------------------------AggregateExec: mode=FinalPartitioned, gby=[s_store_sk@0 as s_store_sk], aggr=[sum(store_returns.sr_return_amt), sum(store_returns.sr_net_loss)] +14)--------------------------RepartitionExec: partitioning=Hash([s_store_sk@0], 4), input_partitions=4 +15)----------------------------AggregateExec: mode=Partial, gby=[s_store_sk@2 as s_store_sk], aggr=[sum(store_returns.sr_return_amt), sum(store_returns.sr_net_loss)] +16)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, sr_store_sk@0)], projection=[sr_return_amt@2, sr_net_loss@3, s_store_sk@0] +17)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex +18)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, sr_returned_date_sk@0)], projection=[sr_store_sk@2, sr_return_amt@3, sr_net_loss@4] +19)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +20)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_store_sk, sr_return_amt, sr_net_loss], file_type=vortex +21)--------------------ProjectionExec: expr=[s_store_sk@0 as s_store_sk, sum(store_sales.ss_ext_sales_price)@1 as sales, sum(store_sales.ss_net_profit)@2 as profit] +22)----------------------AggregateExec: mode=FinalPartitioned, gby=[s_store_sk@0 as s_store_sk], aggr=[sum(store_sales.ss_ext_sales_price), sum(store_sales.ss_net_profit)] +23)------------------------RepartitionExec: partitioning=Hash([s_store_sk@0], 4), input_partitions=4 +24)--------------------------AggregateExec: mode=Partial, gby=[s_store_sk@2 as s_store_sk], aggr=[sum(store_sales.ss_ext_sales_price), sum(store_sales.ss_net_profit)] +25)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[ss_ext_sales_price@2, ss_net_profit@3, s_store_sk@0] +26)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex +27)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_store_sk@2, ss_ext_sales_price@3, ss_net_profit@4] +28)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +29)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_ext_sales_price, ss_net_profit], file_type=vortex +30)--------------ProjectionExec: expr=[catalog channel as channel, cs_call_center_sk@2 as id, sales@3 as sales, CAST(returns_@0 AS Decimal128(22, 2)) as returns_, CAST(profit@4 - profit_loss@1 AS Decimal128(23, 2)) as profit] +31)----------------CrossJoinExec +32)------------------CoalescePartitionsExec +33)--------------------ProjectionExec: expr=[sum(catalog_returns.cr_return_amount)@1 as returns_, sum(catalog_returns.cr_net_loss)@2 as profit_loss] +34)----------------------AggregateExec: mode=FinalPartitioned, gby=[cr_call_center_sk@0 as cr_call_center_sk], aggr=[sum(catalog_returns.cr_return_amount), sum(catalog_returns.cr_net_loss)] +35)------------------------RepartitionExec: partitioning=Hash([cr_call_center_sk@0], 4), input_partitions=4 +36)--------------------------AggregateExec: mode=Partial, gby=[cr_call_center_sk@0 as cr_call_center_sk], aggr=[sum(catalog_returns.cr_return_amount), sum(catalog_returns.cr_net_loss)] +37)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cr_returned_date_sk@0)], projection=[cr_call_center_sk@2, cr_return_amount@3, cr_net_loss@4] +38)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +39)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +40)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_returned_date_sk, cr_call_center_sk, cr_return_amount, cr_net_loss], file_type=vortex +41)------------------ProjectionExec: expr=[cs_call_center_sk@0 as cs_call_center_sk, sum(catalog_sales.cs_ext_sales_price)@1 as sales, sum(catalog_sales.cs_net_profit)@2 as profit] +42)--------------------AggregateExec: mode=FinalPartitioned, gby=[cs_call_center_sk@0 as cs_call_center_sk], aggr=[sum(catalog_sales.cs_ext_sales_price), sum(catalog_sales.cs_net_profit)] +43)----------------------RepartitionExec: partitioning=Hash([cs_call_center_sk@0], 4), input_partitions=4 +44)------------------------AggregateExec: mode=Partial, gby=[cs_call_center_sk@0 as cs_call_center_sk], aggr=[sum(catalog_sales.cs_ext_sales_price), sum(catalog_sales.cs_net_profit)] +45)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_call_center_sk@2, cs_ext_sales_price@3, cs_net_profit@4] +46)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +47)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_call_center_sk, cs_ext_sales_price, cs_net_profit], file_type=vortex +48)--------------ProjectionExec: expr=[web channel as channel, wp_web_page_sk@2 as id, sales@3 as sales, CAST(CASE WHEN __common_expr_3@0 IS NOT NULL THEN __common_expr_3@0 ELSE 0.00 END AS Decimal128(22, 2)) as returns_, profit@4 - CASE WHEN __common_expr_4@1 IS NOT NULL THEN __common_expr_4@1 ELSE 0.00 END as profit] +49)----------------ProjectionExec: expr=[CAST(returns_@0 AS Decimal128(22, 2)) as __common_expr_3, CAST(profit_loss@1 AS Decimal128(22, 2)) as __common_expr_4, wp_web_page_sk@2 as wp_web_page_sk, sales@3 as sales, profit@4 as profit] +50)------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(wp_web_page_sk@0, wp_web_page_sk@0)], projection=[returns_@1, profit_loss@2, wp_web_page_sk@3, sales@4, profit@5] +51)--------------------CoalescePartitionsExec +52)----------------------ProjectionExec: expr=[wp_web_page_sk@0 as wp_web_page_sk, sum(web_returns.wr_return_amt)@1 as returns_, sum(web_returns.wr_net_loss)@2 as profit_loss] +53)------------------------AggregateExec: mode=FinalPartitioned, gby=[wp_web_page_sk@0 as wp_web_page_sk], aggr=[sum(web_returns.wr_return_amt), sum(web_returns.wr_net_loss)] +54)--------------------------RepartitionExec: partitioning=Hash([wp_web_page_sk@0], 4), input_partitions=4 +55)----------------------------AggregateExec: mode=Partial, gby=[wp_web_page_sk@2 as wp_web_page_sk], aggr=[sum(web_returns.wr_return_amt), sum(web_returns.wr_net_loss)] +56)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wp_web_page_sk@0, wr_web_page_sk@0)], projection=[wr_return_amt@2, wr_net_loss@3, wp_web_page_sk@0] +57)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_page.vortex]]}, projection=[wp_web_page_sk], file_type=vortex +58)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +59)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, wr_returned_date_sk@0)], projection=[wr_web_page_sk@2, wr_return_amt@3, wr_net_loss@4] +60)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +61)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_returned_date_sk, wr_web_page_sk, wr_return_amt, wr_net_loss], file_type=vortex +62)--------------------ProjectionExec: expr=[wp_web_page_sk@0 as wp_web_page_sk, sum(web_sales.ws_ext_sales_price)@1 as sales, sum(web_sales.ws_net_profit)@2 as profit] +63)----------------------AggregateExec: mode=FinalPartitioned, gby=[wp_web_page_sk@0 as wp_web_page_sk], aggr=[sum(web_sales.ws_ext_sales_price), sum(web_sales.ws_net_profit)] +64)------------------------RepartitionExec: partitioning=Hash([wp_web_page_sk@0], 4), input_partitions=4 +65)--------------------------AggregateExec: mode=Partial, gby=[wp_web_page_sk@2 as wp_web_page_sk], aggr=[sum(web_sales.ws_ext_sales_price), sum(web_sales.ws_net_profit)] +66)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wp_web_page_sk@0, ws_web_page_sk@0)], projection=[ws_ext_sales_price@2, ws_net_profit@3, wp_web_page_sk@0] +67)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_page.vortex]]}, projection=[wp_web_page_sk], file_type=vortex +68)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_web_page_sk@2, ws_ext_sales_price@3, ws_net_profit@4] +69)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +70)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_web_page_sk, ws_ext_sales_price, ws_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q78.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q78.slt.no new file mode 100644 index 00000000000..be368b84eb9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q78.slt.no @@ -0,0 +1,171 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ws AS + (SELECT d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + sum(ws_quantity) ws_qty, + sum(ws_wholesale_cost) ws_wc, + sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN web_returns ON wr_order_number=ws_order_number + AND ws_item_sk=wr_item_sk + JOIN date_dim ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, + ws_item_sk, + ws_bill_customer_sk ), + cs AS + (SELECT d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + sum(cs_quantity) cs_qty, + sum(cs_wholesale_cost) cs_wc, + sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN catalog_returns ON cr_order_number=cs_order_number + AND cs_item_sk=cr_item_sk + JOIN date_dim ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, + cs_item_sk, + cs_bill_customer_sk ), + ss AS + (SELECT d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + sum(ss_quantity) ss_qty, + sum(ss_wholesale_cost) ss_wc, + sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN store_returns ON sr_ticket_number=ss_ticket_number + AND ss_item_sk=sr_item_sk + JOIN date_dim ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, + ss_item_sk, + ss_customer_sk ) +SELECT ss_sold_year, + ss_item_sk, + ss_customer_sk, + round((ss_qty*1.00)/(coalesce(ws_qty,0)+coalesce(cs_qty,0)),2) ratio, + ss_qty store_qty, + ss_wc store_wholesale_cost, + ss_sp store_sales_price, + coalesce(ws_qty,0)+coalesce(cs_qty,0) other_chan_qty, + coalesce(ws_wc,0)+coalesce(cs_wc,0) other_chan_wholesale_cost, + coalesce(ws_sp,0)+coalesce(cs_sp,0) other_chan_sales_price +FROM ss +LEFT JOIN ws ON (ws_sold_year=ss_sold_year + AND ws_item_sk=ss_item_sk + AND ws_customer_sk=ss_customer_sk) +LEFT JOIN cs ON (cs_sold_year=ss_sold_year + AND cs_item_sk=ss_item_sk + AND cs_customer_sk=ss_customer_sk) +WHERE (coalesce(ws_qty,0)>0 + OR coalesce(cs_qty, 0)>0) + AND ss_sold_year=2000 +ORDER BY ss_sold_year, + ss_item_sk, + ss_customer_sk, + ss_qty DESC, + ss_wc DESC, + ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + ratio +LIMIT 100; +---- +logical_plan +01)Sort: ss.ss_sold_year ASC NULLS LAST, ss.ss_item_sk ASC NULLS LAST, ss.ss_customer_sk ASC NULLS LAST, other_chan_qty ASC NULLS LAST, other_chan_wholesale_cost ASC NULLS LAST, other_chan_sales_price ASC NULLS LAST, ratio ASC NULLS LAST, fetch=100 +02)--Projection: ss.ss_sold_year, ss.ss_item_sk, ss.ss_customer_sk, round(CAST(ss.ss_qty AS Float64) / CAST(__common_expr_1 AS Float64), Int32(2)) AS ratio, ss.ss_qty AS store_qty, ss.ss_wc AS store_wholesale_cost, ss.ss_sp AS store_sales_price, __common_expr_1 AS other_chan_qty, CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE Decimal128(0.00,22,2) END + CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE Decimal128(0.00,22,2) END AS other_chan_wholesale_cost, CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE Decimal128(0.00,22,2) END + CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE Decimal128(0.00,22,2) END AS other_chan_sales_price +03)----Projection: CASE WHEN ws.ws_qty IS NOT NULL THEN ws.ws_qty ELSE Int64(0) END + CASE WHEN cs.cs_qty IS NOT NULL THEN cs.cs_qty ELSE Int64(0) END AS __common_expr_1, CAST(ws.ws_wc AS Decimal128(22, 2)) AS __common_expr_2, CAST(cs.cs_wc AS Decimal128(22, 2)) AS __common_expr_3, CAST(ws.ws_sp AS Decimal128(22, 2)) AS __common_expr_4, CAST(cs.cs_sp AS Decimal128(22, 2)) AS __common_expr_5, ss.ss_sold_year, ss.ss_item_sk, ss.ss_customer_sk, ss.ss_qty, ss.ss_wc, ss.ss_sp +04)------Filter: CASE WHEN ws.ws_qty IS NOT NULL THEN ws.ws_qty ELSE Int64(0) END > Int64(0) OR CASE WHEN cs.cs_qty IS NOT NULL THEN cs.cs_qty ELSE Int64(0) END > Int64(0) +05)--------Projection: ss.ss_sold_year, ss.ss_item_sk, ss.ss_customer_sk, ss.ss_qty, ss.ss_wc, ss.ss_sp, ws.ws_qty, ws.ws_wc, ws.ws_sp, cs.cs_qty, cs.cs_wc, cs.cs_sp +06)----------Left Join: ss.ss_sold_year = cs.cs_sold_year, ss.ss_item_sk = cs.cs_item_sk, ss.ss_customer_sk = cs.cs_customer_sk +07)------------Projection: ss.ss_sold_year, ss.ss_item_sk, ss.ss_customer_sk, ss.ss_qty, ss.ss_wc, ss.ss_sp, ws.ws_qty, ws.ws_wc, ws.ws_sp +08)--------------Left Join: ss.ss_sold_year = ws.ws_sold_year, ss.ss_item_sk = ws.ws_item_sk, ss.ss_customer_sk = ws.ws_customer_sk +09)----------------SubqueryAlias: ss +10)------------------Projection: date_dim.d_year AS ss_sold_year, store_sales.ss_item_sk, store_sales.ss_customer_sk, sum(store_sales.ss_quantity) AS ss_qty, sum(store_sales.ss_wholesale_cost) AS ss_wc, sum(store_sales.ss_sales_price) AS ss_sp +11)--------------------Aggregate: groupBy=[[date_dim.d_year, store_sales.ss_item_sk, store_sales.ss_customer_sk]], aggr=[[sum(store_sales.ss_quantity), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_sales_price)]] +12)----------------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_quantity, store_sales.ss_wholesale_cost, store_sales.ss_sales_price, date_dim.d_year +13)------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +14)--------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_quantity, store_sales.ss_wholesale_cost, store_sales.ss_sales_price +15)----------------------------Filter: store_returns.sr_ticket_number IS NULL +16)------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_customer_sk, store_sales.ss_quantity, store_sales.ss_wholesale_cost, store_sales.ss_sales_price, store_returns.sr_ticket_number +17)--------------------------------Left Join: store_sales.ss_ticket_number = store_returns.sr_ticket_number, store_sales.ss_item_sk = store_returns.sr_item_sk +18)----------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_ticket_number, ss_quantity, ss_wholesale_cost, ss_sales_price] +19)----------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number] +20)--------------------------Filter: date_dim.d_year = Int64(2000) +21)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +22)----------------SubqueryAlias: ws +23)------------------Projection: date_dim.d_year AS ws_sold_year, web_sales.ws_item_sk, web_sales.ws_bill_customer_sk AS ws_customer_sk, sum(web_sales.ws_quantity) AS ws_qty, sum(web_sales.ws_wholesale_cost) AS ws_wc, sum(web_sales.ws_sales_price) AS ws_sp +24)--------------------Aggregate: groupBy=[[date_dim.d_year, web_sales.ws_item_sk, web_sales.ws_bill_customer_sk]], aggr=[[sum(web_sales.ws_quantity), sum(web_sales.ws_wholesale_cost), sum(web_sales.ws_sales_price)]] +25)----------------------Projection: web_sales.ws_item_sk, web_sales.ws_bill_customer_sk, web_sales.ws_quantity, web_sales.ws_wholesale_cost, web_sales.ws_sales_price, date_dim.d_year +26)------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +27)--------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_bill_customer_sk, web_sales.ws_quantity, web_sales.ws_wholesale_cost, web_sales.ws_sales_price +28)----------------------------Filter: web_returns.wr_order_number IS NULL +29)------------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_bill_customer_sk, web_sales.ws_quantity, web_sales.ws_wholesale_cost, web_sales.ws_sales_price, web_returns.wr_order_number +30)--------------------------------Left Join: web_sales.ws_order_number = web_returns.wr_order_number, web_sales.ws_item_sk = web_returns.wr_item_sk +31)----------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk, ws_order_number, ws_quantity, ws_wholesale_cost, ws_sales_price] +32)----------------------------------TableScan: web_returns projection=[wr_item_sk, wr_order_number] +33)--------------------------Filter: date_dim.d_year = Int64(2000) +34)----------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +35)------------SubqueryAlias: cs +36)--------------Projection: date_dim.d_year AS cs_sold_year, catalog_sales.cs_item_sk, catalog_sales.cs_bill_customer_sk AS cs_customer_sk, sum(catalog_sales.cs_quantity) AS cs_qty, sum(catalog_sales.cs_wholesale_cost) AS cs_wc, sum(catalog_sales.cs_sales_price) AS cs_sp +37)----------------Aggregate: groupBy=[[date_dim.d_year, catalog_sales.cs_item_sk, catalog_sales.cs_bill_customer_sk]], aggr=[[sum(catalog_sales.cs_quantity), sum(catalog_sales.cs_wholesale_cost), sum(catalog_sales.cs_sales_price)]] +38)------------------Projection: catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_wholesale_cost, catalog_sales.cs_sales_price, date_dim.d_year +39)--------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +40)----------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_wholesale_cost, catalog_sales.cs_sales_price +41)------------------------Filter: catalog_returns.cr_order_number IS NULL +42)--------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk, catalog_sales.cs_quantity, catalog_sales.cs_wholesale_cost, catalog_sales.cs_sales_price, catalog_returns.cr_order_number +43)----------------------------Left Join: catalog_sales.cs_order_number = catalog_returns.cr_order_number, catalog_sales.cs_item_sk = catalog_returns.cr_item_sk +44)------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_order_number, cs_quantity, cs_wholesale_cost, cs_sales_price] +45)------------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number] +46)----------------------Filter: date_dim.d_year = Int64(2000) +47)------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +physical_plan +01)SortPreservingMergeExec: [ss_sold_year@0 ASC NULLS LAST, ss_item_sk@1 ASC NULLS LAST, ss_customer_sk@2 ASC NULLS LAST, other_chan_qty@7 ASC NULLS LAST, other_chan_wholesale_cost@8 ASC NULLS LAST, other_chan_sales_price@9 ASC NULLS LAST, ratio@3 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[ss_item_sk@1 ASC NULLS LAST, ss_customer_sk@2 ASC NULLS LAST, other_chan_qty@7 ASC NULLS LAST, other_chan_wholesale_cost@8 ASC NULLS LAST, other_chan_sales_price@9 ASC NULLS LAST, ratio@3 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[ss_sold_year@5 as ss_sold_year, ss_item_sk@6 as ss_item_sk, ss_customer_sk@7 as ss_customer_sk, round(CAST(ss_qty@8 AS Float64) / CAST(__common_expr_1@0 AS Float64), 2) as ratio, ss_qty@8 as store_qty, ss_wc@9 as store_wholesale_cost, ss_sp@10 as store_sales_price, __common_expr_1@0 as other_chan_qty, CASE WHEN __common_expr_2@1 IS NOT NULL THEN __common_expr_2@1 ELSE 0.00 END + CASE WHEN __common_expr_3@2 IS NOT NULL THEN __common_expr_3@2 ELSE 0.00 END as other_chan_wholesale_cost, CASE WHEN __common_expr_4@3 IS NOT NULL THEN __common_expr_4@3 ELSE 0.00 END + CASE WHEN __common_expr_5@4 IS NOT NULL THEN __common_expr_5@4 ELSE 0.00 END as other_chan_sales_price] +04)------ProjectionExec: expr=[CASE WHEN ws_qty@6 IS NOT NULL THEN ws_qty@6 ELSE 0 END + CASE WHEN cs_qty@9 IS NOT NULL THEN cs_qty@9 ELSE 0 END as __common_expr_1, CAST(ws_wc@7 AS Decimal128(22, 2)) as __common_expr_2, CAST(cs_wc@10 AS Decimal128(22, 2)) as __common_expr_3, CAST(ws_sp@8 AS Decimal128(22, 2)) as __common_expr_4, CAST(cs_sp@11 AS Decimal128(22, 2)) as __common_expr_5, ss_sold_year@0 as ss_sold_year, ss_item_sk@1 as ss_item_sk, ss_customer_sk@2 as ss_customer_sk, ss_qty@3 as ss_qty, ss_wc@4 as ss_wc, ss_sp@5 as ss_sp] +05)--------FilterExec: CASE WHEN ws_qty@6 IS NOT NULL THEN ws_qty@6 ELSE 0 END > 0 OR CASE WHEN cs_qty@9 IS NOT NULL THEN cs_qty@9 ELSE 0 END > 0 +06)----------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(cs_sold_year@0, ss_sold_year@0), (cs_item_sk@1, ss_item_sk@1), (cs_customer_sk@2, ss_customer_sk@2)], projection=[ss_sold_year@6, ss_item_sk@7, ss_customer_sk@8, ss_qty@9, ss_wc@10, ss_sp@11, ws_qty@12, ws_wc@13, ws_sp@14, cs_qty@3, cs_wc@4, cs_sp@5] +07)------------CoalescePartitionsExec +08)--------------ProjectionExec: expr=[d_year@0 as cs_sold_year, cs_item_sk@1 as cs_item_sk, cs_bill_customer_sk@2 as cs_customer_sk, sum(catalog_sales.cs_quantity)@3 as cs_qty, sum(catalog_sales.cs_wholesale_cost)@4 as cs_wc, sum(catalog_sales.cs_sales_price)@5 as cs_sp] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, cs_item_sk@1 as cs_item_sk, cs_bill_customer_sk@2 as cs_bill_customer_sk], aggr=[sum(catalog_sales.cs_quantity), sum(catalog_sales.cs_wholesale_cost), sum(catalog_sales.cs_sales_price)], ordering_mode=PartiallySorted([0]) +10)------------------RepartitionExec: partitioning=Hash([d_year@0, cs_item_sk@1, cs_bill_customer_sk@2], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[d_year@5 as d_year, cs_item_sk@1 as cs_item_sk, cs_bill_customer_sk@0 as cs_bill_customer_sk], aggr=[sum(catalog_sales.cs_quantity), sum(catalog_sales.cs_wholesale_cost), sum(catalog_sales.cs_sales_price)], ordering_mode=PartiallySorted([0]) +12)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_customer_sk@3, cs_item_sk@4, cs_quantity@5, cs_wholesale_cost@6, cs_sales_price@7, d_year@1] +13)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2000 +14)------------------------FilterExec: cr_order_number@6 IS NULL, projection=[cs_sold_date_sk@0, cs_bill_customer_sk@1, cs_item_sk@2, cs_quantity@3, cs_wholesale_cost@4, cs_sales_price@5] +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(cr_order_number@1, cs_order_number@3), (cr_item_sk@0, cs_item_sk@2)], projection=[cs_sold_date_sk@2, cs_bill_customer_sk@3, cs_item_sk@4, cs_quantity@6, cs_wholesale_cost@7, cs_sales_price@8, cr_order_number@1] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number], file_type=vortex +17)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk, cs_order_number, cs_quantity, cs_wholesale_cost, cs_sales_price], file_type=vortex +18)------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(ws_sold_year@0, ss_sold_year@0), (ws_item_sk@1, ss_item_sk@1), (ws_customer_sk@2, ss_customer_sk@2)], projection=[ss_sold_year@6, ss_item_sk@7, ss_customer_sk@8, ss_qty@9, ss_wc@10, ss_sp@11, ws_qty@3, ws_wc@4, ws_sp@5] +19)--------------CoalescePartitionsExec +20)----------------ProjectionExec: expr=[d_year@0 as ws_sold_year, ws_item_sk@1 as ws_item_sk, ws_bill_customer_sk@2 as ws_customer_sk, sum(web_sales.ws_quantity)@3 as ws_qty, sum(web_sales.ws_wholesale_cost)@4 as ws_wc, sum(web_sales.ws_sales_price)@5 as ws_sp] +21)------------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, ws_item_sk@1 as ws_item_sk, ws_bill_customer_sk@2 as ws_bill_customer_sk], aggr=[sum(web_sales.ws_quantity), sum(web_sales.ws_wholesale_cost), sum(web_sales.ws_sales_price)], ordering_mode=PartiallySorted([0]) +22)--------------------RepartitionExec: partitioning=Hash([d_year@0, ws_item_sk@1, ws_bill_customer_sk@2], 4), input_partitions=4 +23)----------------------AggregateExec: mode=Partial, gby=[d_year@5 as d_year, ws_item_sk@0 as ws_item_sk, ws_bill_customer_sk@1 as ws_bill_customer_sk], aggr=[sum(web_sales.ws_quantity), sum(web_sales.ws_wholesale_cost), sum(web_sales.ws_sales_price)], ordering_mode=PartiallySorted([0]) +24)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@3, ws_bill_customer_sk@4, ws_quantity@5, ws_wholesale_cost@6, ws_sales_price@7, d_year@1] +25)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2000 +26)--------------------------FilterExec: wr_order_number@6 IS NULL, projection=[ws_sold_date_sk@0, ws_item_sk@1, ws_bill_customer_sk@2, ws_quantity@3, ws_wholesale_cost@4, ws_sales_price@5] +27)----------------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(wr_order_number@1, ws_order_number@3), (wr_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@2, ws_item_sk@3, ws_bill_customer_sk@4, ws_quantity@6, ws_wholesale_cost@7, ws_sales_price@8, wr_order_number@1] +28)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_item_sk, wr_order_number], file_type=vortex +29)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_bill_customer_sk, ws_order_number, ws_quantity, ws_wholesale_cost, ws_sales_price], file_type=vortex +30)--------------ProjectionExec: expr=[d_year@0 as ss_sold_year, ss_item_sk@1 as ss_item_sk, ss_customer_sk@2 as ss_customer_sk, sum(store_sales.ss_quantity)@3 as ss_qty, sum(store_sales.ss_wholesale_cost)@4 as ss_wc, sum(store_sales.ss_sales_price)@5 as ss_sp] +31)----------------AggregateExec: mode=FinalPartitioned, gby=[d_year@0 as d_year, ss_item_sk@1 as ss_item_sk, ss_customer_sk@2 as ss_customer_sk], aggr=[sum(store_sales.ss_quantity), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_sales_price)], ordering_mode=PartiallySorted([0]) +32)------------------RepartitionExec: partitioning=Hash([d_year@0, ss_item_sk@1, ss_customer_sk@2], 4), input_partitions=4 +33)--------------------AggregateExec: mode=Partial, gby=[d_year@5 as d_year, ss_item_sk@0 as ss_item_sk, ss_customer_sk@1 as ss_customer_sk], aggr=[sum(store_sales.ss_quantity), sum(store_sales.ss_wholesale_cost), sum(store_sales.ss_sales_price)], ordering_mode=PartiallySorted([0]) +34)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@3, ss_customer_sk@4, ss_quantity@5, ss_wholesale_cost@6, ss_sales_price@7, d_year@1] +35)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_year], file_type=vortex, predicate: d_year@6 = 2000 +36)------------------------FilterExec: sr_ticket_number@6 IS NULL, projection=[ss_sold_date_sk@0, ss_item_sk@1, ss_customer_sk@2, ss_quantity@3, ss_wholesale_cost@4, ss_sales_price@5] +37)--------------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(sr_ticket_number@1, ss_ticket_number@3), (sr_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@2, ss_item_sk@3, ss_customer_sk@4, ss_quantity@6, ss_wholesale_cost@7, ss_sales_price@8, sr_ticket_number@1] +38)----------------------------CoalescePartitionsExec +39)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number], file_type=vortex +40)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk, ss_ticket_number, ss_quantity, ss_wholesale_cost, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q79.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q79.slt.no new file mode 100644 index 00000000000..1bdd8da29b9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q79.slt.no @@ -0,0 +1,85 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT c_last_name, + c_first_name, + SUBSTRING(s_city,1,30), + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + store.s_city , + sum(ss_coupon_amt) amt , + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count > 2) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + store.s_city) ms, + customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + SUBSTRING(s_city,1,30) NULLS FIRST, + profit NULLS FIRST, + ss_ticket_number +LIMIT 100; +---- +logical_plan +01)Sort: customer.c_last_name ASC NULLS FIRST, customer.c_first_name ASC NULLS FIRST, substr(ms.s_city,Int64(1),Int64(30)) ASC NULLS FIRST, ms.profit ASC NULLS FIRST, ms.ss_ticket_number ASC NULLS LAST, fetch=100 +02)--Projection: customer.c_last_name, customer.c_first_name, substr(ms.s_city, Int64(1), Int64(30)), ms.ss_ticket_number, ms.amt, ms.profit +03)----Inner Join: ms.ss_customer_sk = customer.c_customer_sk +04)------SubqueryAlias: ms +05)--------Projection: store_sales.ss_ticket_number, store_sales.ss_customer_sk, store.s_city, sum(store_sales.ss_coupon_amt) AS amt, sum(store_sales.ss_net_profit) AS profit +06)----------Aggregate: groupBy=[[store_sales.ss_ticket_number, store_sales.ss_customer_sk, store_sales.ss_addr_sk, store.s_city]], aggr=[[sum(store_sales.ss_coupon_amt), sum(store_sales.ss_net_profit)]] +07)------------Projection: store_sales.ss_customer_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit, store.s_city +08)--------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +09)----------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit, store.s_city +10)------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +11)--------------------Projection: store_sales.ss_customer_sk, store_sales.ss_hdemo_sk, store_sales.ss_addr_sk, store_sales.ss_store_sk, store_sales.ss_ticket_number, store_sales.ss_coupon_amt, store_sales.ss_net_profit +12)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +13)------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_ticket_number, ss_coupon_amt, ss_net_profit] +14)------------------------Projection: date_dim.d_date_sk +15)--------------------------Filter: date_dim.d_dow = Int64(1) AND (date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)) +16)----------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_dow], partial_filters=[date_dim.d_dow = Int64(1), date_dim.d_year = Int64(1999) OR date_dim.d_year = Int64(2000) OR date_dim.d_year = Int64(2001)] +17)--------------------Projection: store.s_store_sk, store.s_city +18)----------------------Filter: store.s_number_employees >= Int64(200) AND store.s_number_employees <= Int64(295) +19)------------------------TableScan: store projection=[s_store_sk, s_number_employees, s_city], partial_filters=[store.s_number_employees >= Int64(200), store.s_number_employees <= Int64(295)] +20)----------------Projection: household_demographics.hd_demo_sk +21)------------------Filter: household_demographics.hd_dep_count = Int64(6) OR household_demographics.hd_vehicle_count > Int32(2) +22)--------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(6) OR household_demographics.hd_vehicle_count > Int32(2)] +23)------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +physical_plan +01)SortPreservingMergeExec: [c_last_name@0 ASC, c_first_name@1 ASC, substr(ms.s_city,Int64(1),Int64(30))@2 ASC, profit@5 ASC, ss_ticket_number@3 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_last_name@0 ASC, c_first_name@1 ASC, substr(ms.s_city,Int64(1),Int64(30))@2 ASC, profit@5 ASC, ss_ticket_number@3 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, substr(s_city@2, 1, 30) as substr(ms.s_city,Int64(1),Int64(30)), ss_ticket_number@3 as ss_ticket_number, amt@4 as amt, profit@5 as profit] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@1)], projection=[c_last_name@2, c_first_name@1, s_city@5, ss_ticket_number@3, amt@6, profit@7] +05)--------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +06)--------ProjectionExec: expr=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, s_city@3 as s_city, sum(store_sales.ss_coupon_amt)@4 as amt, sum(store_sales.ss_net_profit)@5 as profit] +07)----------AggregateExec: mode=FinalPartitioned, gby=[ss_ticket_number@0 as ss_ticket_number, ss_customer_sk@1 as ss_customer_sk, ss_addr_sk@2 as ss_addr_sk, s_city@3 as s_city], aggr=[sum(store_sales.ss_coupon_amt), sum(store_sales.ss_net_profit)] +08)------------RepartitionExec: partitioning=Hash([ss_ticket_number@0, ss_customer_sk@1, ss_addr_sk@2, s_city@3], 4), input_partitions=4 +09)--------------AggregateExec: mode=Partial, gby=[ss_ticket_number@2 as ss_ticket_number, ss_customer_sk@0 as ss_customer_sk, ss_addr_sk@1 as ss_addr_sk, s_city@5 as s_city], aggr=[sum(store_sales.ss_coupon_amt), sum(store_sales.ss_net_profit)] +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_customer_sk@1, ss_addr_sk@3, ss_ticket_number@4, ss_coupon_amt@5, ss_net_profit@6, s_city@7] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 6 OR hd_vehicle_count@4 > 2 +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[ss_customer_sk@2, ss_hdemo_sk@3, ss_addr_sk@4, ss_ticket_number@6, ss_coupon_amt@7, ss_net_profit@8, s_city@1] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_city], file_type=vortex, predicate: s_number_employees@6 >= 200 AND s_number_employees@6 <= 295 +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@2, ss_hdemo_sk@3, ss_addr_sk@4, ss_store_sk@5, ss_ticket_number@6, ss_coupon_amt@7, ss_net_profit@8] +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_dow@7 = 1 AND (d_year@6 = 1999 OR d_year@6 = 2000 OR d_year@6 = 2001) +16)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk, ss_hdemo_sk, ss_addr_sk, ss_store_sk, ss_ticket_number, ss_coupon_amt, ss_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q8.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q8.slt.no new file mode 100644 index 00000000000..9f0a9b40781 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q8.slt.no @@ -0,0 +1,499 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT s_store_name, + sum(ss_net_profit) +FROM store_sales, + date_dim, + store, + (SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE SUBSTRING(ca_zip, 1, 5) IN ('24128', + '76232', + '65084', + '87816', + '83926', + '77556', + '20548', + '26231', + '43848', + '15126', + '91137', + '61265', + '98294', + '25782', + '17920', + '18426', + '98235', + '40081', + '84093', + '28577', + '55565', + '17183', + '54601', + '67897', + '22752', + '86284', + '18376', + '38607', + '45200', + '21756', + '29741', + '96765', + '23932', + '89360', + '29839', + '25989', + '28898', + '91068', + '72550', + '10390', + '18845', + '47770', + '82636', + '41367', + '76638', + '86198', + '81312', + '37126', + '39192', + '88424', + '72175', + '81426', + '53672', + '10445', + '42666', + '66864', + '66708', + '41248', + '48583', + '82276', + '18842', + '78890', + '49448', + '14089', + '38122', + '34425', + '79077', + '19849', + '43285', + '39861', + '66162', + '77610', + '13695', + '99543', + '83444', + '83041', + '12305', + '57665', + '68341', + '25003', + '57834', + '62878', + '49130', + '81096', + '18840', + '27700', + '23470', + '50412', + '21195', + '16021', + '76107', + '71954', + '68309', + '18119', + '98359', + '64544', + '10336', + '86379', + '27068', + '39736', + '98569', + '28915', + '24206', + '56529', + '57647', + '54917', + '42961', + '91110', + '63981', + '14922', + '36420', + '23006', + '67467', + '32754', + '30903', + '20260', + '31671', + '51798', + '72325', + '85816', + '68621', + '13955', + '36446', + '41766', + '68806', + '16725', + '15146', + '22744', + '35850', + '88086', + '51649', + '18270', + '52867', + '39972', + '96976', + '63792', + '11376', + '94898', + '13595', + '10516', + '90225', + '58943', + '39371', + '94945', + '28587', + '96576', + '57855', + '28488', + '26105', + '83933', + '25858', + '34322', + '44438', + '73171', + '30122', + '34102', + '22685', + '71256', + '78451', + '54364', + '13354', + '45375', + '40558', + '56458', + '28286', + '45266', + '47305', + '69399', + '83921', + '26233', + '11101', + '15371', + '69913', + '35942', + '15882', + '25631', + '24610', + '44165', + '99076', + '33786', + '70738', + '26653', + '14328', + '72305', + '62496', + '22152', + '10144', + '64147', + '48425', + '14663', + '21076', + '18799', + '30450', + '63089', + '81019', + '68893', + '24996', + '51200', + '51211', + '45692', + '92712', + '70466', + '79994', + '22437', + '25280', + '38935', + '71791', + '73134', + '56571', + '14060', + '19505', + '72425', + '56575', + '74351', + '68786', + '51650', + '20004', + '18383', + '76614', + '11634', + '18906', + '15765', + '41368', + '73241', + '76698', + '78567', + '97189', + '28545', + '76231', + '75691', + '22246', + '51061', + '90578', + '56691', + '68014', + '51103', + '94167', + '57047', + '14867', + '73520', + '15734', + '63435', + '25733', + '35474', + '24676', + '94627', + '53535', + '17879', + '15559', + '53268', + '59166', + '11928', + '59402', + '33282', + '45721', + '43933', + '68101', + '33515', + '36634', + '71286', + '19736', + '58058', + '55253', + '67473', + '41918', + '19515', + '36495', + '19430', + '22351', + '77191', + '91393', + '49156', + '50298', + '87501', + '18652', + '53179', + '18767', + '63193', + '23968', + '65164', + '68880', + '21286', + '72823', + '58470', + '67301', + '13394', + '31016', + '70372', + '67030', + '40604', + '24317', + '45748', + '39127', + '26065', + '77721', + '31029', + '31880', + '60576', + '24671', + '45549', + '13376', + '50016', + '33123', + '19769', + '22927', + '97789', + '46081', + '72151', + '15723', + '46136', + '51949', + '68100', + '96888', + '64528', + '14171', + '79777', + '28709', + '11489', + '25103', + '32213', + '78668', + '22245', + '15798', + '27156', + '37930', + '62971', + '21337', + '51622', + '67853', + '10567', + '38415', + '15455', + '58263', + '42029', + '60279', + '37125', + '56240', + '88190', + '50308', + '26859', + '64457', + '89091', + '82136', + '62377', + '36233', + '63837', + '58078', + '17043', + '30010', + '60099', + '28810', + '98025', + '29178', + '87343', + '73273', + '30469', + '64034', + '39516', + '86057', + '21309', + '90257', + '67875', + '40162', + '11356', + '73650', + '61810', + '72013', + '30431', + '22461', + '19512', + '13375', + '55307', + '30625', + '83849', + '68908', + '26689', + '96451', + '38193', + '46820', + '88885', + '84935', + '69035', + '83144', + '47537', + '56616', + '94983', + '48033', + '69952', + '25486', + '61547', + '27385', + '61860', + '58048', + '56910', + '16807', + '17871', + '35258', + '31387', + '35458', + '35576') INTERSECT + SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip, + count(*) cnt + FROM customer_address, + customer + WHERE ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag='Y' + GROUP BY ca_zip + HAVING count(*) > 10)A1)A2) V1 +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 1998 + AND (SUBSTRING(s_zip, 1, 2) = SUBSTRING(V1.ca_zip, 1, 2)) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100; +---- +logical_plan +01)Sort: store.s_store_name ASC NULLS LAST, fetch=100 +02)--Aggregate: groupBy=[[store.s_store_name]], aggr=[[sum(store_sales.ss_net_profit)]] +03)----Projection: store_sales.ss_net_profit, store.s_store_name +04)------Inner Join: substr(store.s_zip, Int64(1), Int64(2)) = substr(v1.ca_zip, Int64(1), Int64(2)) +05)--------Projection: store_sales.ss_net_profit, store.s_store_name, store.s_zip +06)----------Inner Join: store_sales.ss_store_sk = store.s_store_sk +07)------------Projection: store_sales.ss_store_sk, store_sales.ss_net_profit +08)--------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +09)----------------TableScan: store_sales projection=[ss_sold_date_sk, ss_store_sk, ss_net_profit] +10)----------------Projection: date_dim.d_date_sk +11)------------------Filter: date_dim.d_qoy = Int64(2) AND date_dim.d_year = Int64(1998) +12)--------------------TableScan: date_dim projection=[d_date_sk, d_year, d_qoy], partial_filters=[date_dim.d_qoy = Int64(2), date_dim.d_year = Int64(1998)] +13)------------TableScan: store projection=[s_store_sk, s_store_name, s_zip] +14)--------SubqueryAlias: v1 +15)----------SubqueryAlias: a2 +16)------------LeftSemi Join: left.ca_zip = right.ca_zip +17)--------------Aggregate: groupBy=[[left.ca_zip]], aggr=[[]] +18)----------------SubqueryAlias: left +19)------------------Projection: substr(customer_address.ca_zip, Int64(1), Int64(5)) AS ca_zip +20)--------------------Filter: substr(customer_address.ca_zip, Int64(1), Int64(5)) IN ([Utf8View("24128"), Utf8View("76232"), Utf8View("65084"), Utf8View("87816"), Utf8View("83926"), Utf8View("77556"), Utf8View("20548"), Utf8View("26231"), Utf8View("43848"), Utf8View("15126"), Utf8View("91137"), Utf8View("61265"), Utf8View("98294"), Utf8View("25782"), Utf8View("17920"), Utf8View("18426"), Utf8View("98235"), Utf8View("40081"), Utf8View("84093"), Utf8View("28577"), Utf8View("55565"), Utf8View("17183"), Utf8View("54601"), Utf8View("67897"), Utf8View("22752"), Utf8View("86284"), Utf8View("18376"), Utf8View("38607"), Utf8View("45200"), Utf8View("21756"), Utf8View("29741"), Utf8View("96765"), Utf8View("23932"), Utf8View("89360"), Utf8View("29839"), Utf8View("25989"), Utf8View("28898"), Utf8View("91068"), Utf8View("72550"), Utf8View("10390"), Utf8View("18845"), Utf8View("47770"), Utf8View("82636"), Utf8View("41367"), Utf8View("76638"), Utf8View("86198"), Utf8View("81312"), Utf8View("37126"), Utf8View("39192"), Utf8View("88424"), Utf8View("72175"), Utf8View("81426"), Utf8View("53672"), Utf8View("10445"), Utf8View("42666"), Utf8View("66864"), Utf8View("66708"), Utf8View("41248"), Utf8View("48583"), Utf8View("82276"), Utf8View("18842"), Utf8View("78890"), Utf8View("49448"), Utf8View("14089"), Utf8View("38122"), Utf8View("34425"), Utf8View("79077"), Utf8View("19849"), Utf8View("43285"), Utf8View("39861"), Utf8View("66162"), Utf8View("77610"), Utf8View("13695"), Utf8View("99543"), Utf8View("83444"), Utf8View("83041"), Utf8View("12305"), Utf8View("57665"), Utf8View("68341"), Utf8View("25003"), Utf8View("57834"), Utf8View("62878"), Utf8View("49130"), Utf8View("81096"), Utf8View("18840"), Utf8View("27700"), Utf8View("23470"), Utf8View("50412"), Utf8View("21195"), Utf8View("16021"), Utf8View("76107"), Utf8View("71954"), Utf8View("68309"), Utf8View("18119"), Utf8View("98359"), Utf8View("64544"), Utf8View("10336"), Utf8View("86379"), Utf8View("27068"), Utf8View("39736"), Utf8View("98569"), Utf8View("28915"), Utf8View("24206"), Utf8View("56529"), Utf8View("57647"), Utf8View("54917"), Utf8View("42961"), Utf8View("91110"), Utf8View("63981"), Utf8View("14922"), Utf8View("36420"), Utf8View("23006"), Utf8View("67467"), Utf8View("32754"), Utf8View("30903"), Utf8View("20260"), Utf8View("31671"), Utf8View("51798"), Utf8View("72325"), Utf8View("85816"), Utf8View("68621"), Utf8View("13955"), Utf8View("36446"), Utf8View("41766"), Utf8View("68806"), Utf8View("16725"), Utf8View("15146"), Utf8View("22744"), Utf8View("35850"), Utf8View("88086"), Utf8View("51649"), Utf8View("18270"), Utf8View("52867"), Utf8View("39972"), Utf8View("96976"), Utf8View("63792"), Utf8View("11376"), Utf8View("94898"), Utf8View("13595"), Utf8View("10516"), Utf8View("90225"), Utf8View("58943"), Utf8View("39371"), Utf8View("94945"), Utf8View("28587"), Utf8View("96576"), Utf8View("57855"), Utf8View("28488"), Utf8View("26105"), Utf8View("83933"), Utf8View("25858"), Utf8View("34322"), Utf8View("44438"), Utf8View("73171"), Utf8View("30122"), Utf8View("34102"), Utf8View("22685"), Utf8View("71256"), Utf8View("78451"), Utf8View("54364"), Utf8View("13354"), Utf8View("45375"), Utf8View("40558"), Utf8View("56458"), Utf8View("28286"), Utf8View("45266"), Utf8View("47305"), Utf8View("69399"), Utf8View("83921"), Utf8View("26233"), Utf8View("11101"), Utf8View("15371"), Utf8View("69913"), Utf8View("35942"), Utf8View("15882"), Utf8View("25631"), Utf8View("24610"), Utf8View("44165"), Utf8View("99076"), Utf8View("33786"), Utf8View("70738"), Utf8View("26653"), Utf8View("14328"), Utf8View("72305"), Utf8View("62496"), Utf8View("22152"), Utf8View("10144"), Utf8View("64147"), Utf8View("48425"), Utf8View("14663"), Utf8View("21076"), Utf8View("18799"), Utf8View("30450"), Utf8View("63089"), Utf8View("81019"), Utf8View("68893"), Utf8View("24996"), Utf8View("51200"), Utf8View("51211"), Utf8View("45692"), Utf8View("92712"), Utf8View("70466"), Utf8View("79994"), Utf8View("22437"), Utf8View("25280"), Utf8View("38935"), Utf8View("71791"), Utf8View("73134"), Utf8View("56571"), Utf8View("14060"), Utf8View("19505"), Utf8View("72425"), Utf8View("56575"), Utf8View("74351"), Utf8View("68786"), Utf8View("51650"), Utf8View("20004"), Utf8View("18383"), Utf8View("76614"), Utf8View("11634"), Utf8View("18906"), Utf8View("15765"), Utf8View("41368"), Utf8View("73241"), Utf8View("76698"), Utf8View("78567"), Utf8View("97189"), Utf8View("28545"), Utf8View("76231"), Utf8View("75691"), Utf8View("22246"), Utf8View("51061"), Utf8View("90578"), Utf8View("56691"), Utf8View("68014"), Utf8View("51103"), Utf8View("94167"), Utf8View("57047"), Utf8View("14867"), Utf8View("73520"), Utf8View("15734"), Utf8View("63435"), Utf8View("25733"), Utf8View("35474"), Utf8View("24676"), Utf8View("94627"), Utf8View("53535"), Utf8View("17879"), Utf8View("15559"), Utf8View("53268"), Utf8View("59166"), Utf8View("11928"), Utf8View("59402"), Utf8View("33282"), Utf8View("45721"), Utf8View("43933"), Utf8View("68101"), Utf8View("33515"), Utf8View("36634"), Utf8View("71286"), Utf8View("19736"), Utf8View("58058"), Utf8View("55253"), Utf8View("67473"), Utf8View("41918"), Utf8View("19515"), Utf8View("36495"), Utf8View("19430"), Utf8View("22351"), Utf8View("77191"), Utf8View("91393"), Utf8View("49156"), Utf8View("50298"), Utf8View("87501"), Utf8View("18652"), Utf8View("53179"), Utf8View("18767"), Utf8View("63193"), Utf8View("23968"), Utf8View("65164"), Utf8View("68880"), Utf8View("21286"), Utf8View("72823"), Utf8View("58470"), Utf8View("67301"), Utf8View("13394"), Utf8View("31016"), Utf8View("70372"), Utf8View("67030"), Utf8View("40604"), Utf8View("24317"), Utf8View("45748"), Utf8View("39127"), Utf8View("26065"), Utf8View("77721"), Utf8View("31029"), Utf8View("31880"), Utf8View("60576"), Utf8View("24671"), Utf8View("45549"), Utf8View("13376"), Utf8View("50016"), Utf8View("33123"), Utf8View("19769"), Utf8View("22927"), Utf8View("97789"), Utf8View("46081"), Utf8View("72151"), Utf8View("15723"), Utf8View("46136"), Utf8View("51949"), Utf8View("68100"), Utf8View("96888"), Utf8View("64528"), Utf8View("14171"), Utf8View("79777"), Utf8View("28709"), Utf8View("11489"), Utf8View("25103"), Utf8View("32213"), Utf8View("78668"), Utf8View("22245"), Utf8View("15798"), Utf8View("27156"), Utf8View("37930"), Utf8View("62971"), Utf8View("21337"), Utf8View("51622"), Utf8View("67853"), Utf8View("10567"), Utf8View("38415"), Utf8View("15455"), Utf8View("58263"), Utf8View("42029"), Utf8View("60279"), Utf8View("37125"), Utf8View("56240"), Utf8View("88190"), Utf8View("50308"), Utf8View("26859"), Utf8View("64457"), Utf8View("89091"), Utf8View("82136"), Utf8View("62377"), Utf8View("36233"), Utf8View("63837"), Utf8View("58078"), Utf8View("17043"), Utf8View("30010"), Utf8View("60099"), Utf8View("28810"), Utf8View("98025"), Utf8View("29178"), Utf8View("87343"), Utf8View("73273"), Utf8View("30469"), Utf8View("64034"), Utf8View("39516"), Utf8View("86057"), Utf8View("21309"), Utf8View("90257"), Utf8View("67875"), Utf8View("40162"), Utf8View("11356"), Utf8View("73650"), Utf8View("61810"), Utf8View("72013"), Utf8View("30431"), Utf8View("22461"), Utf8View("19512"), Utf8View("13375"), Utf8View("55307"), Utf8View("30625"), Utf8View("83849"), Utf8View("68908"), Utf8View("26689"), Utf8View("96451"), Utf8View("38193"), Utf8View("46820"), Utf8View("88885"), Utf8View("84935"), Utf8View("69035"), Utf8View("83144"), Utf8View("47537"), Utf8View("56616"), Utf8View("94983"), Utf8View("48033"), Utf8View("69952"), Utf8View("25486"), Utf8View("61547"), Utf8View("27385"), Utf8View("61860"), Utf8View("58048"), Utf8View("56910"), Utf8View("16807"), Utf8View("17871"), Utf8View("35258"), Utf8View("31387"), Utf8View("35458"), Utf8View("35576")]) +21)----------------------TableScan: customer_address projection=[ca_zip], partial_filters=[substr(customer_address.ca_zip, Int64(1), Int64(5)) IN ([Utf8View("24128"), Utf8View("76232"), Utf8View("65084"), Utf8View("87816"), Utf8View("83926"), Utf8View("77556"), Utf8View("20548"), Utf8View("26231"), Utf8View("43848"), Utf8View("15126"), Utf8View("91137"), Utf8View("61265"), Utf8View("98294"), Utf8View("25782"), Utf8View("17920"), Utf8View("18426"), Utf8View("98235"), Utf8View("40081"), Utf8View("84093"), Utf8View("28577"), Utf8View("55565"), Utf8View("17183"), Utf8View("54601"), Utf8View("67897"), Utf8View("22752"), Utf8View("86284"), Utf8View("18376"), Utf8View("38607"), Utf8View("45200"), Utf8View("21756"), Utf8View("29741"), Utf8View("96765"), Utf8View("23932"), Utf8View("89360"), Utf8View("29839"), Utf8View("25989"), Utf8View("28898"), Utf8View("91068"), Utf8View("72550"), Utf8View("10390"), Utf8View("18845"), Utf8View("47770"), Utf8View("82636"), Utf8View("41367"), Utf8View("76638"), Utf8View("86198"), Utf8View("81312"), Utf8View("37126"), Utf8View("39192"), Utf8View("88424"), Utf8View("72175"), Utf8View("81426"), Utf8View("53672"), Utf8View("10445"), Utf8View("42666"), Utf8View("66864"), Utf8View("66708"), Utf8View("41248"), Utf8View("48583"), Utf8View("82276"), Utf8View("18842"), Utf8View("78890"), Utf8View("49448"), Utf8View("14089"), Utf8View("38122"), Utf8View("34425"), Utf8View("79077"), Utf8View("19849"), Utf8View("43285"), Utf8View("39861"), Utf8View("66162"), Utf8View("77610"), Utf8View("13695"), Utf8View("99543"), Utf8View("83444"), Utf8View("83041"), Utf8View("12305"), Utf8View("57665"), Utf8View("68341"), Utf8View("25003"), Utf8View("57834"), Utf8View("62878"), Utf8View("49130"), Utf8View("81096"), Utf8View("18840"), Utf8View("27700"), Utf8View("23470"), Utf8View("50412"), Utf8View("21195"), Utf8View("16021"), Utf8View("76107"), Utf8View("71954"), Utf8View("68309"), Utf8View("18119"), Utf8View("98359"), Utf8View("64544"), Utf8View("10336"), Utf8View("86379"), Utf8View("27068"), Utf8View("39736"), Utf8View("98569"), Utf8View("28915"), Utf8View("24206"), Utf8View("56529"), Utf8View("57647"), Utf8View("54917"), Utf8View("42961"), Utf8View("91110"), Utf8View("63981"), Utf8View("14922"), Utf8View("36420"), Utf8View("23006"), Utf8View("67467"), Utf8View("32754"), Utf8View("30903"), Utf8View("20260"), Utf8View("31671"), Utf8View("51798"), Utf8View("72325"), Utf8View("85816"), Utf8View("68621"), Utf8View("13955"), Utf8View("36446"), Utf8View("41766"), Utf8View("68806"), Utf8View("16725"), Utf8View("15146"), Utf8View("22744"), Utf8View("35850"), Utf8View("88086"), Utf8View("51649"), Utf8View("18270"), Utf8View("52867"), Utf8View("39972"), Utf8View("96976"), Utf8View("63792"), Utf8View("11376"), Utf8View("94898"), Utf8View("13595"), Utf8View("10516"), Utf8View("90225"), Utf8View("58943"), Utf8View("39371"), Utf8View("94945"), Utf8View("28587"), Utf8View("96576"), Utf8View("57855"), Utf8View("28488"), Utf8View("26105"), Utf8View("83933"), Utf8View("25858"), Utf8View("34322"), Utf8View("44438"), Utf8View("73171"), Utf8View("30122"), Utf8View("34102"), Utf8View("22685"), Utf8View("71256"), Utf8View("78451"), Utf8View("54364"), Utf8View("13354"), Utf8View("45375"), Utf8View("40558"), Utf8View("56458"), Utf8View("28286"), Utf8View("45266"), Utf8View("47305"), Utf8View("69399"), Utf8View("83921"), Utf8View("26233"), Utf8View("11101"), Utf8View("15371"), Utf8View("69913"), Utf8View("35942"), Utf8View("15882"), Utf8View("25631"), Utf8View("24610"), Utf8View("44165"), Utf8View("99076"), Utf8View("33786"), Utf8View("70738"), Utf8View("26653"), Utf8View("14328"), Utf8View("72305"), Utf8View("62496"), Utf8View("22152"), Utf8View("10144"), Utf8View("64147"), Utf8View("48425"), Utf8View("14663"), Utf8View("21076"), Utf8View("18799"), Utf8View("30450"), Utf8View("63089"), Utf8View("81019"), Utf8View("68893"), Utf8View("24996"), Utf8View("51200"), Utf8View("51211"), Utf8View("45692"), Utf8View("92712"), Utf8View("70466"), Utf8View("79994"), Utf8View("22437"), Utf8View("25280"), Utf8View("38935"), Utf8View("71791"), Utf8View("73134"), Utf8View("56571"), Utf8View("14060"), Utf8View("19505"), Utf8View("72425"), Utf8View("56575"), Utf8View("74351"), Utf8View("68786"), Utf8View("51650"), Utf8View("20004"), Utf8View("18383"), Utf8View("76614"), Utf8View("11634"), Utf8View("18906"), Utf8View("15765"), Utf8View("41368"), Utf8View("73241"), Utf8View("76698"), Utf8View("78567"), Utf8View("97189"), Utf8View("28545"), Utf8View("76231"), Utf8View("75691"), Utf8View("22246"), Utf8View("51061"), Utf8View("90578"), Utf8View("56691"), Utf8View("68014"), Utf8View("51103"), Utf8View("94167"), Utf8View("57047"), Utf8View("14867"), Utf8View("73520"), Utf8View("15734"), Utf8View("63435"), Utf8View("25733"), Utf8View("35474"), Utf8View("24676"), Utf8View("94627"), Utf8View("53535"), Utf8View("17879"), Utf8View("15559"), Utf8View("53268"), Utf8View("59166"), Utf8View("11928"), Utf8View("59402"), Utf8View("33282"), Utf8View("45721"), Utf8View("43933"), Utf8View("68101"), Utf8View("33515"), Utf8View("36634"), Utf8View("71286"), Utf8View("19736"), Utf8View("58058"), Utf8View("55253"), Utf8View("67473"), Utf8View("41918"), Utf8View("19515"), Utf8View("36495"), Utf8View("19430"), Utf8View("22351"), Utf8View("77191"), Utf8View("91393"), Utf8View("49156"), Utf8View("50298"), Utf8View("87501"), Utf8View("18652"), Utf8View("53179"), Utf8View("18767"), Utf8View("63193"), Utf8View("23968"), Utf8View("65164"), Utf8View("68880"), Utf8View("21286"), Utf8View("72823"), Utf8View("58470"), Utf8View("67301"), Utf8View("13394"), Utf8View("31016"), Utf8View("70372"), Utf8View("67030"), Utf8View("40604"), Utf8View("24317"), Utf8View("45748"), Utf8View("39127"), Utf8View("26065"), Utf8View("77721"), Utf8View("31029"), Utf8View("31880"), Utf8View("60576"), Utf8View("24671"), Utf8View("45549"), Utf8View("13376"), Utf8View("50016"), Utf8View("33123"), Utf8View("19769"), Utf8View("22927"), Utf8View("97789"), Utf8View("46081"), Utf8View("72151"), Utf8View("15723"), Utf8View("46136"), Utf8View("51949"), Utf8View("68100"), Utf8View("96888"), Utf8View("64528"), Utf8View("14171"), Utf8View("79777"), Utf8View("28709"), Utf8View("11489"), Utf8View("25103"), Utf8View("32213"), Utf8View("78668"), Utf8View("22245"), Utf8View("15798"), Utf8View("27156"), Utf8View("37930"), Utf8View("62971"), Utf8View("21337"), Utf8View("51622"), Utf8View("67853"), Utf8View("10567"), Utf8View("38415"), Utf8View("15455"), Utf8View("58263"), Utf8View("42029"), Utf8View("60279"), Utf8View("37125"), Utf8View("56240"), Utf8View("88190"), Utf8View("50308"), Utf8View("26859"), Utf8View("64457"), Utf8View("89091"), Utf8View("82136"), Utf8View("62377"), Utf8View("36233"), Utf8View("63837"), Utf8View("58078"), Utf8View("17043"), Utf8View("30010"), Utf8View("60099"), Utf8View("28810"), Utf8View("98025"), Utf8View("29178"), Utf8View("87343"), Utf8View("73273"), Utf8View("30469"), Utf8View("64034"), Utf8View("39516"), Utf8View("86057"), Utf8View("21309"), Utf8View("90257"), Utf8View("67875"), Utf8View("40162"), Utf8View("11356"), Utf8View("73650"), Utf8View("61810"), Utf8View("72013"), Utf8View("30431"), Utf8View("22461"), Utf8View("19512"), Utf8View("13375"), Utf8View("55307"), Utf8View("30625"), Utf8View("83849"), Utf8View("68908"), Utf8View("26689"), Utf8View("96451"), Utf8View("38193"), Utf8View("46820"), Utf8View("88885"), Utf8View("84935"), Utf8View("69035"), Utf8View("83144"), Utf8View("47537"), Utf8View("56616"), Utf8View("94983"), Utf8View("48033"), Utf8View("69952"), Utf8View("25486"), Utf8View("61547"), Utf8View("27385"), Utf8View("61860"), Utf8View("58048"), Utf8View("56910"), Utf8View("16807"), Utf8View("17871"), Utf8View("35258"), Utf8View("31387"), Utf8View("35458"), Utf8View("35576")])] +22)--------------SubqueryAlias: right +23)----------------SubqueryAlias: a1 +24)------------------Projection: substr(customer_address.ca_zip, Int64(1), Int64(5)) AS ca_zip +25)--------------------Filter: count(Int64(1)) > Int64(10) +26)----------------------Aggregate: groupBy=[[customer_address.ca_zip]], aggr=[[count(Int64(1))]] +27)------------------------Projection: customer_address.ca_zip +28)--------------------------Inner Join: customer_address.ca_address_sk = customer.c_current_addr_sk +29)----------------------------TableScan: customer_address projection=[ca_address_sk, ca_zip] +30)----------------------------Projection: customer.c_current_addr_sk +31)------------------------------Filter: customer.c_preferred_cust_flag = Utf8View("Y") +32)--------------------------------TableScan: customer projection=[c_current_addr_sk, c_preferred_cust_flag], partial_filters=[customer.c_preferred_cust_flag = Utf8View("Y")] +physical_plan +01)SortPreservingMergeExec: [s_store_name@0 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[s_store_name@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[s_store_name@0 as s_store_name], aggr=[sum(store_sales.ss_net_profit)] +04)------RepartitionExec: partitioning=Hash([s_store_name@0], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[s_store_name@1 as s_store_name], aggr=[sum(store_sales.ss_net_profit)] +06)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(substr(v1.ca_zip,Int64(1),Int64(2))@1, substr(store.s_zip,Int64(1),Int64(2))@3)], projection=[ss_net_profit@2, s_store_name@3] +07)------------CoalescePartitionsExec +08)--------------ProjectionExec: expr=[ca_zip@0 as ca_zip, substr(ca_zip@0, 1, 2) as substr(v1.ca_zip,Int64(1),Int64(2))] +09)----------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ca_zip@0, ca_zip@0)], NullsEqual: true +10)------------------CoalescePartitionsExec +11)--------------------AggregateExec: mode=FinalPartitioned, gby=[ca_zip@0 as ca_zip], aggr=[] +12)----------------------RepartitionExec: partitioning=Hash([ca_zip@0], 4), input_partitions=4 +13)------------------------AggregateExec: mode=Partial, gby=[ca_zip@0 as ca_zip], aggr=[] +14)--------------------------ProjectionExec: expr=[substr(ca_zip@0, 1, 5) as ca_zip] +15)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +16)------------------------------FilterExec: substr(ca_zip@0, 1, 5) IN (SET) ([24128, 76232, 65084, 87816, 83926, 77556, 20548, 26231, 43848, 15126, 91137, 61265, 98294, 25782, 17920, 18426, 98235, 40081, 84093, 28577, 55565, 17183, 54601, 67897, 22752, 86284, 18376, 38607, 45200, 21756, 29741, 96765, 23932, 89360, 29839, 25989, 28898, 91068, 72550, 10390, 18845, 47770, 82636, 41367, 76638, 86198, 81312, 37126, 39192, 88424, 72175, 81426, 53672, 10445, 42666, 66864, 66708, 41248, 48583, 82276, 18842, 78890, 49448, 14089, 38122, 34425, 79077, 19849, 43285, 39861, 66162, 77610, 13695, 99543, 83444, 83041, 12305, 57665, 68341, 25003, 57834, 62878, 49130, 81096, 18840, 27700, 23470, 50412, 21195, 16021, 76107, 71954, 68309, 18119, 98359, 64544, 10336, 86379, 27068, 39736, 98569, 28915, 24206, 56529, 57647, 54917, 42961, 91110, 63981, 14922, 36420, 23006, 67467, 32754, 30903, 20260, 31671, 51798, 72325, 85816, 68621, 13955, 36446, 41766, 68806, 16725, 15146, 22744, 35850, 88086, 51649, 18270, 52867, 39972, 96976, 63792, 11376, 94898, 13595, 10516, 90225, 58943, 39371, 94945, 28587, 96576, 57855, 28488, 26105, 83933, 25858, 34322, 44438, 73171, 30122, 34102, 22685, 71256, 78451, 54364, 13354, 45375, 40558, 56458, 28286, 45266, 47305, 69399, 83921, 26233, 11101, 15371, 69913, 35942, 15882, 25631, 24610, 44165, 99076, 33786, 70738, 26653, 14328, 72305, 62496, 22152, 10144, 64147, 48425, 14663, 21076, 18799, 30450, 63089, 81019, 68893, 24996, 51200, 51211, 45692, 92712, 70466, 79994, 22437, 25280, 38935, 71791, 73134, 56571, 14060, 19505, 72425, 56575, 74351, 68786, 51650, 20004, 18383, 76614, 11634, 18906, 15765, 41368, 73241, 76698, 78567, 97189, 28545, 76231, 75691, 22246, 51061, 90578, 56691, 68014, 51103, 94167, 57047, 14867, 73520, 15734, 63435, 25733, 35474, 24676, 94627, 53535, 17879, 15559, 53268, 59166, 11928, 59402, 33282, 45721, 43933, 68101, 33515, 36634, 71286, 19736, 58058, 55253, 67473, 41918, 19515, 36495, 19430, 22351, 77191, 91393, 49156, 50298, 87501, 18652, 53179, 18767, 63193, 23968, 65164, 68880, 21286, 72823, 58470, 67301, 13394, 31016, 70372, 67030, 40604, 24317, 45748, 39127, 26065, 77721, 31029, 31880, 60576, 24671, 45549, 13376, 50016, 33123, 19769, 22927, 97789, 46081, 72151, 15723, 46136, 51949, 68100, 96888, 64528, 14171, 79777, 28709, 11489, 25103, 32213, 78668, 22245, 15798, 27156, 37930, 62971, 21337, 51622, 67853, 10567, 38415, 15455, 58263, 42029, 60279, 37125, 56240, 88190, 50308, 26859, 64457, 89091, 82136, 62377, 36233, 63837, 58078, 17043, 30010, 60099, 28810, 98025, 29178, 87343, 73273, 30469, 64034, 39516, 86057, 21309, 90257, 67875, 40162, 11356, 73650, 61810, 72013, 30431, 22461, 19512, 13375, 55307, 30625, 83849, 68908, 26689, 96451, 38193, 46820, 88885, 84935, 69035, 83144, 47537, 56616, 94983, 48033, 69952, 25486, 61547, 27385, 61860, 58048, 56910, 16807, 17871, 35258, 31387, 35458, 35576]) +17)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_zip], file_type=vortex +18)------------------ProjectionExec: expr=[substr(ca_zip@0, 1, 5) as ca_zip] +19)--------------------FilterExec: count(Int64(1))@1 > 10, projection=[ca_zip@0] +20)----------------------AggregateExec: mode=FinalPartitioned, gby=[ca_zip@0 as ca_zip], aggr=[count(Int64(1))] +21)------------------------RepartitionExec: partitioning=Hash([ca_zip@0], 4), input_partitions=4 +22)--------------------------AggregateExec: mode=Partial, gby=[ca_zip@0 as ca_zip], aggr=[count(Int64(1))] +23)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +24)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_addr_sk@0, ca_address_sk@0)], projection=[ca_zip@2] +25)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_current_addr_sk], file_type=vortex, predicate: c_preferred_cust_flag@10 = Y +26)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_zip], file_type=vortex +27)------------ProjectionExec: expr=[ss_net_profit@0 as ss_net_profit, s_store_name@1 as s_store_name, s_zip@2 as s_zip, substr(s_zip@2, 1, 2) as substr(store.s_zip,Int64(1),Int64(2))] +28)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[ss_net_profit@4, s_store_name@1, s_zip@2] +29)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_zip], file_type=vortex +30)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_store_sk@2, ss_net_profit@3] +31)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_qoy@10 = 2 AND d_year@6 = 1998 +32)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_store_sk, ss_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q80.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q80.slt.no new file mode 100644 index 00000000000..e2273b410ae --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q80.slt.no @@ -0,0 +1,236 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ssr AS + (SELECT s_store_id AS store_id, + sum(ss_ext_sales_price) AS sales, + sum(coalesce(sr_return_amt, 0)) AS returns_, + sum(ss_net_profit - coalesce(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN store_returns ON (ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number), date_dim, + store, + item, + promotion + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(coalesce(cr_return_amount, 0)) AS returns_, + sum(cs_net_profit - coalesce(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN catalog_returns ON (cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number), date_dim, + catalog_page, + item, + promotion + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(coalesce(wr_return_amt, 0)) AS returns_, + sum(ws_net_profit - coalesce(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN web_returns ON (ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number), date_dim, + web_site, + item, + promotion + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', store_id) AS id , + sales , + returns_ , + profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', catalog_page_id) AS id , + sales , + returns_ , + profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: x.channel ASC NULLS FIRST, x.id ASC NULLS FIRST, fetch=100 +02)--Projection: x.channel, x.id, sum(x.sales) AS sales, sum(x.returns_) AS returns_, sum(x.profit) AS profit +03)----Aggregate: groupBy=[[ROLLUP (x.channel, x.id)]], aggr=[[sum(x.sales), sum(x.returns_), sum(x.profit)]] +04)------SubqueryAlias: x +05)--------Union +06)----------Projection: Utf8("store channel") AS channel, concat(Utf8View("store"), ssr.store_id) AS id, ssr.sales, ssr.returns_, ssr.profit +07)------------SubqueryAlias: ssr +08)--------------Projection: store.s_store_id AS store_id, sum(store_sales.ss_ext_sales_price) AS sales, sum(coalesce(store_returns.sr_return_amt,Int64(0))) AS returns_, sum(store_sales.ss_net_profit - coalesce(store_returns.sr_net_loss,Int64(0))) AS profit +09)----------------Aggregate: groupBy=[[store.s_store_id]], aggr=[[sum(store_sales.ss_ext_sales_price), sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(store_returns.sr_return_amt,Int64(0))), sum(store_sales.ss_net_profit - CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE Decimal128(0.00,22,2) END) AS sum(store_sales.ss_net_profit - coalesce(store_returns.sr_net_loss,Int64(0)))]] +10)------------------Projection: CAST(store_returns.sr_return_amt AS Decimal128(22, 2)) AS __common_expr_1, CAST(store_returns.sr_net_loss AS Decimal128(22, 2)) AS __common_expr_2, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, store.s_store_id +11)--------------------Inner Join: store_sales.ss_promo_sk = promotion.p_promo_sk +12)----------------------Projection: store_sales.ss_promo_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, store_returns.sr_return_amt, store_returns.sr_net_loss, store.s_store_id +13)------------------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +14)--------------------------Projection: store_sales.ss_item_sk, store_sales.ss_promo_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, store_returns.sr_return_amt, store_returns.sr_net_loss, store.s_store_id +15)----------------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +16)------------------------------Projection: store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_promo_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, store_returns.sr_return_amt, store_returns.sr_net_loss +17)--------------------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +18)----------------------------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_item_sk, store_sales.ss_store_sk, store_sales.ss_promo_sk, store_sales.ss_ext_sales_price, store_sales.ss_net_profit, store_returns.sr_return_amt, store_returns.sr_net_loss +19)------------------------------------Left Join: store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +20)--------------------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_promo_sk, ss_ticket_number, ss_ext_sales_price, ss_net_profit] +21)--------------------------------------TableScan: store_returns projection=[sr_item_sk, sr_ticket_number, sr_return_amt, sr_net_loss] +22)----------------------------------Projection: date_dim.d_date_sk +23)------------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +24)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +25)------------------------------TableScan: store projection=[s_store_sk, s_store_id] +26)--------------------------Projection: item.i_item_sk +27)----------------------------Filter: item.i_current_price > Decimal128(50.00,7,2) +28)------------------------------TableScan: item projection=[i_item_sk, i_current_price], partial_filters=[item.i_current_price > Decimal128(50.00,7,2)] +29)----------------------Projection: promotion.p_promo_sk +30)------------------------Filter: promotion.p_channel_tv = Utf8View("N") +31)--------------------------TableScan: promotion projection=[p_promo_sk, p_channel_tv], partial_filters=[promotion.p_channel_tv = Utf8View("N")] +32)----------Projection: Utf8("catalog channel") AS channel, concat(Utf8View("catalog_page"), csr.catalog_page_id) AS id, csr.sales, csr.returns_, csr.profit +33)------------SubqueryAlias: csr +34)--------------Projection: catalog_page.cp_catalog_page_id AS catalog_page_id, sum(catalog_sales.cs_ext_sales_price) AS sales, sum(coalesce(catalog_returns.cr_return_amount,Int64(0))) AS returns_, sum(catalog_sales.cs_net_profit - coalesce(catalog_returns.cr_net_loss,Int64(0))) AS profit +35)----------------Aggregate: groupBy=[[catalog_page.cp_catalog_page_id]], aggr=[[sum(catalog_sales.cs_ext_sales_price), sum(CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(catalog_returns.cr_return_amount,Int64(0))), sum(catalog_sales.cs_net_profit - CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE Decimal128(0.00,22,2) END) AS sum(catalog_sales.cs_net_profit - coalesce(catalog_returns.cr_net_loss,Int64(0)))]] +36)------------------Projection: CAST(catalog_returns.cr_return_amount AS Decimal128(22, 2)) AS __common_expr_3, CAST(catalog_returns.cr_net_loss AS Decimal128(22, 2)) AS __common_expr_4, catalog_sales.cs_ext_sales_price, catalog_sales.cs_net_profit, catalog_page.cp_catalog_page_id +37)--------------------Inner Join: catalog_sales.cs_promo_sk = promotion.p_promo_sk +38)----------------------Projection: catalog_sales.cs_promo_sk, catalog_sales.cs_ext_sales_price, catalog_sales.cs_net_profit, catalog_returns.cr_return_amount, catalog_returns.cr_net_loss, catalog_page.cp_catalog_page_id +39)------------------------Inner Join: catalog_sales.cs_item_sk = item.i_item_sk +40)--------------------------Projection: catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_ext_sales_price, catalog_sales.cs_net_profit, catalog_returns.cr_return_amount, catalog_returns.cr_net_loss, catalog_page.cp_catalog_page_id +41)----------------------------Inner Join: catalog_sales.cs_catalog_page_sk = catalog_page.cp_catalog_page_sk +42)------------------------------Projection: catalog_sales.cs_catalog_page_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_ext_sales_price, catalog_sales.cs_net_profit, catalog_returns.cr_return_amount, catalog_returns.cr_net_loss +43)--------------------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +44)----------------------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_catalog_page_sk, catalog_sales.cs_item_sk, catalog_sales.cs_promo_sk, catalog_sales.cs_ext_sales_price, catalog_sales.cs_net_profit, catalog_returns.cr_return_amount, catalog_returns.cr_net_loss +45)------------------------------------Left Join: catalog_sales.cs_item_sk = catalog_returns.cr_item_sk, catalog_sales.cs_order_number = catalog_returns.cr_order_number +46)--------------------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_catalog_page_sk, cs_item_sk, cs_promo_sk, cs_order_number, cs_ext_sales_price, cs_net_profit] +47)--------------------------------------TableScan: catalog_returns projection=[cr_item_sk, cr_order_number, cr_return_amount, cr_net_loss] +48)----------------------------------Projection: date_dim.d_date_sk +49)------------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +50)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +51)------------------------------TableScan: catalog_page projection=[cp_catalog_page_sk, cp_catalog_page_id] +52)--------------------------Projection: item.i_item_sk +53)----------------------------Filter: item.i_current_price > Decimal128(50.00,7,2) +54)------------------------------TableScan: item projection=[i_item_sk, i_current_price], partial_filters=[item.i_current_price > Decimal128(50.00,7,2)] +55)----------------------Projection: promotion.p_promo_sk +56)------------------------Filter: promotion.p_channel_tv = Utf8View("N") +57)--------------------------TableScan: promotion projection=[p_promo_sk, p_channel_tv], partial_filters=[promotion.p_channel_tv = Utf8View("N")] +58)----------Projection: Utf8("web channel") AS channel, concat(Utf8View("web_site"), wsr.web_site_id) AS id, wsr.sales, wsr.returns_, wsr.profit +59)------------SubqueryAlias: wsr +60)--------------Projection: web_site.web_site_id, sum(web_sales.ws_ext_sales_price) AS sales, sum(coalesce(web_returns.wr_return_amt,Int64(0))) AS returns_, sum(web_sales.ws_net_profit - coalesce(web_returns.wr_net_loss,Int64(0))) AS profit +61)----------------Aggregate: groupBy=[[web_site.web_site_id]], aggr=[[sum(web_sales.ws_ext_sales_price), sum(CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE Decimal128(0.00,22,2) END) AS sum(coalesce(web_returns.wr_return_amt,Int64(0))), sum(web_sales.ws_net_profit - CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE Decimal128(0.00,22,2) END) AS sum(web_sales.ws_net_profit - coalesce(web_returns.wr_net_loss,Int64(0)))]] +62)------------------Projection: CAST(web_returns.wr_return_amt AS Decimal128(22, 2)) AS __common_expr_5, CAST(web_returns.wr_net_loss AS Decimal128(22, 2)) AS __common_expr_6, web_sales.ws_ext_sales_price, web_sales.ws_net_profit, web_site.web_site_id +63)--------------------Inner Join: web_sales.ws_promo_sk = promotion.p_promo_sk +64)----------------------Projection: web_sales.ws_promo_sk, web_sales.ws_ext_sales_price, web_sales.ws_net_profit, web_returns.wr_return_amt, web_returns.wr_net_loss, web_site.web_site_id +65)------------------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +66)--------------------------Projection: web_sales.ws_item_sk, web_sales.ws_promo_sk, web_sales.ws_ext_sales_price, web_sales.ws_net_profit, web_returns.wr_return_amt, web_returns.wr_net_loss, web_site.web_site_id +67)----------------------------Inner Join: web_sales.ws_web_site_sk = web_site.web_site_sk +68)------------------------------Projection: web_sales.ws_item_sk, web_sales.ws_web_site_sk, web_sales.ws_promo_sk, web_sales.ws_ext_sales_price, web_sales.ws_net_profit, web_returns.wr_return_amt, web_returns.wr_net_loss +69)--------------------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +70)----------------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_item_sk, web_sales.ws_web_site_sk, web_sales.ws_promo_sk, web_sales.ws_ext_sales_price, web_sales.ws_net_profit, web_returns.wr_return_amt, web_returns.wr_net_loss +71)------------------------------------Left Join: web_sales.ws_item_sk = web_returns.wr_item_sk, web_sales.ws_order_number = web_returns.wr_order_number +72)--------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_web_site_sk, ws_promo_sk, ws_order_number, ws_ext_sales_price, ws_net_profit] +73)--------------------------------------TableScan: web_returns projection=[wr_item_sk, wr_order_number, wr_return_amt, wr_net_loss] +74)----------------------------------Projection: date_dim.d_date_sk +75)------------------------------------Filter: date_dim.d_date >= Date32("2000-08-23") AND date_dim.d_date <= Date32("2000-09-22") +76)--------------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-08-23"), date_dim.d_date <= Date32("2000-09-22")] +77)------------------------------TableScan: web_site projection=[web_site_sk, web_site_id] +78)--------------------------Projection: item.i_item_sk +79)----------------------------Filter: item.i_current_price > Decimal128(50.00,7,2) +80)------------------------------TableScan: item projection=[i_item_sk, i_current_price], partial_filters=[item.i_current_price > Decimal128(50.00,7,2)] +81)----------------------Projection: promotion.p_promo_sk +82)------------------------Filter: promotion.p_channel_tv = Utf8View("N") +83)--------------------------TableScan: promotion projection=[p_promo_sk, p_channel_tv], partial_filters=[promotion.p_channel_tv = Utf8View("N")] +physical_plan +01)SortPreservingMergeExec: [channel@0 ASC, id@1 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[channel@0 ASC, id@1 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[channel@0 as channel, id@1 as id, sum(x.sales)@3 as sales, sum(x.returns_)@4 as returns_, sum(x.profit)@5 as profit] +04)------AggregateExec: mode=FinalPartitioned, gby=[channel@0 as channel, id@1 as id, __grouping_id@2 as __grouping_id], aggr=[sum(x.sales), sum(x.returns_), sum(x.profit)] +05)--------RepartitionExec: partitioning=Hash([channel@0, id@1, __grouping_id@2], 4), input_partitions=12 +06)----------AggregateExec: mode=Partial, gby=[(NULL as channel, NULL as id), (channel@0 as channel, NULL as id), (channel@0 as channel, id@1 as id)], aggr=[sum(x.sales), sum(x.returns_), sum(x.profit)] +07)------------UnionExec +08)--------------ProjectionExec: expr=[store channel as channel, concat(store, s_store_id@0) as id, sum(store_sales.ss_ext_sales_price)@1 as sales, sum(coalesce(store_returns.sr_return_amt,Int64(0)))@2 as returns_, sum(store_sales.ss_net_profit - coalesce(store_returns.sr_net_loss,Int64(0)))@3 as profit] +09)----------------AggregateExec: mode=FinalPartitioned, gby=[s_store_id@0 as s_store_id], aggr=[sum(store_sales.ss_ext_sales_price), sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE 0.00 END) as sum(coalesce(store_returns.sr_return_amt,Int64(0))), sum(store_sales.ss_net_profit - CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE 0.00 END) as sum(store_sales.ss_net_profit - coalesce(store_returns.sr_net_loss,Int64(0)))] +10)------------------RepartitionExec: partitioning=Hash([s_store_id@0], 4), input_partitions=4 +11)--------------------AggregateExec: mode=Partial, gby=[s_store_id@4 as s_store_id], aggr=[sum(store_sales.ss_ext_sales_price), sum(CASE WHEN __common_expr_1 IS NOT NULL THEN __common_expr_1 ELSE 0.00 END) as sum(coalesce(store_returns.sr_return_amt,Int64(0))), sum(store_sales.ss_net_profit - CASE WHEN __common_expr_2 IS NOT NULL THEN __common_expr_2 ELSE 0.00 END) as sum(store_sales.ss_net_profit - coalesce(store_returns.sr_net_loss,Int64(0)))] +12)----------------------ProjectionExec: expr=[CAST(sr_return_amt@0 AS Decimal128(22, 2)) as __common_expr_1, CAST(sr_net_loss@1 AS Decimal128(22, 2)) as __common_expr_2, ss_ext_sales_price@2 as ss_ext_sales_price, ss_net_profit@3 as ss_net_profit, s_store_id@4 as s_store_id] +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, ss_promo_sk@0)], projection=[sr_return_amt@4, sr_net_loss@5, ss_ext_sales_price@2, ss_net_profit@3, s_store_id@6] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex, predicate: p_channel_tv@11 = N +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@0)], projection=[ss_promo_sk@2, ss_ext_sales_price@3, ss_net_profit@4, sr_return_amt@5, sr_net_loss@6, s_store_id@7] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_current_price@5 > 50.00 +17)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@1)], projection=[ss_item_sk@2, ss_promo_sk@4, ss_ext_sales_price@5, ss_net_profit@6, sr_return_amt@7, sr_net_loss@8, s_store_id@1] +18)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_id], file_type=vortex +19)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@2, ss_store_sk@3, ss_promo_sk@4, ss_ext_sales_price@5, ss_net_profit@6, sr_return_amt@7, sr_net_loss@8] +20)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +21)--------------------------------HashJoinExec: mode=Partitioned, join_type=Right, on=[(sr_item_sk@0, ss_item_sk@1), (sr_ticket_number@1, ss_ticket_number@4)], projection=[ss_sold_date_sk@4, ss_item_sk@5, ss_store_sk@6, ss_promo_sk@7, ss_ext_sales_price@9, ss_net_profit@10, sr_return_amt@2, sr_net_loss@3] +22)----------------------------------RepartitionExec: partitioning=Hash([sr_item_sk@0, sr_ticket_number@1], 4), input_partitions=4 +23)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_ticket_number, sr_return_amt, sr_net_loss], file_type=vortex +24)----------------------------------RepartitionExec: partitioning=Hash([ss_item_sk@1, ss_ticket_number@4], 4), input_partitions=4 +25)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_promo_sk, ss_ticket_number, ss_ext_sales_price, ss_net_profit], file_type=vortex +26)--------------ProjectionExec: expr=[catalog channel as channel, concat(catalog_page, cp_catalog_page_id@0) as id, sum(catalog_sales.cs_ext_sales_price)@1 as sales, sum(coalesce(catalog_returns.cr_return_amount,Int64(0)))@2 as returns_, sum(catalog_sales.cs_net_profit - coalesce(catalog_returns.cr_net_loss,Int64(0)))@3 as profit] +27)----------------AggregateExec: mode=FinalPartitioned, gby=[cp_catalog_page_id@0 as cp_catalog_page_id], aggr=[sum(catalog_sales.cs_ext_sales_price), sum(CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE 0.00 END) as sum(coalesce(catalog_returns.cr_return_amount,Int64(0))), sum(catalog_sales.cs_net_profit - CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE 0.00 END) as sum(catalog_sales.cs_net_profit - coalesce(catalog_returns.cr_net_loss,Int64(0)))] +28)------------------RepartitionExec: partitioning=Hash([cp_catalog_page_id@0], 4), input_partitions=4 +29)--------------------AggregateExec: mode=Partial, gby=[cp_catalog_page_id@4 as cp_catalog_page_id], aggr=[sum(catalog_sales.cs_ext_sales_price), sum(CASE WHEN __common_expr_3 IS NOT NULL THEN __common_expr_3 ELSE 0.00 END) as sum(coalesce(catalog_returns.cr_return_amount,Int64(0))), sum(catalog_sales.cs_net_profit - CASE WHEN __common_expr_4 IS NOT NULL THEN __common_expr_4 ELSE 0.00 END) as sum(catalog_sales.cs_net_profit - coalesce(catalog_returns.cr_net_loss,Int64(0)))] +30)----------------------ProjectionExec: expr=[CAST(cr_return_amount@0 AS Decimal128(22, 2)) as __common_expr_3, CAST(cr_net_loss@1 AS Decimal128(22, 2)) as __common_expr_4, cs_ext_sales_price@2 as cs_ext_sales_price, cs_net_profit@3 as cs_net_profit, cp_catalog_page_id@4 as cp_catalog_page_id] +31)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, cs_promo_sk@0)], projection=[cr_return_amount@4, cr_net_loss@5, cs_ext_sales_price@2, cs_net_profit@3, cp_catalog_page_id@6] +32)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex, predicate: p_channel_tv@11 = N +33)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cs_item_sk@0)], projection=[cs_promo_sk@2, cs_ext_sales_price@3, cs_net_profit@4, cr_return_amount@5, cr_net_loss@6, cp_catalog_page_id@7] +34)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_current_price@5 > 50.00 +35)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cs_catalog_page_sk@0, cp_catalog_page_sk@0)], projection=[cs_item_sk@1, cs_promo_sk@2, cs_ext_sales_price@3, cs_net_profit@4, cr_return_amount@5, cr_net_loss@6, cp_catalog_page_id@8] +36)------------------------------CoalescePartitionsExec +37)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_catalog_page_sk@2, cs_item_sk@3, cs_promo_sk@4, cs_ext_sales_price@5, cs_net_profit@6, cr_return_amount@7, cr_net_loss@8] +38)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +39)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(cr_item_sk@0, cs_item_sk@2), (cr_order_number@1, cs_order_number@4)], projection=[cs_sold_date_sk@4, cs_catalog_page_sk@5, cs_item_sk@6, cs_promo_sk@7, cs_ext_sales_price@9, cs_net_profit@10, cr_return_amount@2, cr_net_loss@3] +40)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_item_sk, cr_order_number, cr_return_amount, cr_net_loss], file_type=vortex +41)------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_catalog_page_sk, cs_item_sk, cs_promo_sk, cs_order_number, cs_ext_sales_price, cs_net_profit], file_type=vortex +42)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +43)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_page.vortex]]}, projection=[cp_catalog_page_sk, cp_catalog_page_id], file_type=vortex +44)--------------ProjectionExec: expr=[web channel as channel, concat(web_site, web_site_id@0) as id, sum(web_sales.ws_ext_sales_price)@1 as sales, sum(coalesce(web_returns.wr_return_amt,Int64(0)))@2 as returns_, sum(web_sales.ws_net_profit - coalesce(web_returns.wr_net_loss,Int64(0)))@3 as profit] +45)----------------AggregateExec: mode=FinalPartitioned, gby=[web_site_id@0 as web_site_id], aggr=[sum(web_sales.ws_ext_sales_price), sum(CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE 0.00 END) as sum(coalesce(web_returns.wr_return_amt,Int64(0))), sum(web_sales.ws_net_profit - CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE 0.00 END) as sum(web_sales.ws_net_profit - coalesce(web_returns.wr_net_loss,Int64(0)))] +46)------------------RepartitionExec: partitioning=Hash([web_site_id@0], 4), input_partitions=4 +47)--------------------AggregateExec: mode=Partial, gby=[web_site_id@4 as web_site_id], aggr=[sum(web_sales.ws_ext_sales_price), sum(CASE WHEN __common_expr_5 IS NOT NULL THEN __common_expr_5 ELSE 0.00 END) as sum(coalesce(web_returns.wr_return_amt,Int64(0))), sum(web_sales.ws_net_profit - CASE WHEN __common_expr_6 IS NOT NULL THEN __common_expr_6 ELSE 0.00 END) as sum(web_sales.ws_net_profit - coalesce(web_returns.wr_net_loss,Int64(0)))] +48)----------------------ProjectionExec: expr=[CAST(wr_return_amt@0 AS Decimal128(22, 2)) as __common_expr_5, CAST(wr_net_loss@1 AS Decimal128(22, 2)) as __common_expr_6, ws_ext_sales_price@2 as ws_ext_sales_price, ws_net_profit@3 as ws_net_profit, web_site_id@4 as web_site_id] +49)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(p_promo_sk@0, ws_promo_sk@0)], projection=[wr_return_amt@4, wr_net_loss@5, ws_ext_sales_price@2, ws_net_profit@3, web_site_id@6] +50)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/promotion.vortex]]}, projection=[p_promo_sk], file_type=vortex, predicate: p_channel_tv@11 = N +51)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@0)], projection=[ws_promo_sk@2, ws_ext_sales_price@3, ws_net_profit@4, wr_return_amt@5, wr_net_loss@6, web_site_id@7] +52)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_current_price@5 > 50.00 +53)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(web_site_sk@0, ws_web_site_sk@1)], projection=[ws_item_sk@2, ws_promo_sk@4, ws_ext_sales_price@5, ws_net_profit@6, wr_return_amt@7, wr_net_loss@8, web_site_id@1] +54)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_site.vortex]]}, projection=[web_site_sk, web_site_id], file_type=vortex +55)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_web_site_sk@3, ws_promo_sk@4, ws_ext_sales_price@5, ws_net_profit@6, wr_return_amt@7, wr_net_loss@8] +56)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-08-23 AND d_date@2 <= 2000-09-22 +57)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(wr_item_sk@0, ws_item_sk@1), (wr_order_number@1, ws_order_number@4)], projection=[ws_sold_date_sk@4, ws_item_sk@5, ws_web_site_sk@6, ws_promo_sk@7, ws_ext_sales_price@9, ws_net_profit@10, wr_return_amt@2, wr_net_loss@3] +58)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_item_sk, wr_order_number, wr_return_amt, wr_net_loss], file_type=vortex +59)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_web_site_sk, ws_promo_sk, ws_order_number, ws_ext_sales_price, ws_net_profit], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q81.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q81.slt.no new file mode 100644 index 00000000000..e5acd1d66bc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q81.slt.no @@ -0,0 +1,140 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH customer_total_return AS + (SELECT cr_returning_customer_sk AS ctr_customer_sk , + ca_state AS ctr_state, + sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns , + date_dim , + customer_address + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk , + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1 , + customer_address , + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +LIMIT 100; +---- +logical_plan +01)Sort: customer.c_customer_id ASC NULLS LAST, customer.c_salutation ASC NULLS LAST, customer.c_first_name ASC NULLS LAST, customer.c_last_name ASC NULLS LAST, customer_address.ca_street_number ASC NULLS LAST, customer_address.ca_street_name ASC NULLS LAST, customer_address.ca_street_type ASC NULLS LAST, customer_address.ca_suite_number ASC NULLS LAST, customer_address.ca_city ASC NULLS LAST, customer_address.ca_county ASC NULLS LAST, customer_address.ca_state ASC NULLS LAST, customer_address.ca_zip ASC NULLS LAST, customer_address.ca_country ASC NULLS LAST, customer_address.ca_gmt_offset ASC NULLS LAST, customer_address.ca_location_type ASC NULLS LAST, ctr1.ctr_total_return ASC NULLS LAST, fetch=100 +02)--Projection: customer.c_customer_id, customer.c_salutation, customer.c_first_name, customer.c_last_name, customer_address.ca_street_number, customer_address.ca_street_name, customer_address.ca_street_type, customer_address.ca_suite_number, customer_address.ca_city, customer_address.ca_county, customer_address.ca_state, customer_address.ca_zip, customer_address.ca_country, customer_address.ca_gmt_offset, customer_address.ca_location_type, ctr1.ctr_total_return +03)----LeftSemi Join: ctr1.ctr_state = __scalar_sq_1.ctr_state Filter: CAST(ctr1.ctr_total_return AS Decimal128(30, 15)) > __scalar_sq_1.avg(ctr2.ctr_total_return) * Float64(1.2) +04)------Projection: ctr1.ctr_state, ctr1.ctr_total_return, customer_address.ca_street_number, customer_address.ca_street_name, customer_address.ca_street_type, customer_address.ca_suite_number, customer_address.ca_city, customer_address.ca_county, customer_address.ca_state, customer_address.ca_zip, customer_address.ca_country, customer_address.ca_gmt_offset, customer_address.ca_location_type, customer.c_customer_id, customer.c_salutation, customer.c_first_name, customer.c_last_name +05)--------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +06)----------Projection: ctr1.ctr_state, ctr1.ctr_total_return, customer.c_customer_id, customer.c_current_addr_sk, customer.c_salutation, customer.c_first_name, customer.c_last_name +07)------------Inner Join: ctr1.ctr_customer_sk = customer.c_customer_sk +08)--------------SubqueryAlias: ctr1 +09)----------------SubqueryAlias: customer_total_return +10)------------------Projection: catalog_returns.cr_returning_customer_sk AS ctr_customer_sk, customer_address.ca_state AS ctr_state, sum(catalog_returns.cr_return_amt_inc_tax) AS ctr_total_return +11)--------------------Aggregate: groupBy=[[catalog_returns.cr_returning_customer_sk, customer_address.ca_state]], aggr=[[sum(catalog_returns.cr_return_amt_inc_tax)]] +12)----------------------Projection: catalog_returns.cr_returning_customer_sk, catalog_returns.cr_return_amt_inc_tax, customer_address.ca_state +13)------------------------Inner Join: catalog_returns.cr_returning_addr_sk = customer_address.ca_address_sk +14)--------------------------Projection: catalog_returns.cr_returning_customer_sk, catalog_returns.cr_returning_addr_sk, catalog_returns.cr_return_amt_inc_tax +15)----------------------------Inner Join: catalog_returns.cr_returned_date_sk = date_dim.d_date_sk +16)------------------------------TableScan: catalog_returns projection=[cr_returned_date_sk, cr_returning_customer_sk, cr_returning_addr_sk, cr_return_amt_inc_tax] +17)------------------------------Projection: date_dim.d_date_sk +18)--------------------------------Filter: date_dim.d_year = Int64(2000) +19)----------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +20)--------------------------TableScan: customer_address projection=[ca_address_sk, ca_state] +21)--------------TableScan: customer projection=[c_customer_sk, c_customer_id, c_current_addr_sk, c_salutation, c_first_name, c_last_name] +22)----------Filter: customer_address.ca_state = Utf8View("GA") +23)------------TableScan: customer_address projection=[ca_address_sk, ca_street_number, ca_street_name, ca_street_type, ca_suite_number, ca_city, ca_county, ca_state, ca_zip, ca_country, ca_gmt_offset, ca_location_type], partial_filters=[customer_address.ca_state = Utf8View("GA")] +24)------SubqueryAlias: __scalar_sq_1 +25)--------Projection: CAST(CAST(avg(ctr2.ctr_total_return) AS Float64) * Float64(1.2) AS Decimal128(30, 15)), ctr2.ctr_state +26)----------Aggregate: groupBy=[[ctr2.ctr_state]], aggr=[[avg(ctr2.ctr_total_return)]] +27)------------SubqueryAlias: ctr2 +28)--------------SubqueryAlias: customer_total_return +29)----------------Projection: customer_address.ca_state AS ctr_state, sum(catalog_returns.cr_return_amt_inc_tax) AS ctr_total_return +30)------------------Aggregate: groupBy=[[catalog_returns.cr_returning_customer_sk, customer_address.ca_state]], aggr=[[sum(catalog_returns.cr_return_amt_inc_tax)]] +31)--------------------Projection: catalog_returns.cr_returning_customer_sk, catalog_returns.cr_return_amt_inc_tax, customer_address.ca_state +32)----------------------Inner Join: catalog_returns.cr_returning_addr_sk = customer_address.ca_address_sk +33)------------------------Projection: catalog_returns.cr_returning_customer_sk, catalog_returns.cr_returning_addr_sk, catalog_returns.cr_return_amt_inc_tax +34)--------------------------Inner Join: catalog_returns.cr_returned_date_sk = date_dim.d_date_sk +35)----------------------------TableScan: catalog_returns projection=[cr_returned_date_sk, cr_returning_customer_sk, cr_returning_addr_sk, cr_return_amt_inc_tax] +36)----------------------------Projection: date_dim.d_date_sk +37)------------------------------Filter: date_dim.d_year = Int64(2000) +38)--------------------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +39)------------------------TableScan: customer_address projection=[ca_address_sk, ca_state] +physical_plan +01)SortPreservingMergeExec: [c_customer_id@0 ASC NULLS LAST, c_salutation@1 ASC NULLS LAST, c_first_name@2 ASC NULLS LAST, c_last_name@3 ASC NULLS LAST, ca_street_number@4 ASC NULLS LAST, ca_street_name@5 ASC NULLS LAST, ca_street_type@6 ASC NULLS LAST, ca_suite_number@7 ASC NULLS LAST, ca_city@8 ASC NULLS LAST, ca_county@9 ASC NULLS LAST, ca_state@10 ASC NULLS LAST, ca_zip@11 ASC NULLS LAST, ca_country@12 ASC NULLS LAST, ca_gmt_offset@13 ASC NULLS LAST, ca_location_type@14 ASC NULLS LAST, ctr_total_return@15 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[c_customer_id@0 ASC NULLS LAST, c_salutation@1 ASC NULLS LAST, c_first_name@2 ASC NULLS LAST, c_last_name@3 ASC NULLS LAST, ca_street_number@4 ASC NULLS LAST, ca_street_name@5 ASC NULLS LAST, ca_street_type@6 ASC NULLS LAST, ca_suite_number@7 ASC NULLS LAST, ca_city@8 ASC NULLS LAST, ca_county@9 ASC NULLS LAST, ca_zip@11 ASC NULLS LAST, ca_country@12 ASC NULLS LAST, ca_gmt_offset@13 ASC NULLS LAST, ca_location_type@14 ASC NULLS LAST, ctr_total_return@15 ASC NULLS LAST], preserve_partitioning=[true] +03)----HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ctr_state@0, ctr_state@1)], filter=CAST(ctr_total_return@0 AS Decimal128(30, 15)) > avg(ctr2.ctr_total_return) * Float64(1.2)@1, projection=[c_customer_id@13, c_salutation@14, c_first_name@15, c_last_name@16, ca_street_number@2, ca_street_name@3, ca_street_type@4, ca_suite_number@5, ca_city@6, ca_county@7, ca_state@8, ca_zip@9, ca_country@10, ca_gmt_offset@11, ca_location_type@12, ctr_total_return@1] +04)------CoalescePartitionsExec +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@3)], projection=[ctr_state@12, ctr_total_return@13, ca_street_number@1, ca_street_name@2, ca_street_type@3, ca_suite_number@4, ca_city@5, ca_county@6, ca_state@7, ca_zip@8, ca_country@9, ca_gmt_offset@10, ca_location_type@11, c_customer_id@14, c_salutation@16, c_first_name@17, c_last_name@18] +06)----------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_street_number, ca_street_name, ca_street_type, ca_suite_number, ca_city, ca_county, ca_state, ca_zip, ca_country, ca_gmt_offset, ca_location_type], file_type=vortex, predicate: ca_state@8 = GA +07)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ctr_customer_sk@0, c_customer_sk@0)], projection=[ctr_state@1, ctr_total_return@2, c_customer_id@4, c_current_addr_sk@5, c_salutation@6, c_first_name@7, c_last_name@8] +08)------------CoalescePartitionsExec +09)--------------ProjectionExec: expr=[cr_returning_customer_sk@0 as ctr_customer_sk, ca_state@1 as ctr_state, sum(catalog_returns.cr_return_amt_inc_tax)@2 as ctr_total_return] +10)----------------AggregateExec: mode=FinalPartitioned, gby=[cr_returning_customer_sk@0 as cr_returning_customer_sk, ca_state@1 as ca_state], aggr=[sum(catalog_returns.cr_return_amt_inc_tax)] +11)------------------RepartitionExec: partitioning=Hash([cr_returning_customer_sk@0, ca_state@1], 4), input_partitions=4 +12)--------------------AggregateExec: mode=Partial, gby=[cr_returning_customer_sk@0 as cr_returning_customer_sk, ca_state@2 as ca_state], aggr=[sum(catalog_returns.cr_return_amt_inc_tax)] +13)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +14)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_returning_addr_sk@1, ca_address_sk@0)], projection=[cr_returning_customer_sk@0, cr_return_amt_inc_tax@2, ca_state@4] +15)--------------------------CoalescePartitionsExec +16)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cr_returned_date_sk@0)], projection=[cr_returning_customer_sk@2, cr_returning_addr_sk@3, cr_return_amt_inc_tax@4] +17)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +18)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +19)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_returned_date_sk, cr_returning_customer_sk, cr_returning_addr_sk, cr_return_amt_inc_tax], file_type=vortex +20)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex +21)------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_customer_id, c_current_addr_sk, c_salutation, c_first_name, c_last_name], file_type=vortex +23)------ProjectionExec: expr=[CAST(CAST(avg(ctr2.ctr_total_return)@1 AS Float64) * 1.2 AS Decimal128(30, 15)) as avg(ctr2.ctr_total_return) * Float64(1.2), ctr_state@0 as ctr_state] +24)--------AggregateExec: mode=FinalPartitioned, gby=[ctr_state@0 as ctr_state], aggr=[avg(ctr2.ctr_total_return)] +25)----------RepartitionExec: partitioning=Hash([ctr_state@0], 4), input_partitions=4 +26)------------AggregateExec: mode=Partial, gby=[ctr_state@0 as ctr_state], aggr=[avg(ctr2.ctr_total_return)] +27)--------------ProjectionExec: expr=[ca_state@1 as ctr_state, sum(catalog_returns.cr_return_amt_inc_tax)@2 as ctr_total_return] +28)----------------AggregateExec: mode=FinalPartitioned, gby=[cr_returning_customer_sk@0 as cr_returning_customer_sk, ca_state@1 as ca_state], aggr=[sum(catalog_returns.cr_return_amt_inc_tax)] +29)------------------RepartitionExec: partitioning=Hash([cr_returning_customer_sk@0, ca_state@1], 4), input_partitions=4 +30)--------------------AggregateExec: mode=Partial, gby=[cr_returning_customer_sk@0 as cr_returning_customer_sk, ca_state@2 as ca_state], aggr=[sum(catalog_returns.cr_return_amt_inc_tax)] +31)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +32)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_returning_addr_sk@1, ca_address_sk@0)], projection=[cr_returning_customer_sk@0, cr_return_amt_inc_tax@2, ca_state@4] +33)--------------------------CoalescePartitionsExec +34)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cr_returned_date_sk@0)], projection=[cr_returning_customer_sk@2, cr_returning_addr_sk@3, cr_return_amt_inc_tax@4] +35)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +36)------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +37)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_returned_date_sk, cr_returning_customer_sk, cr_returning_addr_sk, cr_return_amt_inc_tax], file_type=vortex +38)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q82.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q82.slt.no new file mode 100644 index 00000000000..56e3af18835 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q82.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id , + i_item_desc , + i_current_price +FROM item, + inventory, + date_dim, + store_sales +WHERE i_current_price BETWEEN 62 AND 62+30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-05-25' AS date) AND cast('2000-07-24' AS date) + AND i_manufact_id IN (129, + 270, + 821, + 423) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND ss_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan +01)Sort: item.i_item_id ASC NULLS LAST, fetch=100 +02)--Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, item.i_current_price]], aggr=[[]] +03)----Projection: item.i_item_id, item.i_item_desc, item.i_current_price +04)------LeftSemi Join: item.i_item_sk = store_sales.ss_item_sk +05)--------Projection: item.i_item_sk, item.i_item_id, item.i_item_desc, item.i_current_price +06)----------LeftSemi Join: inventory.inv_date_sk = date_dim.d_date_sk +07)------------Projection: item.i_item_sk, item.i_item_id, item.i_item_desc, item.i_current_price, inventory.inv_date_sk +08)--------------Inner Join: item.i_item_sk = inventory.inv_item_sk +09)----------------Projection: item.i_item_sk, item.i_item_id, item.i_item_desc, item.i_current_price +10)------------------Filter: item.i_current_price >= Decimal128(62.00,7,2) AND item.i_current_price <= Decimal128(92.00,7,2) AND item.i_manufact_id IN ([Int64(129), Int64(270), Int64(821), Int64(423)]) +11)--------------------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_manufact_id], partial_filters=[item.i_current_price >= Decimal128(62.00,7,2), item.i_current_price <= Decimal128(92.00,7,2), item.i_manufact_id IN ([Int64(129), Int64(270), Int64(821), Int64(423)])] +12)----------------Projection: inventory.inv_date_sk, inventory.inv_item_sk +13)------------------Filter: inventory.inv_quantity_on_hand >= Int32(100) AND inventory.inv_quantity_on_hand <= Int32(500) +14)--------------------TableScan: inventory projection=[inv_date_sk, inv_item_sk, inv_quantity_on_hand], partial_filters=[inventory.inv_quantity_on_hand >= Int32(100), inventory.inv_quantity_on_hand <= Int32(500)] +15)------------Projection: date_dim.d_date_sk +16)--------------Filter: date_dim.d_date >= Date32("2000-05-25") AND date_dim.d_date <= Date32("2000-07-24") +17)----------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-05-25"), date_dim.d_date <= Date32("2000-07-24")] +18)--------TableScan: store_sales projection=[ss_item_sk] +physical_plan +01)SortPreservingMergeExec: [i_item_id@0 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[i_item_id@0 ASC NULLS LAST], preserve_partitioning=[true] +03)----AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_current_price@2 as i_current_price], aggr=[] +04)------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, i_current_price@2], 4), input_partitions=4 +05)--------AggregateExec: mode=Partial, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_current_price@2 as i_current_price], aggr=[] +06)----------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_item_sk@0, ss_item_sk@0)], projection=[i_item_id@1, i_item_desc@2, i_current_price@3] +07)------------CoalescePartitionsExec +08)--------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, inv_date_sk@4)], projection=[i_item_sk@0, i_item_id@1, i_item_desc@2, i_current_price@3] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-05-25 AND d_date@2 <= 2000-07-24 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, inv_item_sk@1)], projection=[i_item_sk@0, i_item_id@1, i_item_desc@2, i_current_price@3, inv_date_sk@4] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc, i_current_price], file_type=vortex, predicate: i_current_price@5 >= 62.00 AND i_current_price@5 <= 92.00 AND i_manufact_id@13 IN (SET) ([129, 270, 821, 423]) +12)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/inventory.vortex]]}, projection=[inv_date_sk, inv_item_sk], file_type=vortex, predicate: inv_quantity_on_hand@3 >= 100 AND inv_quantity_on_hand@3 <= 500 +14)------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_item_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q83.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q83.slt.no new file mode 100644 index 00000000000..75cdabbe3bf --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q83.slt.no @@ -0,0 +1,203 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH sr_items AS + (SELECT i_item_id item_id, + sum(sr_return_quantity) sr_item_qty + FROM store_returns, + item, + date_dim + WHERE sr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items AS + (SELECT i_item_id item_id, + sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, + item, + date_dim + WHERE cr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items AS + (SELECT i_item_id item_id, + sum(wr_return_quantity) wr_item_qty + FROM web_returns, + item, + date_dim + WHERE wr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT sr_items.item_id , + sr_item_qty , + (sr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 sr_dev , + cr_item_qty , + (cr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 cr_dev , + wr_item_qty , + (wr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 wr_dev , + (sr_item_qty+cr_item_qty+wr_item_qty)/3.0 average +FROM sr_items , + cr_items , + wr_items +WHERE sr_items.item_id=cr_items.item_id + AND sr_items.item_id=wr_items.item_id +ORDER BY sr_items.item_id NULLS FIRST, + sr_item_qty NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: sr_items.item_id ASC NULLS FIRST, fetch=100 +02)--Projection: sr_items.item_id, sr_items.sr_item_qty, CAST(sr_items.sr_item_qty AS Float64) / __common_expr_7 / Float64(3) * Float64(100) AS sr_dev, cr_items.cr_item_qty, CAST(cr_items.cr_item_qty AS Float64) / __common_expr_7 / Float64(3) * Float64(100) AS cr_dev, wr_items.wr_item_qty, CAST(wr_items.wr_item_qty AS Float64) / __common_expr_7 / Float64(3) * Float64(100) AS wr_dev, __common_expr_7 / Float64(3) AS average +03)----Projection: CAST(sr_items.sr_item_qty + cr_items.cr_item_qty + wr_items.wr_item_qty AS Float64) AS __common_expr_7, sr_items.item_id, sr_items.sr_item_qty, cr_items.cr_item_qty, wr_items.wr_item_qty +04)------Inner Join: sr_items.item_id = wr_items.item_id +05)--------Projection: sr_items.item_id, sr_items.sr_item_qty, cr_items.cr_item_qty +06)----------Inner Join: sr_items.item_id = cr_items.item_id +07)------------SubqueryAlias: sr_items +08)--------------Projection: item.i_item_id AS item_id, sum(store_returns.sr_return_quantity) AS sr_item_qty +09)----------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(store_returns.sr_return_quantity)]] +10)------------------Projection: store_returns.sr_return_quantity, item.i_item_id +11)--------------------LeftSemi Join: date_dim.d_date = __correlated_sq_2.d_date +12)----------------------Projection: store_returns.sr_return_quantity, item.i_item_id, date_dim.d_date +13)------------------------Inner Join: store_returns.sr_returned_date_sk = date_dim.d_date_sk +14)--------------------------Projection: store_returns.sr_returned_date_sk, store_returns.sr_return_quantity, item.i_item_id +15)----------------------------Inner Join: store_returns.sr_item_sk = item.i_item_sk +16)------------------------------TableScan: store_returns projection=[sr_returned_date_sk, sr_item_sk, sr_return_quantity] +17)------------------------------TableScan: item projection=[i_item_sk, i_item_id] +18)--------------------------TableScan: date_dim projection=[d_date_sk, d_date] +19)----------------------SubqueryAlias: __correlated_sq_2 +20)------------------------Projection: date_dim.d_date +21)--------------------------LeftSemi Join: date_dim.d_week_seq = __correlated_sq_1.d_week_seq +22)----------------------------TableScan: date_dim projection=[d_date, d_week_seq] +23)----------------------------SubqueryAlias: __correlated_sq_1 +24)------------------------------Projection: date_dim.d_week_seq +25)--------------------------------Filter: date_dim.d_date = Date32("2000-06-30") OR date_dim.d_date = Date32("2000-09-27") OR date_dim.d_date = Date32("2000-11-17") +26)----------------------------------TableScan: date_dim projection=[d_date, d_week_seq], partial_filters=[date_dim.d_date = Date32("2000-06-30") OR date_dim.d_date = Date32("2000-09-27") OR date_dim.d_date = Date32("2000-11-17")] +27)------------SubqueryAlias: cr_items +28)--------------Projection: item.i_item_id AS item_id, sum(catalog_returns.cr_return_quantity) AS cr_item_qty +29)----------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(catalog_returns.cr_return_quantity)]] +30)------------------Projection: catalog_returns.cr_return_quantity, item.i_item_id +31)--------------------LeftSemi Join: date_dim.d_date = __correlated_sq_4.d_date +32)----------------------Projection: catalog_returns.cr_return_quantity, item.i_item_id, date_dim.d_date +33)------------------------Inner Join: catalog_returns.cr_returned_date_sk = date_dim.d_date_sk +34)--------------------------Projection: catalog_returns.cr_returned_date_sk, catalog_returns.cr_return_quantity, item.i_item_id +35)----------------------------Inner Join: catalog_returns.cr_item_sk = item.i_item_sk +36)------------------------------TableScan: catalog_returns projection=[cr_returned_date_sk, cr_item_sk, cr_return_quantity] +37)------------------------------TableScan: item projection=[i_item_sk, i_item_id] +38)--------------------------TableScan: date_dim projection=[d_date_sk, d_date] +39)----------------------SubqueryAlias: __correlated_sq_4 +40)------------------------Projection: date_dim.d_date +41)--------------------------LeftSemi Join: date_dim.d_week_seq = __correlated_sq_3.d_week_seq +42)----------------------------TableScan: date_dim projection=[d_date, d_week_seq] +43)----------------------------SubqueryAlias: __correlated_sq_3 +44)------------------------------Projection: date_dim.d_week_seq +45)--------------------------------Filter: date_dim.d_date = Date32("2000-06-30") OR date_dim.d_date = Date32("2000-09-27") OR date_dim.d_date = Date32("2000-11-17") +46)----------------------------------TableScan: date_dim projection=[d_date, d_week_seq], partial_filters=[date_dim.d_date = Date32("2000-06-30") OR date_dim.d_date = Date32("2000-09-27") OR date_dim.d_date = Date32("2000-11-17")] +47)--------SubqueryAlias: wr_items +48)----------Projection: item.i_item_id AS item_id, sum(web_returns.wr_return_quantity) AS wr_item_qty +49)------------Aggregate: groupBy=[[item.i_item_id]], aggr=[[sum(web_returns.wr_return_quantity)]] +50)--------------Projection: web_returns.wr_return_quantity, item.i_item_id +51)----------------LeftSemi Join: date_dim.d_date = __correlated_sq_6.d_date +52)------------------Projection: web_returns.wr_return_quantity, item.i_item_id, date_dim.d_date +53)--------------------Inner Join: web_returns.wr_returned_date_sk = date_dim.d_date_sk +54)----------------------Projection: web_returns.wr_returned_date_sk, web_returns.wr_return_quantity, item.i_item_id +55)------------------------Inner Join: web_returns.wr_item_sk = item.i_item_sk +56)--------------------------TableScan: web_returns projection=[wr_returned_date_sk, wr_item_sk, wr_return_quantity] +57)--------------------------TableScan: item projection=[i_item_sk, i_item_id] +58)----------------------TableScan: date_dim projection=[d_date_sk, d_date] +59)------------------SubqueryAlias: __correlated_sq_6 +60)--------------------Projection: date_dim.d_date +61)----------------------LeftSemi Join: date_dim.d_week_seq = __correlated_sq_5.d_week_seq +62)------------------------TableScan: date_dim projection=[d_date, d_week_seq] +63)------------------------SubqueryAlias: __correlated_sq_5 +64)--------------------------Projection: date_dim.d_week_seq +65)----------------------------Filter: date_dim.d_date = Date32("2000-06-30") OR date_dim.d_date = Date32("2000-09-27") OR date_dim.d_date = Date32("2000-11-17") +66)------------------------------TableScan: date_dim projection=[d_date, d_week_seq], partial_filters=[date_dim.d_date = Date32("2000-06-30") OR date_dim.d_date = Date32("2000-09-27") OR date_dim.d_date = Date32("2000-11-17")] +physical_plan +01)SortPreservingMergeExec: [item_id@0 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[item_id@0 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[item_id@1 as item_id, sr_item_qty@2 as sr_item_qty, CAST(sr_item_qty@2 AS Float64) / __common_expr_7@0 / 3 * 100 as sr_dev, cr_item_qty@3 as cr_item_qty, CAST(cr_item_qty@3 AS Float64) / __common_expr_7@0 / 3 * 100 as cr_dev, wr_item_qty@4 as wr_item_qty, CAST(wr_item_qty@4 AS Float64) / __common_expr_7@0 / 3 * 100 as wr_dev, __common_expr_7@0 / 3 as average] +04)------ProjectionExec: expr=[CAST(sr_item_qty@0 + cr_item_qty@1 + wr_item_qty@2 AS Float64) as __common_expr_7, item_id@3 as item_id, sr_item_qty@0 as sr_item_qty, cr_item_qty@1 as cr_item_qty, wr_item_qty@2 as wr_item_qty] +05)--------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_id@0, item_id@0)], projection=[sr_item_qty@3, cr_item_qty@4, wr_item_qty@1, item_id@2] +06)----------CoalescePartitionsExec +07)------------ProjectionExec: expr=[i_item_id@0 as item_id, sum(web_returns.wr_return_quantity)@1 as wr_item_qty] +08)--------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(web_returns.wr_return_quantity)] +09)----------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +10)------------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(web_returns.wr_return_quantity)] +11)--------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(d_date@2, d_date@0)], projection=[wr_return_quantity@0, i_item_id@1] +12)----------------------CoalescePartitionsExec +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wr_returned_date_sk@0, d_date_sk@0)], projection=[wr_return_quantity@1, i_item_id@2, d_date@4] +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, wr_item_sk@1)], projection=[wr_returned_date_sk@2, wr_return_quantity@4, i_item_id@1] +15)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_returned_date_sk, wr_item_sk, wr_return_quantity], file_type=vortex +17)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +18)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +19)----------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_week_seq@0, d_week_seq@1)], projection=[d_date@0] +20)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_date@2 = 2000-06-30 OR d_date@2 = 2000-09-27 OR d_date@2 = 2000-11-17 +21)------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date, d_week_seq], file_type=vortex +23)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(item_id@0, item_id@0)], projection=[item_id@2, sr_item_qty@3, cr_item_qty@1] +24)------------CoalescePartitionsExec +25)--------------ProjectionExec: expr=[i_item_id@0 as item_id, sum(catalog_returns.cr_return_quantity)@1 as cr_item_qty] +26)----------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(catalog_returns.cr_return_quantity)] +27)------------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +28)--------------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(catalog_returns.cr_return_quantity)] +29)----------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(d_date@2, d_date@0)], projection=[cr_return_quantity@0, i_item_id@1] +30)------------------------CoalescePartitionsExec +31)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_returned_date_sk@0, d_date_sk@0)], projection=[cr_return_quantity@1, i_item_id@2, d_date@4] +32)----------------------------CoalescePartitionsExec +33)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, cr_item_sk@1)], projection=[cr_returned_date_sk@2, cr_return_quantity@4, i_item_id@1] +34)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +35)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +36)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_returned_date_sk, cr_item_sk, cr_return_quantity], file_type=vortex +37)----------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +38)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +39)------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_week_seq@0, d_week_seq@1)], projection=[d_date@0] +40)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_date@2 = 2000-06-30 OR d_date@2 = 2000-09-27 OR d_date@2 = 2000-11-17 +41)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +42)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date, d_week_seq], file_type=vortex +43)------------ProjectionExec: expr=[i_item_id@0 as item_id, sum(store_returns.sr_return_quantity)@1 as sr_item_qty] +44)--------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id], aggr=[sum(store_returns.sr_return_quantity)] +45)----------------RepartitionExec: partitioning=Hash([i_item_id@0], 4), input_partitions=4 +46)------------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id], aggr=[sum(store_returns.sr_return_quantity)] +47)--------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(d_date@2, d_date@0)], projection=[sr_return_quantity@0, i_item_id@1] +48)----------------------CoalescePartitionsExec +49)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sr_returned_date_sk@0, d_date_sk@0)], projection=[sr_return_quantity@1, i_item_id@2, d_date@4] +50)--------------------------CoalescePartitionsExec +51)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, sr_item_sk@1)], projection=[sr_returned_date_sk@2, sr_return_quantity@4, i_item_id@1] +52)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id], file_type=vortex +53)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_returned_date_sk, sr_item_sk, sr_return_quantity], file_type=vortex +54)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +55)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex +56)----------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_week_seq@0, d_week_seq@1)], projection=[d_date@0] +57)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_week_seq], file_type=vortex, predicate: d_date@2 = 2000-06-30 OR d_date@2 = 2000-09-27 OR d_date@2 = 2000-11-17 +58)------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +59)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date, d_week_seq], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q84.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q84.slt.no new file mode 100644 index 00000000000..7ffc1e4be40 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q84.slt.no @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT c_customer_id AS customer_id , + concat(concat(coalesce(c_last_name, '') , ', '), coalesce(c_first_name, '')) AS customername +FROM customer , + customer_address , + customer_demographics , + household_demographics , + income_band , + store_returns +WHERE ca_city = 'Edgewood' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 38128 + AND ib_upper_bound <= 38128 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: customer_id ASC NULLS FIRST, fetch=100 +02)--Projection: customer.c_customer_id AS customer_id, concat(concat(CASE WHEN customer.c_last_name IS NOT NULL THEN customer.c_last_name ELSE Utf8View("") END, Utf8View(", ")), CASE WHEN customer.c_first_name IS NOT NULL THEN customer.c_first_name ELSE Utf8View("") END) AS customername +03)----Inner Join: customer_demographics.cd_demo_sk = store_returns.sr_cdemo_sk +04)------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer_demographics.cd_demo_sk +05)--------Inner Join: household_demographics.hd_income_band_sk = income_band.ib_income_band_sk +06)----------Projection: customer.c_customer_id, customer.c_first_name, customer.c_last_name, customer_demographics.cd_demo_sk, household_demographics.hd_income_band_sk +07)------------Inner Join: customer.c_current_hdemo_sk = household_demographics.hd_demo_sk +08)--------------Projection: customer.c_customer_id, customer.c_current_hdemo_sk, customer.c_first_name, customer.c_last_name, customer_demographics.cd_demo_sk +09)----------------Inner Join: customer.c_current_cdemo_sk = customer_demographics.cd_demo_sk +10)------------------Projection: customer.c_customer_id, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_first_name, customer.c_last_name +11)--------------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +12)----------------------TableScan: customer projection=[c_customer_id, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk, c_first_name, c_last_name] +13)----------------------Projection: customer_address.ca_address_sk +14)------------------------Filter: customer_address.ca_city = Utf8View("Edgewood") +15)--------------------------TableScan: customer_address projection=[ca_address_sk, ca_city], partial_filters=[customer_address.ca_city = Utf8View("Edgewood")] +16)------------------TableScan: customer_demographics projection=[cd_demo_sk] +17)--------------TableScan: household_demographics projection=[hd_demo_sk, hd_income_band_sk] +18)----------Projection: income_band.ib_income_band_sk +19)------------Filter: income_band.ib_lower_bound >= Int64(38128) AND income_band.ib_upper_bound <= Int32(88128) +20)--------------TableScan: income_band projection=[ib_income_band_sk, ib_lower_bound, ib_upper_bound], partial_filters=[income_band.ib_lower_bound >= Int64(38128), income_band.ib_upper_bound <= Int32(88128)] +21)------TableScan: store_returns projection=[sr_cdemo_sk] +physical_plan +01)SortPreservingMergeExec: [customer_id@0 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[customer_id@0 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[c_customer_id@0 as customer_id, concat(concat(CASE WHEN c_last_name@1 IS NOT NULL THEN c_last_name@1 ELSE END, , ), CASE WHEN c_first_name@2 IS NOT NULL THEN c_first_name@2 ELSE END) as customername] +04)------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@3, sr_cdemo_sk@0)], projection=[c_customer_id@0, c_last_name@2, c_first_name@1] +05)--------CoalescePartitionsExec +06)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ib_income_band_sk@0, hd_income_band_sk@4)], projection=[c_customer_id@1, c_first_name@2, c_last_name@3, cd_demo_sk@4] +07)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/income_band.vortex]]}, projection=[ib_income_band_sk], file_type=vortex, predicate: ib_lower_bound@1 >= 38128 AND ib_upper_bound@2 <= 88128 +08)------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_hdemo_sk@1, hd_demo_sk@0)], projection=[c_customer_id@0, c_first_name@2, c_last_name@3, cd_demo_sk@4, hd_income_band_sk@6] +10)----------------CoalescePartitionsExec +11)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@1, cd_demo_sk@0)], projection=[c_customer_id@0, c_current_hdemo_sk@2, c_first_name@3, c_last_name@4, cd_demo_sk@5] +12)--------------------CoalescePartitionsExec +13)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, c_current_addr_sk@3)], projection=[c_customer_id@1, c_current_cdemo_sk@2, c_current_hdemo_sk@3, c_first_name@5, c_last_name@6] +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_city@6 = Edgewood +15)------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +16)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_id, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk, c_first_name, c_last_name], file_type=vortex +17)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +18)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk], file_type=vortex +19)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk, hd_income_band_sk], file_type=vortex +20)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_cdemo_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q85.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q85.slt.no new file mode 100644 index 00000000000..09892312095 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q85.slt.no @@ -0,0 +1,121 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) avg1, + avg(wr_refunded_cash) avg2, + avg(wr_fee) +FROM web_sales, + web_returns, + web_page, + customer_demographics cd1, + customer_demographics cd2, + customer_address, + date_dim, + reason +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2000 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( ( cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd1.cd_marital_status = 'S' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'College' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = '2 yr Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ca_country = 'United States' + AND ca_state IN ('IN', + 'OH', + 'NJ') + AND ws_net_profit BETWEEN 100 AND 200) + OR ( ca_country = 'United States' + AND ca_state IN ('WI', + 'CT', + 'KY') + AND ws_net_profit BETWEEN 150 AND 300) + OR ( ca_country = 'United States' + AND ca_state IN ('LA', + 'IA', + 'AR') + AND ws_net_profit BETWEEN 50 AND 250) ) +GROUP BY r_reason_desc +ORDER BY SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) , + avg(wr_refunded_cash) , + avg(wr_fee) +LIMIT 100; +---- +logical_plan +01)Sort: substr(reason.r_reason_desc,Int64(1),Int64(20)) ASC NULLS LAST, avg1 ASC NULLS LAST, avg2 ASC NULLS LAST, avg(web_returns.wr_fee) ASC NULLS LAST, fetch=100 +02)--Projection: substr(reason.r_reason_desc, Int64(1), Int64(20)), avg(web_sales.ws_quantity) AS avg1, avg(web_returns.wr_refunded_cash) AS avg2, avg(web_returns.wr_fee) +03)----Aggregate: groupBy=[[reason.r_reason_desc]], aggr=[[avg(CAST(web_sales.ws_quantity AS Float64)), avg(web_returns.wr_refunded_cash), avg(web_returns.wr_fee)]] +04)------Projection: web_sales.ws_quantity, web_returns.wr_fee, web_returns.wr_refunded_cash, reason.r_reason_desc +05)--------Inner Join: web_returns.wr_reason_sk = reason.r_reason_sk +06)----------Projection: web_sales.ws_quantity, web_returns.wr_reason_sk, web_returns.wr_fee, web_returns.wr_refunded_cash +07)------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +08)--------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_quantity, web_returns.wr_reason_sk, web_returns.wr_fee, web_returns.wr_refunded_cash +09)----------------Inner Join: web_returns.wr_refunded_addr_sk = customer_address.ca_address_sk Filter: (customer_address.ca_state = Utf8View("IN") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("NJ")) AND web_sales.ws_net_profit >= Decimal128(100.00,7,2) AND web_sales.ws_net_profit <= Decimal128(200.00,7,2) OR (customer_address.ca_state = Utf8View("WI") OR customer_address.ca_state = Utf8View("CT") OR customer_address.ca_state = Utf8View("KY")) AND web_sales.ws_net_profit >= Decimal128(150.00,7,2) AND web_sales.ws_net_profit <= Decimal128(300.00,7,2) OR (customer_address.ca_state = Utf8View("LA") OR customer_address.ca_state = Utf8View("IA") OR customer_address.ca_state = Utf8View("AR")) AND web_sales.ws_net_profit >= Decimal128(50.00,7,2) AND web_sales.ws_net_profit <= Decimal128(250.00,7,2) +10)------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_quantity, web_sales.ws_net_profit, web_returns.wr_refunded_addr_sk, web_returns.wr_reason_sk, web_returns.wr_fee, web_returns.wr_refunded_cash +11)--------------------Inner Join: web_returns.wr_returning_cdemo_sk = cd2.cd_demo_sk, cd1.cd_marital_status = cd2.cd_marital_status, cd1.cd_education_status = cd2.cd_education_status +12)----------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_quantity, web_sales.ws_net_profit, web_returns.wr_refunded_addr_sk, web_returns.wr_returning_cdemo_sk, web_returns.wr_reason_sk, web_returns.wr_fee, web_returns.wr_refunded_cash, cd1.cd_marital_status, cd1.cd_education_status +13)------------------------Inner Join: web_returns.wr_refunded_cdemo_sk = cd1.cd_demo_sk Filter: cd1.cd_marital_status = Utf8View("M") AND cd1.cd_education_status = Utf8View("Advanced Degree") AND web_sales.ws_sales_price >= Decimal128(100.00,7,2) AND web_sales.ws_sales_price <= Decimal128(150.00,7,2) OR cd1.cd_marital_status = Utf8View("S") AND cd1.cd_education_status = Utf8View("College") AND web_sales.ws_sales_price >= Decimal128(50.00,7,2) AND web_sales.ws_sales_price <= Decimal128(100.00,7,2) OR cd1.cd_marital_status = Utf8View("W") AND cd1.cd_education_status = Utf8View("2 yr Degree") AND web_sales.ws_sales_price >= Decimal128(150.00,7,2) AND web_sales.ws_sales_price <= Decimal128(200.00,7,2) +14)--------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_quantity, web_sales.ws_sales_price, web_sales.ws_net_profit, web_returns.wr_refunded_cdemo_sk, web_returns.wr_refunded_addr_sk, web_returns.wr_returning_cdemo_sk, web_returns.wr_reason_sk, web_returns.wr_fee, web_returns.wr_refunded_cash +15)----------------------------Inner Join: web_sales.ws_web_page_sk = web_page.wp_web_page_sk +16)------------------------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_web_page_sk, web_sales.ws_quantity, web_sales.ws_sales_price, web_sales.ws_net_profit, web_returns.wr_refunded_cdemo_sk, web_returns.wr_refunded_addr_sk, web_returns.wr_returning_cdemo_sk, web_returns.wr_reason_sk, web_returns.wr_fee, web_returns.wr_refunded_cash +17)--------------------------------Inner Join: web_sales.ws_item_sk = web_returns.wr_item_sk, web_sales.ws_order_number = web_returns.wr_order_number +18)----------------------------------Filter: (web_sales.ws_net_profit >= Decimal128(100.00,7,2) AND web_sales.ws_net_profit <= Decimal128(200.00,7,2) OR web_sales.ws_net_profit >= Decimal128(150.00,7,2) AND web_sales.ws_net_profit <= Decimal128(300.00,7,2) OR web_sales.ws_net_profit >= Decimal128(50.00,7,2) AND web_sales.ws_net_profit <= Decimal128(250.00,7,2)) AND (web_sales.ws_sales_price >= Decimal128(100.00,7,2) AND web_sales.ws_sales_price <= Decimal128(150.00,7,2) OR web_sales.ws_sales_price >= Decimal128(50.00,7,2) AND web_sales.ws_sales_price <= Decimal128(100.00,7,2) OR web_sales.ws_sales_price >= Decimal128(150.00,7,2) AND web_sales.ws_sales_price <= Decimal128(200.00,7,2)) +19)------------------------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_web_page_sk, ws_order_number, ws_quantity, ws_sales_price, ws_net_profit], partial_filters=[web_sales.ws_net_profit >= Decimal128(100.00,7,2) AND web_sales.ws_net_profit <= Decimal128(200.00,7,2) OR web_sales.ws_net_profit >= Decimal128(150.00,7,2) AND web_sales.ws_net_profit <= Decimal128(300.00,7,2) OR web_sales.ws_net_profit >= Decimal128(50.00,7,2) AND web_sales.ws_net_profit <= Decimal128(250.00,7,2), web_sales.ws_sales_price >= Decimal128(100.00,7,2) AND web_sales.ws_sales_price <= Decimal128(150.00,7,2) OR web_sales.ws_sales_price >= Decimal128(50.00,7,2) AND web_sales.ws_sales_price <= Decimal128(100.00,7,2) OR web_sales.ws_sales_price >= Decimal128(150.00,7,2) AND web_sales.ws_sales_price <= Decimal128(200.00,7,2)] +20)----------------------------------TableScan: web_returns projection=[wr_item_sk, wr_refunded_cdemo_sk, wr_refunded_addr_sk, wr_returning_cdemo_sk, wr_reason_sk, wr_order_number, wr_fee, wr_refunded_cash] +21)------------------------------TableScan: web_page projection=[wp_web_page_sk] +22)--------------------------SubqueryAlias: cd1 +23)----------------------------Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree") +24)------------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") OR customer_demographics.cd_marital_status = Utf8View("S") AND customer_demographics.cd_education_status = Utf8View("College") OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("2 yr Degree")] +25)----------------------SubqueryAlias: cd2 +26)------------------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status, cd_education_status] +27)------------------Projection: customer_address.ca_address_sk, customer_address.ca_state +28)--------------------Filter: customer_address.ca_country = Utf8View("United States") AND customer_address.ca_state IN ([Utf8View("IN"), Utf8View("OH"), Utf8View("NJ"), Utf8View("WI"), Utf8View("CT"), Utf8View("KY"), Utf8View("LA"), Utf8View("IA"), Utf8View("AR")]) AND (customer_address.ca_state = Utf8View("IN") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("NJ") OR customer_address.ca_state = Utf8View("WI") OR customer_address.ca_state = Utf8View("CT") OR customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("LA") OR customer_address.ca_state = Utf8View("IA") OR customer_address.ca_state = Utf8View("AR")) +29)----------------------TableScan: customer_address projection=[ca_address_sk, ca_state, ca_country], partial_filters=[customer_address.ca_country = Utf8View("United States"), customer_address.ca_state IN ([Utf8View("IN"), Utf8View("OH"), Utf8View("NJ"), Utf8View("WI"), Utf8View("CT"), Utf8View("KY"), Utf8View("LA"), Utf8View("IA"), Utf8View("AR")]), customer_address.ca_state = Utf8View("IN") OR customer_address.ca_state = Utf8View("OH") OR customer_address.ca_state = Utf8View("NJ") OR customer_address.ca_state = Utf8View("WI") OR customer_address.ca_state = Utf8View("CT") OR customer_address.ca_state = Utf8View("KY") OR customer_address.ca_state = Utf8View("LA") OR customer_address.ca_state = Utf8View("IA") OR customer_address.ca_state = Utf8View("AR")] +30)--------------Projection: date_dim.d_date_sk +31)----------------Filter: date_dim.d_year = Int64(2000) +32)------------------TableScan: date_dim projection=[d_date_sk, d_year], partial_filters=[date_dim.d_year = Int64(2000)] +33)----------TableScan: reason projection=[r_reason_sk, r_reason_desc] +physical_plan +01)SortPreservingMergeExec: [substr(reason.r_reason_desc,Int64(1),Int64(20))@0 ASC NULLS LAST, avg1@1 ASC NULLS LAST, avg2@2 ASC NULLS LAST, avg(web_returns.wr_fee)@3 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[substr(reason.r_reason_desc,Int64(1),Int64(20))@0 ASC NULLS LAST, avg1@1 ASC NULLS LAST, avg2@2 ASC NULLS LAST, avg(web_returns.wr_fee)@3 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[substr(r_reason_desc@0, 1, 20) as substr(reason.r_reason_desc,Int64(1),Int64(20)), avg(web_sales.ws_quantity)@1 as avg1, avg(web_returns.wr_refunded_cash)@2 as avg2, avg(web_returns.wr_fee)@3 as avg(web_returns.wr_fee)] +04)------AggregateExec: mode=FinalPartitioned, gby=[r_reason_desc@0 as r_reason_desc], aggr=[avg(web_sales.ws_quantity), avg(web_returns.wr_refunded_cash), avg(web_returns.wr_fee)] +05)--------RepartitionExec: partitioning=Hash([r_reason_desc@0], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[r_reason_desc@3 as r_reason_desc], aggr=[avg(web_sales.ws_quantity), avg(web_returns.wr_refunded_cash), avg(web_returns.wr_fee)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(r_reason_sk@0, wr_reason_sk@1)], projection=[ws_quantity@2, wr_fee@4, wr_refunded_cash@5, r_reason_desc@1] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/reason.vortex]]}, projection=[r_reason_sk, r_reason_desc], file_type=vortex +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_quantity@2, wr_reason_sk@3, wr_fee@4, wr_refunded_cash@5] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_year@6 = 2000 +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, wr_refunded_addr_sk@3)], filter=(ca_state@1 = IN OR ca_state@1 = OH OR ca_state@1 = NJ) AND ws_net_profit@0 >= 100.00 AND ws_net_profit@0 <= 200.00 OR (ca_state@1 = WI OR ca_state@1 = CT OR ca_state@1 = KY) AND ws_net_profit@0 >= 150.00 AND ws_net_profit@0 <= 300.00 OR (ca_state@1 = LA OR ca_state@1 = IA OR ca_state@1 = AR) AND ws_net_profit@0 >= 50.00 AND ws_net_profit@0 <= 250.00, projection=[ws_sold_date_sk@2, ws_quantity@3, wr_reason_sk@6, wr_fee@7, wr_refunded_cash@8] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk, ca_state], file_type=vortex, predicate: ca_country@10 = United States AND ca_state@8 IN (SET) ([IN, OH, NJ, WI, CT, KY, LA, IA, AR]) AND (ca_state@8 = IN OR ca_state@8 = OH OR ca_state@8 = NJ OR ca_state@8 = WI OR ca_state@8 = CT OR ca_state@8 = KY OR ca_state@8 = LA OR ca_state@8 = IA OR ca_state@8 = AR) +13)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wr_returning_cdemo_sk@4, cd_demo_sk@0), (cd_marital_status@8, cd_marital_status@1), (cd_education_status@9, cd_education_status@2)], projection=[ws_sold_date_sk@0, ws_quantity@1, ws_net_profit@2, wr_refunded_addr_sk@3, wr_reason_sk@5, wr_fee@6, wr_refunded_cash@7] +14)--------------------CoalescePartitionsExec +15)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cd_demo_sk@0, wr_refunded_cdemo_sk@4)], filter=cd_marital_status@1 = M AND cd_education_status@2 = Advanced Degree AND ws_sales_price@0 >= 100.00 AND ws_sales_price@0 <= 150.00 OR cd_marital_status@1 = S AND cd_education_status@2 = College AND ws_sales_price@0 >= 50.00 AND ws_sales_price@0 <= 100.00 OR cd_marital_status@1 = W AND cd_education_status@2 = 2 yr Degree AND ws_sales_price@0 >= 150.00 AND ws_sales_price@0 <= 200.00, projection=[ws_sold_date_sk@3, ws_quantity@4, ws_net_profit@6, wr_refunded_addr_sk@8, wr_returning_cdemo_sk@9, wr_reason_sk@10, wr_fee@11, wr_refunded_cash@12, cd_marital_status@1, cd_education_status@2] +16)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status, cd_education_status], file_type=vortex, predicate: cd_marital_status@2 = M AND cd_education_status@3 = Advanced Degree OR cd_marital_status@2 = S AND cd_education_status@3 = College OR cd_marital_status@2 = W AND cd_education_status@3 = 2 yr Degree +17)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wp_web_page_sk@0, ws_web_page_sk@1)], projection=[ws_sold_date_sk@1, ws_quantity@3, ws_sales_price@4, ws_net_profit@5, wr_refunded_cdemo_sk@6, wr_refunded_addr_sk@7, wr_returning_cdemo_sk@8, wr_reason_sk@9, wr_fee@10, wr_refunded_cash@11] +18)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_page.vortex]]}, projection=[wp_web_page_sk], file_type=vortex +19)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wr_item_sk@0, ws_item_sk@1), (wr_order_number@5, ws_order_number@3)], projection=[ws_sold_date_sk@8, ws_web_page_sk@10, ws_quantity@12, ws_sales_price@13, ws_net_profit@14, wr_refunded_cdemo_sk@1, wr_refunded_addr_sk@2, wr_returning_cdemo_sk@3, wr_reason_sk@4, wr_fee@6, wr_refunded_cash@7] +20)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_item_sk, wr_refunded_cdemo_sk, wr_refunded_addr_sk, wr_returning_cdemo_sk, wr_reason_sk, wr_order_number, wr_fee, wr_refunded_cash], file_type=vortex +21)----------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_web_page_sk, ws_order_number, ws_quantity, ws_sales_price, ws_net_profit], file_type=vortex, predicate: (ws_net_profit@33 >= 100.00 AND ws_net_profit@33 <= 200.00 OR ws_net_profit@33 >= 150.00 AND ws_net_profit@33 <= 300.00 OR ws_net_profit@33 >= 50.00 AND ws_net_profit@33 <= 250.00) AND (ws_sales_price@21 >= 100.00 AND ws_sales_price@21 <= 150.00 OR ws_sales_price@21 >= 50.00 AND ws_sales_price@21 <= 100.00 OR ws_sales_price@21 >= 150.00 AND ws_sales_price@21 <= 200.00) +22)--------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +23)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status, cd_education_status], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q86.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q86.slt.no new file mode 100644 index 00000000000..0df431330ad --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q86.slt.no @@ -0,0 +1,60 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT sum(ws_net_paid) AS total_sum , + i_category , + i_class , + grouping(i_category)+grouping(i_class) AS lochierarchy , + rank() OVER ( PARTITION BY grouping(i_category)+grouping(i_class), + CASE + WHEN grouping(i_class) = 0 THEN i_category + END + ORDER BY sum(ws_net_paid) DESC) AS rank_within_parent +FROM web_sales , + date_dim d1 , + item +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY rollup(i_category,i_class) +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN grouping(i_category)+grouping(i_class) = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: lochierarchy DESC NULLS FIRST, CASE WHEN lochierarchy = Int32(0) THEN item.i_category END AS CASE WHEN lochierarchy = Int64(0) THEN item.i_category END ASC NULLS FIRST, rank_within_parent ASC NULLS FIRST, fetch=100 +02)--Projection: sum(web_sales.ws_net_paid) AS total_sum, item.i_category, item.i_class, grouping(item.i_category) + grouping(item.i_class) AS lochierarchy, rank() PARTITION BY [grouping(item.i_category) + grouping(item.i_class), CASE WHEN grouping(item.i_class) = Int64(0) THEN item.i_category END] ORDER BY [sum(web_sales.ws_net_paid) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rank_within_parent +03)----WindowAggr: windowExpr=[[rank() PARTITION BY [grouping(item.i_category) + grouping(item.i_class), CASE WHEN grouping(item.i_class) = Int32(0) THEN item.i_category END] ORDER BY [sum(web_sales.ws_net_paid) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW AS rank() PARTITION BY [grouping(item.i_category) + grouping(item.i_class), CASE WHEN grouping(item.i_class) = Int64(0) THEN item.i_category END] ORDER BY [sum(web_sales.ws_net_paid) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW]] +04)------Projection: item.i_category, item.i_class, sum(web_sales.ws_net_paid), CAST(__grouping_id & UInt8(2) >> UInt8(1) AS Int32) AS grouping(item.i_category), CAST(__grouping_id & UInt8(1) AS Int32) AS grouping(item.i_class) +05)--------Aggregate: groupBy=[[ROLLUP (item.i_category, item.i_class)]], aggr=[[sum(web_sales.ws_net_paid)]] +06)----------Projection: web_sales.ws_net_paid, item.i_class, item.i_category +07)------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +08)--------------Projection: web_sales.ws_item_sk, web_sales.ws_net_paid +09)----------------Inner Join: web_sales.ws_sold_date_sk = d1.d_date_sk +10)------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_net_paid] +11)------------------SubqueryAlias: d1 +12)--------------------Projection: date_dim.d_date_sk +13)----------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +14)------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +15)--------------TableScan: item projection=[i_item_sk, i_class, i_category] +physical_plan +01)SortPreservingMergeExec: [lochierarchy@3 DESC, CASE WHEN lochierarchy@3 = 0 THEN i_category@1 END ASC, rank_within_parent@4 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[lochierarchy@3 DESC, CASE WHEN lochierarchy@3 = 0 THEN i_category@1 END ASC, rank_within_parent@4 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[sum(web_sales.ws_net_paid)@2 as total_sum, i_category@0 as i_category, i_class@1 as i_class, grouping(item.i_category)@3 + grouping(item.i_class)@4 as lochierarchy, rank() PARTITION BY [grouping(item.i_category) + grouping(item.i_class), CASE WHEN grouping(item.i_class) = Int64(0) THEN item.i_category END] ORDER BY [sum(web_sales.ws_net_paid) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW@5 as rank_within_parent] +04)------BoundedWindowAggExec: wdw=[rank() PARTITION BY [grouping(item.i_category) + grouping(item.i_class), CASE WHEN grouping(item.i_class) = Int64(0) THEN item.i_category END] ORDER BY [sum(web_sales.ws_net_paid) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: Field { "rank() PARTITION BY [grouping(item.i_category) + grouping(item.i_class), CASE WHEN grouping(item.i_class) = Int64(0) THEN item.i_category END] ORDER BY [sum(web_sales.ws_net_paid) DESC NULLS FIRST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW": UInt64 }, frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW], mode=[Sorted] +05)--------SortExec: expr=[grouping(item.i_category)@3 + grouping(item.i_class)@4 ASC NULLS LAST, CASE WHEN grouping(item.i_class)@4 = 0 THEN i_category@0 END ASC NULLS LAST, sum(web_sales.ws_net_paid)@2 DESC], preserve_partitioning=[true] +06)----------RepartitionExec: partitioning=Hash([grouping(item.i_category)@3 + grouping(item.i_class)@4, CASE WHEN grouping(item.i_class)@4 = 0 THEN i_category@0 END], 4), input_partitions=4 +07)------------ProjectionExec: expr=[i_category@0 as i_category, i_class@1 as i_class, sum(web_sales.ws_net_paid)@3 as sum(web_sales.ws_net_paid), CAST(__grouping_id@2 & 2 >> 1 AS Int32) as grouping(item.i_category), CAST(__grouping_id@2 & 1 AS Int32) as grouping(item.i_class)] +08)--------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_class@1 as i_class, __grouping_id@2 as __grouping_id], aggr=[sum(web_sales.ws_net_paid)] +09)----------------RepartitionExec: partitioning=Hash([i_category@0, i_class@1, __grouping_id@2], 4), input_partitions=4 +10)------------------AggregateExec: mode=Partial, gby=[(NULL as i_category, NULL as i_class), (i_category@2 as i_category, NULL as i_class), (i_category@2 as i_category, i_class@1 as i_class)], aggr=[sum(web_sales.ws_net_paid)] +11)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@0)], projection=[ws_net_paid@4, i_class@1, i_category@2] +12)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_class, i_category], file_type=vortex +13)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_net_paid@3] +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +15)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_net_paid], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q87.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q87.slt.no new file mode 100644 index 00000000000..939be33ba5c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q87.slt.no @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT count(*) +FROM ((SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11)) cool_cust ; +---- +logical_plan +01)Projection: count(Int64(1)) AS count(*) +02)--Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +03)----SubqueryAlias: cool_cust +04)------Projection: +05)--------LeftAnti Join: left.c_last_name = customer.c_last_name, left.c_first_name = customer.c_first_name, left.d_date = date_dim.d_date +06)----------LeftAnti Join: left.c_last_name = right.c_last_name, left.c_first_name = right.c_first_name, left.d_date = right.d_date +07)------------SubqueryAlias: left +08)--------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, date_dim.d_date]], aggr=[[]] +09)----------------Projection: customer.c_last_name, customer.c_first_name, date_dim.d_date +10)------------------Inner Join: store_sales.ss_customer_sk = customer.c_customer_sk +11)--------------------Projection: store_sales.ss_customer_sk, date_dim.d_date +12)----------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +13)------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_customer_sk] +14)------------------------Projection: date_dim.d_date_sk, date_dim.d_date +15)--------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +16)----------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +17)--------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +18)------------SubqueryAlias: right +19)--------------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, date_dim.d_date]], aggr=[[]] +20)----------------Projection: customer.c_last_name, customer.c_first_name, date_dim.d_date +21)------------------Inner Join: catalog_sales.cs_bill_customer_sk = customer.c_customer_sk +22)--------------------Projection: catalog_sales.cs_bill_customer_sk, date_dim.d_date +23)----------------------Inner Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +24)------------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk] +25)------------------------Projection: date_dim.d_date_sk, date_dim.d_date +26)--------------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +27)----------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +28)--------------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +29)----------Aggregate: groupBy=[[customer.c_last_name, customer.c_first_name, date_dim.d_date]], aggr=[[]] +30)------------Projection: customer.c_last_name, customer.c_first_name, date_dim.d_date +31)--------------Inner Join: web_sales.ws_bill_customer_sk = customer.c_customer_sk +32)----------------Projection: web_sales.ws_bill_customer_sk, date_dim.d_date +33)------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +34)--------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_bill_customer_sk] +35)--------------------Projection: date_dim.d_date_sk, date_dim.d_date +36)----------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +37)------------------------TableScan: date_dim projection=[d_date_sk, d_date, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +38)----------------TableScan: customer projection=[c_customer_sk, c_first_name, c_last_name] +physical_plan +01)ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +02)--AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +03)----CoalescePartitionsExec +04)------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +05)--------HashJoinExec: mode=CollectLeft, join_type=RightAnti, on=[(c_last_name@0, c_last_name@0), (c_first_name@1, c_first_name@1), (d_date@2, d_date@2)], projection=[], NullsEqual: true +06)----------CoalescePartitionsExec +07)------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +08)--------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, d_date@2], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ws_bill_customer_sk@0)], projection=[c_last_name@2, c_first_name@1, d_date@4] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_bill_customer_sk@3, d_date@1] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +14)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_bill_customer_sk], file_type=vortex +15)----------HashJoinExec: mode=CollectLeft, join_type=RightAnti, on=[(c_last_name@0, c_last_name@0), (c_first_name@1, c_first_name@1), (d_date@2, d_date@2)], NullsEqual: true +16)------------CoalescePartitionsExec +17)--------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +18)----------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, d_date@2], 4), input_partitions=4 +19)------------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +20)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, cs_bill_customer_sk@0)], projection=[c_last_name@2, c_first_name@1, d_date@4] +21)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +22)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_customer_sk@3, d_date@1] +23)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +24)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk], file_type=vortex +25)------------AggregateExec: mode=FinalPartitioned, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +26)--------------RepartitionExec: partitioning=Hash([c_last_name@0, c_first_name@1, d_date@2], 4), input_partitions=4 +27)----------------AggregateExec: mode=Partial, gby=[c_last_name@0 as c_last_name, c_first_name@1 as c_first_name, d_date@2 as d_date], aggr=[] +28)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_customer_sk@0, ss_customer_sk@0)], projection=[c_last_name@2, c_first_name@1, d_date@4] +29)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_first_name, c_last_name], file_type=vortex +30)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_customer_sk@3, d_date@1] +31)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_date], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +32)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_customer_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q88.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q88.slt.no new file mode 100644 index 00000000000..fcd749f1581 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q88.slt.no @@ -0,0 +1,406 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * +FROM + (SELECT count(*) h8_30_to_9 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 8 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s1, + (SELECT count(*) h9_to_9_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s2, + (SELECT count(*) h9_30_to_10 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s3, + (SELECT count(*) h10_to_10_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s4, + (SELECT count(*) h10_30_to_11 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s5, + (SELECT count(*) h11_to_11_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s6, + (SELECT count(*) h11_30_to_12 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s7, + (SELECT count(*) h12_to_12_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 12 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s8 ; +---- +logical_plan +01)Cross Join: +02)--Cross Join: +03)----Cross Join: +04)------Cross Join: +05)--------Cross Join: +06)----------Cross Join: +07)------------Cross Join: +08)--------------SubqueryAlias: s1 +09)----------------Projection: count(Int64(1)) AS count(*) AS h8_30_to_9 +10)------------------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +11)--------------------Projection: +12)----------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +13)------------------------Projection: store_sales.ss_store_sk +14)--------------------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +15)----------------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +16)------------------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +17)--------------------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +18)--------------------------------Projection: household_demographics.hd_demo_sk +19)----------------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +20)------------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +21)----------------------------Projection: time_dim.t_time_sk +22)------------------------------Filter: time_dim.t_hour = Int64(8) AND time_dim.t_minute >= Int64(30) +23)--------------------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(8), time_dim.t_minute >= Int64(30)] +24)------------------------Projection: store.s_store_sk +25)--------------------------Filter: store.s_store_name = Utf8View("ese") +26)----------------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +27)--------------SubqueryAlias: s2 +28)----------------Projection: count(Int64(1)) AS count(*) AS h9_to_9_30 +29)------------------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +30)--------------------Projection: +31)----------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +32)------------------------Projection: store_sales.ss_store_sk +33)--------------------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +34)----------------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +35)------------------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +36)--------------------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +37)--------------------------------Projection: household_demographics.hd_demo_sk +38)----------------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +39)------------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +40)----------------------------Projection: time_dim.t_time_sk +41)------------------------------Filter: time_dim.t_hour = Int64(9) AND time_dim.t_minute < Int64(30) +42)--------------------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(9), time_dim.t_minute < Int64(30)] +43)------------------------Projection: store.s_store_sk +44)--------------------------Filter: store.s_store_name = Utf8View("ese") +45)----------------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +46)------------SubqueryAlias: s3 +47)--------------Projection: count(Int64(1)) AS count(*) AS h9_30_to_10 +48)----------------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +49)------------------Projection: +50)--------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +51)----------------------Projection: store_sales.ss_store_sk +52)------------------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +53)--------------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +54)----------------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +55)------------------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +56)------------------------------Projection: household_demographics.hd_demo_sk +57)--------------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +58)----------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +59)--------------------------Projection: time_dim.t_time_sk +60)----------------------------Filter: time_dim.t_hour = Int64(9) AND time_dim.t_minute >= Int64(30) +61)------------------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(9), time_dim.t_minute >= Int64(30)] +62)----------------------Projection: store.s_store_sk +63)------------------------Filter: store.s_store_name = Utf8View("ese") +64)--------------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +65)----------SubqueryAlias: s4 +66)------------Projection: count(Int64(1)) AS count(*) AS h10_to_10_30 +67)--------------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +68)----------------Projection: +69)------------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +70)--------------------Projection: store_sales.ss_store_sk +71)----------------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +72)------------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +73)--------------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +74)----------------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +75)----------------------------Projection: household_demographics.hd_demo_sk +76)------------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +77)--------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +78)------------------------Projection: time_dim.t_time_sk +79)--------------------------Filter: time_dim.t_hour = Int64(10) AND time_dim.t_minute < Int64(30) +80)----------------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(10), time_dim.t_minute < Int64(30)] +81)--------------------Projection: store.s_store_sk +82)----------------------Filter: store.s_store_name = Utf8View("ese") +83)------------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +84)--------SubqueryAlias: s5 +85)----------Projection: count(Int64(1)) AS count(*) AS h10_30_to_11 +86)------------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +87)--------------Projection: +88)----------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +89)------------------Projection: store_sales.ss_store_sk +90)--------------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +91)----------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +92)------------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +93)--------------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +94)--------------------------Projection: household_demographics.hd_demo_sk +95)----------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +96)------------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +97)----------------------Projection: time_dim.t_time_sk +98)------------------------Filter: time_dim.t_hour = Int64(10) AND time_dim.t_minute >= Int64(30) +99)--------------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(10), time_dim.t_minute >= Int64(30)] +100)------------------Projection: store.s_store_sk +101)--------------------Filter: store.s_store_name = Utf8View("ese") +102)----------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +103)------SubqueryAlias: s6 +104)--------Projection: count(Int64(1)) AS count(*) AS h11_to_11_30 +105)----------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +106)------------Projection: +107)--------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +108)----------------Projection: store_sales.ss_store_sk +109)------------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +110)--------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +111)----------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +112)------------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +113)------------------------Projection: household_demographics.hd_demo_sk +114)--------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +115)----------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +116)--------------------Projection: time_dim.t_time_sk +117)----------------------Filter: time_dim.t_hour = Int64(11) AND time_dim.t_minute < Int64(30) +118)------------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(11), time_dim.t_minute < Int64(30)] +119)----------------Projection: store.s_store_sk +120)------------------Filter: store.s_store_name = Utf8View("ese") +121)--------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +122)----SubqueryAlias: s7 +123)------Projection: count(Int64(1)) AS count(*) AS h11_30_to_12 +124)--------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +125)----------Projection: +126)------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +127)--------------Projection: store_sales.ss_store_sk +128)----------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +129)------------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +130)--------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +131)----------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +132)----------------------Projection: household_demographics.hd_demo_sk +133)------------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +134)--------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +135)------------------Projection: time_dim.t_time_sk +136)--------------------Filter: time_dim.t_hour = Int64(11) AND time_dim.t_minute >= Int64(30) +137)----------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(11), time_dim.t_minute >= Int64(30)] +138)--------------Projection: store.s_store_sk +139)----------------Filter: store.s_store_name = Utf8View("ese") +140)------------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +141)--SubqueryAlias: s8 +142)----Projection: count(Int64(1)) AS count(*) AS h12_to_12_30 +143)------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +144)--------Projection: +145)----------Inner Join: store_sales.ss_store_sk = store.s_store_sk +146)------------Projection: store_sales.ss_store_sk +147)--------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +148)----------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +149)------------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +150)--------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +151)--------------------Projection: household_demographics.hd_demo_sk +152)----------------------Filter: household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2) +153)------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count, hd_vehicle_count], partial_filters=[household_demographics.hd_dep_count = Int64(4) AND household_demographics.hd_vehicle_count <= Int32(6) OR household_demographics.hd_dep_count = Int64(2) AND household_demographics.hd_vehicle_count <= Int32(4) OR household_demographics.hd_dep_count = Int64(0) AND household_demographics.hd_vehicle_count <= Int32(2)] +154)----------------Projection: time_dim.t_time_sk +155)------------------Filter: time_dim.t_hour = Int64(12) AND time_dim.t_minute < Int64(30) +156)--------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(12), time_dim.t_minute < Int64(30)] +157)------------Projection: store.s_store_sk +158)--------------Filter: store.s_store_name = Utf8View("ese") +159)----------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +physical_plan +01)ProjectionExec: expr=[h8_30_to_9@1 as h8_30_to_9, h9_to_9_30@2 as h9_to_9_30, h9_30_to_10@3 as h9_30_to_10, h10_to_10_30@4 as h10_to_10_30, h10_30_to_11@5 as h10_30_to_11, h11_to_11_30@6 as h11_to_11_30, h11_30_to_12@7 as h11_30_to_12, h12_to_12_30@0 as h12_to_12_30] +02)--CrossJoinExec +03)----ProjectionExec: expr=[count(Int64(1))@0 as h12_to_12_30] +04)------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +05)--------CoalescePartitionsExec +06)----------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +08)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +09)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +10)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 12 AND t_minute@4 < 30 +11)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +12)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +13)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +14)----ProjectionExec: expr=[h8_30_to_9@1 as h8_30_to_9, h9_to_9_30@2 as h9_to_9_30, h9_30_to_10@3 as h9_30_to_10, h10_to_10_30@4 as h10_to_10_30, h10_30_to_11@5 as h10_30_to_11, h11_to_11_30@6 as h11_to_11_30, h11_30_to_12@0 as h11_30_to_12] +15)------CrossJoinExec +16)--------ProjectionExec: expr=[count(Int64(1))@0 as h11_30_to_12] +17)----------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +18)------------CoalescePartitionsExec +19)--------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +20)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +21)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +22)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +23)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 11 AND t_minute@4 >= 30 +24)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +25)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +26)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +27)--------ProjectionExec: expr=[h8_30_to_9@1 as h8_30_to_9, h9_to_9_30@2 as h9_to_9_30, h9_30_to_10@3 as h9_30_to_10, h10_to_10_30@4 as h10_to_10_30, h10_30_to_11@5 as h10_30_to_11, h11_to_11_30@0 as h11_to_11_30] +28)----------CrossJoinExec +29)------------ProjectionExec: expr=[count(Int64(1))@0 as h11_to_11_30] +30)--------------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +31)----------------CoalescePartitionsExec +32)------------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +33)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +34)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +35)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +36)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 11 AND t_minute@4 < 30 +37)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +38)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +39)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +40)------------ProjectionExec: expr=[h8_30_to_9@1 as h8_30_to_9, h9_to_9_30@2 as h9_to_9_30, h9_30_to_10@3 as h9_30_to_10, h10_to_10_30@4 as h10_to_10_30, h10_30_to_11@0 as h10_30_to_11] +41)--------------CrossJoinExec +42)----------------ProjectionExec: expr=[count(Int64(1))@0 as h10_30_to_11] +43)------------------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +44)--------------------CoalescePartitionsExec +45)----------------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +46)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +47)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +48)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +49)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 10 AND t_minute@4 >= 30 +50)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +51)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +52)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +53)----------------ProjectionExec: expr=[h8_30_to_9@1 as h8_30_to_9, h9_to_9_30@2 as h9_to_9_30, h9_30_to_10@3 as h9_30_to_10, h10_to_10_30@0 as h10_to_10_30] +54)------------------CrossJoinExec +55)--------------------ProjectionExec: expr=[count(Int64(1))@0 as h10_to_10_30] +56)----------------------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +57)------------------------CoalescePartitionsExec +58)--------------------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +59)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +60)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +61)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +62)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 10 AND t_minute@4 < 30 +63)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +64)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +65)----------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +66)--------------------ProjectionExec: expr=[h8_30_to_9@1 as h8_30_to_9, h9_to_9_30@2 as h9_to_9_30, h9_30_to_10@0 as h9_30_to_10] +67)----------------------CrossJoinExec +68)------------------------ProjectionExec: expr=[count(Int64(1))@0 as h9_30_to_10] +69)--------------------------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +70)----------------------------CoalescePartitionsExec +71)------------------------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +72)--------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +73)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +74)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +75)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 9 AND t_minute@4 >= 30 +76)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +77)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +78)--------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +79)------------------------CrossJoinExec +80)--------------------------ProjectionExec: expr=[count(Int64(1))@0 as h8_30_to_9] +81)----------------------------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +82)------------------------------CoalescePartitionsExec +83)--------------------------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +84)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +85)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +86)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +87)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 8 AND t_minute@4 >= 30 +88)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +89)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +90)----------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex +91)--------------------------ProjectionExec: expr=[count(Int64(1))@0 as h9_to_9_30] +92)----------------------------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +93)------------------------------CoalescePartitionsExec +94)--------------------------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +95)----------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +96)------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +97)------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +98)--------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 9 AND t_minute@4 < 30 +99)--------------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +100)----------------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 4 AND hd_vehicle_count@4 <= 6 OR hd_dep_count@3 = 2 AND hd_vehicle_count@4 <= 4 OR hd_dep_count@3 = 0 AND hd_vehicle_count@4 <= 2 +101)----------------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q89.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q89.slt.no new file mode 100644 index 00000000000..297f786786e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q89.slt.no @@ -0,0 +1,63 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT * from + (SELECT i_category, i_class, i_brand, s_store_name, s_company_name, d_moy, sum(ss_sales_price) sum_sales, avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name) avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year = 1999 + AND ((i_category IN ('Books','Electronics','Sports') + AND i_class IN ('computers','stereo','football') ) + OR (i_category IN ('Men','Jewelry','Women') + AND i_class IN ('shirts','birdal','dresses'))) + GROUP BY i_category, i_class, i_brand, s_store_name, s_company_name, d_moy) tmp1 +WHERE CASE + WHEN (avg_monthly_sales <> 0) THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + s_store_name, 1, 2, 3, 5, 6, 7, 8 +LIMIT 100; +---- +logical_plan +01)Sort: tmp1.sum_sales - tmp1.avg_monthly_sales ASC NULLS LAST, tmp1.s_store_name ASC NULLS LAST, tmp1.i_category ASC NULLS LAST, tmp1.i_class ASC NULLS LAST, tmp1.i_brand ASC NULLS LAST, tmp1.s_company_name ASC NULLS LAST, tmp1.d_moy ASC NULLS LAST, fetch=100 +02)--SubqueryAlias: tmp1 +03)----Projection: item.i_category, item.i_class, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_moy, sum(store_sales.ss_sales_price) AS sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS avg_monthly_sales +04)------Filter: CASE WHEN avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING != Decimal128(0.000000,21,6) THEN abs(sum(store_sales.ss_sales_price) - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ELSE Decimal128(NULL,32,10) END > Decimal128(0.1000000000,32,10) +05)--------WindowAggr: windowExpr=[[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +06)----------Aggregate: groupBy=[[item.i_category, item.i_class, item.i_brand, store.s_store_name, store.s_company_name, date_dim.d_moy]], aggr=[[sum(store_sales.ss_sales_price)]] +07)------------Projection: item.i_brand, item.i_class, item.i_category, store_sales.ss_sales_price, date_dim.d_moy, store.s_store_name, store.s_company_name +08)--------------Inner Join: store_sales.ss_store_sk = store.s_store_sk +09)----------------Projection: item.i_brand, item.i_class, item.i_category, store_sales.ss_store_sk, store_sales.ss_sales_price, date_dim.d_moy +10)------------------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +11)--------------------Projection: item.i_brand, item.i_class, item.i_category, store_sales.ss_sold_date_sk, store_sales.ss_store_sk, store_sales.ss_sales_price +12)----------------------Inner Join: item.i_item_sk = store_sales.ss_item_sk +13)------------------------Filter: (item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Electronics") OR item.i_category = Utf8View("Sports")) AND (item.i_class = Utf8View("computers") OR item.i_class = Utf8View("stereo") OR item.i_class = Utf8View("football")) OR (item.i_category = Utf8View("Men") OR item.i_category = Utf8View("Jewelry") OR item.i_category = Utf8View("Women")) AND (item.i_class = Utf8View("shirts") OR item.i_class = Utf8View("birdal") OR item.i_class = Utf8View("dresses")) +14)--------------------------TableScan: item projection=[i_item_sk, i_brand, i_class, i_category], partial_filters=[(item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Electronics") OR item.i_category = Utf8View("Sports")) AND (item.i_class = Utf8View("computers") OR item.i_class = Utf8View("stereo") OR item.i_class = Utf8View("football")) OR (item.i_category = Utf8View("Men") OR item.i_category = Utf8View("Jewelry") OR item.i_category = Utf8View("Women")) AND (item.i_class = Utf8View("shirts") OR item.i_class = Utf8View("birdal") OR item.i_class = Utf8View("dresses"))] +15)------------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price] +16)--------------------Projection: date_dim.d_date_sk, date_dim.d_moy +17)----------------------Filter: date_dim.d_year = Int64(1999) +18)------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_year = Int64(1999)] +19)----------------TableScan: store projection=[s_store_sk, s_store_name, s_company_name] +physical_plan +01)SortPreservingMergeExec: [sum_sales@6 - avg_monthly_sales@7 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST, i_category@0 ASC NULLS LAST, i_class@1 ASC NULLS LAST, i_brand@2 ASC NULLS LAST, s_company_name@4 ASC NULLS LAST, d_moy@5 ASC NULLS LAST], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[sum_sales@6 - avg_monthly_sales@7 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST, i_category@0 ASC NULLS LAST, i_class@1 ASC NULLS LAST, i_brand@2 ASC NULLS LAST, s_company_name@4 ASC NULLS LAST, d_moy@5 ASC NULLS LAST], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_category@0 as i_category, i_class@1 as i_class, i_brand@2 as i_brand, s_store_name@3 as s_store_name, s_company_name@4 as s_company_name, d_moy@5 as d_moy, sum(store_sales.ss_sales_price)@6 as sum_sales, avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7 as avg_monthly_sales] +04)------FilterExec: CASE WHEN avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7 != 0.000000 THEN abs(sum(store_sales.ss_sales_price)@6 - avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7) / avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@7 END > 0.1000000000 +05)--------WindowAggExec: wdw=[avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "avg(sum(store_sales.ss_sales_price)) PARTITION BY [item.i_category, item.i_brand, store.s_store_name, store.s_company_name] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(21, 6), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +06)----------SortExec: expr=[i_category@0 ASC NULLS LAST, i_brand@2 ASC NULLS LAST, s_store_name@3 ASC NULLS LAST, s_company_name@4 ASC NULLS LAST], preserve_partitioning=[true] +07)------------RepartitionExec: partitioning=Hash([i_category@0, i_brand@2, s_store_name@3, s_company_name@4], 4), input_partitions=4 +08)--------------AggregateExec: mode=FinalPartitioned, gby=[i_category@0 as i_category, i_class@1 as i_class, i_brand@2 as i_brand, s_store_name@3 as s_store_name, s_company_name@4 as s_company_name, d_moy@5 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +09)----------------RepartitionExec: partitioning=Hash([i_category@0, i_class@1, i_brand@2, s_store_name@3, s_company_name@4, d_moy@5], 4), input_partitions=4 +10)------------------AggregateExec: mode=Partial, gby=[i_category@2 as i_category, i_class@1 as i_class, i_brand@0 as i_brand, s_store_name@5 as s_store_name, s_company_name@6 as s_company_name, d_moy@4 as d_moy], aggr=[sum(store_sales.ss_sales_price)] +11)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@3)], projection=[i_brand@3, i_class@4, i_category@5, ss_sales_price@7, d_moy@8, s_store_name@1, s_company_name@2] +12)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk, s_store_name, s_company_name], file_type=vortex +13)----------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@3)], projection=[i_brand@2, i_class@3, i_category@4, ss_store_sk@6, ss_sales_price@7, d_moy@1] +14)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk, d_moy], file_type=vortex, predicate: d_year@6 = 1999 +15)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[i_brand@1, i_class@2, i_category@3, ss_sold_date_sk@4, ss_store_sk@6, ss_sales_price@7] +16)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_brand, i_class, i_category], file_type=vortex, predicate: (i_category@12 = Books OR i_category@12 = Electronics OR i_category@12 = Sports) AND (i_class@10 = computers OR i_class@10 = stereo OR i_class@10 = football) OR (i_category@12 = Men OR i_category@12 = Jewelry OR i_category@12 = Women) AND (i_class@10 = shirts OR i_class@10 = birdal OR i_class@10 = dresses) +17)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q9.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q9.slt.no new file mode 100644 index 00000000000..af0bac6df5b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q9.slt.no @@ -0,0 +1,227 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) > 74129 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) > 122840 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) > 56580 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) > 10097 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) > 165306 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM reason +WHERE r_reason_sk = 1 ; +---- +logical_plan +01)Projection: CASE WHEN () > Int64(74129) THEN () ELSE () END AS bucket1, CASE WHEN () > Int64(122840) THEN () ELSE () END AS bucket2, CASE WHEN () > Int64(56580) THEN () ELSE () END AS bucket3, CASE WHEN () > Int64(10097) THEN () ELSE () END AS bucket4, CASE WHEN () > Int64(165306) THEN () ELSE () END AS bucket5 +02)--Subquery: +03)----Projection: count(Int64(1)) AS count(*) +04)------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +05)--------Projection: +06)----------Filter: store_sales.ss_quantity >= Int64(1) AND store_sales.ss_quantity <= Int64(20) +07)------------TableScan: store_sales projection=[ss_quantity], partial_filters=[store_sales.ss_quantity >= Int64(1), store_sales.ss_quantity <= Int64(20)] +08)--Subquery: +09)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_ext_discount_amt)]] +10)------Projection: store_sales.ss_ext_discount_amt +11)--------Filter: store_sales.ss_quantity >= Int64(1) AND store_sales.ss_quantity <= Int64(20) +12)----------TableScan: store_sales projection=[ss_quantity, ss_ext_discount_amt], partial_filters=[store_sales.ss_quantity >= Int64(1), store_sales.ss_quantity <= Int64(20)] +13)--Subquery: +14)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_net_paid)]] +15)------Projection: store_sales.ss_net_paid +16)--------Filter: store_sales.ss_quantity >= Int64(1) AND store_sales.ss_quantity <= Int64(20) +17)----------TableScan: store_sales projection=[ss_quantity, ss_net_paid], partial_filters=[store_sales.ss_quantity >= Int64(1), store_sales.ss_quantity <= Int64(20)] +18)--Subquery: +19)----Projection: count(Int64(1)) AS count(*) +20)------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +21)--------Projection: +22)----------Filter: store_sales.ss_quantity >= Int64(21) AND store_sales.ss_quantity <= Int64(40) +23)------------TableScan: store_sales projection=[ss_quantity], partial_filters=[store_sales.ss_quantity >= Int64(21), store_sales.ss_quantity <= Int64(40)] +24)--Subquery: +25)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_ext_discount_amt)]] +26)------Projection: store_sales.ss_ext_discount_amt +27)--------Filter: store_sales.ss_quantity >= Int64(21) AND store_sales.ss_quantity <= Int64(40) +28)----------TableScan: store_sales projection=[ss_quantity, ss_ext_discount_amt], partial_filters=[store_sales.ss_quantity >= Int64(21), store_sales.ss_quantity <= Int64(40)] +29)--Subquery: +30)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_net_paid)]] +31)------Projection: store_sales.ss_net_paid +32)--------Filter: store_sales.ss_quantity >= Int64(21) AND store_sales.ss_quantity <= Int64(40) +33)----------TableScan: store_sales projection=[ss_quantity, ss_net_paid], partial_filters=[store_sales.ss_quantity >= Int64(21), store_sales.ss_quantity <= Int64(40)] +34)--Subquery: +35)----Projection: count(Int64(1)) AS count(*) +36)------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +37)--------Projection: +38)----------Filter: store_sales.ss_quantity >= Int64(41) AND store_sales.ss_quantity <= Int64(60) +39)------------TableScan: store_sales projection=[ss_quantity], partial_filters=[store_sales.ss_quantity >= Int64(41), store_sales.ss_quantity <= Int64(60)] +40)--Subquery: +41)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_ext_discount_amt)]] +42)------Projection: store_sales.ss_ext_discount_amt +43)--------Filter: store_sales.ss_quantity >= Int64(41) AND store_sales.ss_quantity <= Int64(60) +44)----------TableScan: store_sales projection=[ss_quantity, ss_ext_discount_amt], partial_filters=[store_sales.ss_quantity >= Int64(41), store_sales.ss_quantity <= Int64(60)] +45)--Subquery: +46)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_net_paid)]] +47)------Projection: store_sales.ss_net_paid +48)--------Filter: store_sales.ss_quantity >= Int64(41) AND store_sales.ss_quantity <= Int64(60) +49)----------TableScan: store_sales projection=[ss_quantity, ss_net_paid], partial_filters=[store_sales.ss_quantity >= Int64(41), store_sales.ss_quantity <= Int64(60)] +50)--Subquery: +51)----Projection: count(Int64(1)) AS count(*) +52)------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +53)--------Projection: +54)----------Filter: store_sales.ss_quantity >= Int64(61) AND store_sales.ss_quantity <= Int64(80) +55)------------TableScan: store_sales projection=[ss_quantity], partial_filters=[store_sales.ss_quantity >= Int64(61), store_sales.ss_quantity <= Int64(80)] +56)--Subquery: +57)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_ext_discount_amt)]] +58)------Projection: store_sales.ss_ext_discount_amt +59)--------Filter: store_sales.ss_quantity >= Int64(61) AND store_sales.ss_quantity <= Int64(80) +60)----------TableScan: store_sales projection=[ss_quantity, ss_ext_discount_amt], partial_filters=[store_sales.ss_quantity >= Int64(61), store_sales.ss_quantity <= Int64(80)] +61)--Subquery: +62)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_net_paid)]] +63)------Projection: store_sales.ss_net_paid +64)--------Filter: store_sales.ss_quantity >= Int64(61) AND store_sales.ss_quantity <= Int64(80) +65)----------TableScan: store_sales projection=[ss_quantity, ss_net_paid], partial_filters=[store_sales.ss_quantity >= Int64(61), store_sales.ss_quantity <= Int64(80)] +66)--Subquery: +67)----Projection: count(Int64(1)) AS count(*) +68)------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +69)--------Projection: +70)----------Filter: store_sales.ss_quantity >= Int64(81) AND store_sales.ss_quantity <= Int64(100) +71)------------TableScan: store_sales projection=[ss_quantity], partial_filters=[store_sales.ss_quantity >= Int64(81), store_sales.ss_quantity <= Int64(100)] +72)--Subquery: +73)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_ext_discount_amt)]] +74)------Projection: store_sales.ss_ext_discount_amt +75)--------Filter: store_sales.ss_quantity >= Int64(81) AND store_sales.ss_quantity <= Int64(100) +76)----------TableScan: store_sales projection=[ss_quantity, ss_ext_discount_amt], partial_filters=[store_sales.ss_quantity >= Int64(81), store_sales.ss_quantity <= Int64(100)] +77)--Subquery: +78)----Aggregate: groupBy=[[]], aggr=[[avg(store_sales.ss_net_paid)]] +79)------Projection: store_sales.ss_net_paid +80)--------Filter: store_sales.ss_quantity >= Int64(81) AND store_sales.ss_quantity <= Int64(100) +81)----------TableScan: store_sales projection=[ss_quantity, ss_net_paid], partial_filters=[store_sales.ss_quantity >= Int64(81), store_sales.ss_quantity <= Int64(100)] +82)--Filter: reason.r_reason_sk = Int64(1) +83)----TableScan: reason projection=[r_reason_sk], partial_filters=[reason.r_reason_sk = Int64(1)] +physical_plan +01)ScalarSubqueryExec: subqueries=15 +02)--ProjectionExec: expr=[CASE WHEN scalar_subquery() > 74129 THEN scalar_subquery() ELSE scalar_subquery() END as bucket1, CASE WHEN scalar_subquery() > 122840 THEN scalar_subquery() ELSE scalar_subquery() END as bucket2, CASE WHEN scalar_subquery() > 56580 THEN scalar_subquery() ELSE scalar_subquery() END as bucket3, CASE WHEN scalar_subquery() > 10097 THEN scalar_subquery() ELSE scalar_subquery() END as bucket4, CASE WHEN scalar_subquery() > 165306 THEN scalar_subquery() ELSE scalar_subquery() END as bucket5] +03)----RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +04)------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/reason.vortex]]}, projection=[r_reason_sk], file_type=vortex, predicate: r_reason_sk@0 = 1 +05)--ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +06)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +07)------CoalescePartitionsExec +08)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +09)----------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, file_type=vortex, predicate: ss_quantity@10 >= 1 AND ss_quantity@10 <= 20 +10)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +11)----CoalescePartitionsExec +12)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +13)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_ext_discount_amt], file_type=vortex, predicate: ss_quantity@10 >= 1 AND ss_quantity@10 <= 20 +14)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_net_paid)] +15)----CoalescePartitionsExec +16)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_net_paid)] +17)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_net_paid], file_type=vortex, predicate: ss_quantity@10 >= 1 AND ss_quantity@10 <= 20 +18)--ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +19)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +20)------CoalescePartitionsExec +21)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +22)----------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, file_type=vortex, predicate: ss_quantity@10 >= 21 AND ss_quantity@10 <= 40 +23)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +24)----CoalescePartitionsExec +25)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +26)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_ext_discount_amt], file_type=vortex, predicate: ss_quantity@10 >= 21 AND ss_quantity@10 <= 40 +27)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_net_paid)] +28)----CoalescePartitionsExec +29)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_net_paid)] +30)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_net_paid], file_type=vortex, predicate: ss_quantity@10 >= 21 AND ss_quantity@10 <= 40 +31)--ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +32)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +33)------CoalescePartitionsExec +34)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +35)----------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, file_type=vortex, predicate: ss_quantity@10 >= 41 AND ss_quantity@10 <= 60 +36)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +37)----CoalescePartitionsExec +38)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +39)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_ext_discount_amt], file_type=vortex, predicate: ss_quantity@10 >= 41 AND ss_quantity@10 <= 60 +40)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_net_paid)] +41)----CoalescePartitionsExec +42)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_net_paid)] +43)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_net_paid], file_type=vortex, predicate: ss_quantity@10 >= 41 AND ss_quantity@10 <= 60 +44)--ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +45)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +46)------CoalescePartitionsExec +47)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +48)----------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, file_type=vortex, predicate: ss_quantity@10 >= 61 AND ss_quantity@10 <= 80 +49)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +50)----CoalescePartitionsExec +51)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +52)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_ext_discount_amt], file_type=vortex, predicate: ss_quantity@10 >= 61 AND ss_quantity@10 <= 80 +53)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_net_paid)] +54)----CoalescePartitionsExec +55)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_net_paid)] +56)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_net_paid], file_type=vortex, predicate: ss_quantity@10 >= 61 AND ss_quantity@10 <= 80 +57)--ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +58)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +59)------CoalescePartitionsExec +60)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +61)----------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, file_type=vortex, predicate: ss_quantity@10 >= 81 AND ss_quantity@10 <= 100 +62)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +63)----CoalescePartitionsExec +64)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_ext_discount_amt)] +65)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_ext_discount_amt], file_type=vortex, predicate: ss_quantity@10 >= 81 AND ss_quantity@10 <= 100 +66)--AggregateExec: mode=Final, gby=[], aggr=[avg(store_sales.ss_net_paid)] +67)----CoalescePartitionsExec +68)------AggregateExec: mode=Partial, gby=[], aggr=[avg(store_sales.ss_net_paid)] +69)--------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_net_paid], file_type=vortex, predicate: ss_quantity@10 >= 81 AND ss_quantity@10 <= 100 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q90.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q90.slt.no new file mode 100644 index 00000000000..7e098e17175 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q90.slt.no @@ -0,0 +1,100 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT case when pmc=0 then null else cast(amc AS decimal(15,4))/cast(pmc AS decimal(15,4)) end am_pm_ratio +FROM + (SELECT count(*) amc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 8 AND 8+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) "at", + (SELECT count(*) pmc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 19 AND 19+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +ORDER BY am_pm_ratio +LIMIT 100; +---- +logical_plan +01)Sort: am_pm_ratio ASC NULLS LAST, fetch=100 +02)--Projection: CASE WHEN pt.pmc = Int64(0) THEN Decimal128(NULL,23,8) ELSE CAST(at.amc AS Decimal128(15, 4)) / CAST(pt.pmc AS Decimal128(15, 4)) END AS am_pm_ratio +03)----Cross Join: +04)------SubqueryAlias: at +05)--------Projection: count(Int64(1)) AS count(*) AS amc +06)----------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +07)------------Projection: +08)--------------Inner Join: web_sales.ws_web_page_sk = web_page.wp_web_page_sk +09)----------------Projection: web_sales.ws_web_page_sk +10)------------------Inner Join: web_sales.ws_sold_time_sk = time_dim.t_time_sk +11)--------------------Projection: web_sales.ws_sold_time_sk, web_sales.ws_web_page_sk +12)----------------------Inner Join: web_sales.ws_ship_hdemo_sk = household_demographics.hd_demo_sk +13)------------------------TableScan: web_sales projection=[ws_sold_time_sk, ws_ship_hdemo_sk, ws_web_page_sk] +14)------------------------Projection: household_demographics.hd_demo_sk +15)--------------------------Filter: household_demographics.hd_dep_count = Int64(6) +16)----------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count], partial_filters=[household_demographics.hd_dep_count = Int64(6)] +17)--------------------Projection: time_dim.t_time_sk +18)----------------------Filter: time_dim.t_hour >= Int64(8) AND time_dim.t_hour <= Int64(9) +19)------------------------TableScan: time_dim projection=[t_time_sk, t_hour], partial_filters=[time_dim.t_hour >= Int64(8), time_dim.t_hour <= Int64(9)] +20)----------------Projection: web_page.wp_web_page_sk +21)------------------Filter: web_page.wp_char_count >= Int64(5000) AND web_page.wp_char_count <= Int64(5200) +22)--------------------TableScan: web_page projection=[wp_web_page_sk, wp_char_count], partial_filters=[web_page.wp_char_count >= Int64(5000), web_page.wp_char_count <= Int64(5200)] +23)------SubqueryAlias: pt +24)--------Projection: count(Int64(1)) AS count(*) AS pmc +25)----------Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +26)------------Projection: +27)--------------Inner Join: web_sales.ws_web_page_sk = web_page.wp_web_page_sk +28)----------------Projection: web_sales.ws_web_page_sk +29)------------------Inner Join: web_sales.ws_sold_time_sk = time_dim.t_time_sk +30)--------------------Projection: web_sales.ws_sold_time_sk, web_sales.ws_web_page_sk +31)----------------------Inner Join: web_sales.ws_ship_hdemo_sk = household_demographics.hd_demo_sk +32)------------------------TableScan: web_sales projection=[ws_sold_time_sk, ws_ship_hdemo_sk, ws_web_page_sk] +33)------------------------Projection: household_demographics.hd_demo_sk +34)--------------------------Filter: household_demographics.hd_dep_count = Int64(6) +35)----------------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count], partial_filters=[household_demographics.hd_dep_count = Int64(6)] +36)--------------------Projection: time_dim.t_time_sk +37)----------------------Filter: time_dim.t_hour >= Int64(19) AND time_dim.t_hour <= Int64(20) +38)------------------------TableScan: time_dim projection=[t_time_sk, t_hour], partial_filters=[time_dim.t_hour >= Int64(19), time_dim.t_hour <= Int64(20)] +39)----------------Projection: web_page.wp_web_page_sk +40)------------------Filter: web_page.wp_char_count >= Int64(5000) AND web_page.wp_char_count <= Int64(5200) +41)--------------------TableScan: web_page projection=[wp_web_page_sk, wp_char_count], partial_filters=[web_page.wp_char_count >= Int64(5000), web_page.wp_char_count <= Int64(5200)] +physical_plan +01)SortExec: TopK(fetch=100), expr=[am_pm_ratio@0 ASC NULLS LAST], preserve_partitioning=[false] +02)--ProjectionExec: expr=[CASE WHEN pmc@1 = 0 THEN NULL ELSE CAST(amc@0 AS Decimal128(15, 4)) / CAST(pmc@1 AS Decimal128(15, 4)) END as am_pm_ratio] +03)----CrossJoinExec +04)------ProjectionExec: expr=[count(Int64(1))@0 as amc] +05)--------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +06)----------CoalescePartitionsExec +07)------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wp_web_page_sk@0, ws_web_page_sk@0)], projection=[] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_page.vortex]]}, projection=[wp_web_page_sk], file_type=vortex, predicate: wp_char_count@10 >= 5000 AND wp_char_count@10 <= 5200 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ws_sold_time_sk@0)], projection=[ws_web_page_sk@2] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 >= 8 AND t_hour@3 <= 9 +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ws_ship_hdemo_sk@1)], projection=[ws_sold_time_sk@1, ws_web_page_sk@3] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 6 +14)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_time_sk, ws_ship_hdemo_sk, ws_web_page_sk], file_type=vortex +15)------ProjectionExec: expr=[count(Int64(1))@0 as pmc] +16)--------AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +17)----------CoalescePartitionsExec +18)------------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +19)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(wp_web_page_sk@0, ws_web_page_sk@0)], projection=[] +20)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_page.vortex]]}, projection=[wp_web_page_sk], file_type=vortex, predicate: wp_char_count@10 >= 5000 AND wp_char_count@10 <= 5200 +21)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ws_sold_time_sk@0)], projection=[ws_web_page_sk@2] +22)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 >= 19 AND t_hour@3 <= 20 +23)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ws_ship_hdemo_sk@1)], projection=[ws_sold_time_sk@1, ws_web_page_sk@3] +24)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 6 +25)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_time_sk, ws_ship_hdemo_sk, ws_web_page_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q91.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q91.slt.no new file mode 100644 index 00000000000..43a4870fdf2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q91.slt.no @@ -0,0 +1,95 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + sum(cr_net_loss) Returns_Loss +FROM call_center, + catalog_returns, + date_dim, + customer, + customer_address, + customer_demographics, + household_demographics +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk= c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1998 + AND d_moy = 11 + AND ((cd_marital_status = 'M' + AND cd_education_status = 'Unknown') or(cd_marital_status = 'W' + AND cd_education_status = 'Advanced Degree')) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, + cc_name, + cc_manager, + cd_marital_status, + cd_education_status +ORDER BY sum(cr_net_loss) DESC; +---- +logical_plan +01)Sort: returns_loss DESC NULLS FIRST +02)--Projection: call_center.cc_call_center_id AS call_center, call_center.cc_name AS call_center_name, call_center.cc_manager AS manager, sum(catalog_returns.cr_net_loss) AS returns_loss +03)----Aggregate: groupBy=[[call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, customer_demographics.cd_marital_status, customer_demographics.cd_education_status]], aggr=[[sum(catalog_returns.cr_net_loss)]] +04)------Projection: call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, catalog_returns.cr_net_loss, customer_demographics.cd_marital_status, customer_demographics.cd_education_status +05)--------Inner Join: customer.c_current_hdemo_sk = household_demographics.hd_demo_sk +06)----------Projection: call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, catalog_returns.cr_net_loss, customer.c_current_hdemo_sk, customer_demographics.cd_marital_status, customer_demographics.cd_education_status +07)------------Inner Join: customer.c_current_cdemo_sk = customer_demographics.cd_demo_sk +08)--------------Projection: call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, catalog_returns.cr_net_loss, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk +09)----------------Inner Join: customer.c_current_addr_sk = customer_address.ca_address_sk +10)------------------Projection: call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, catalog_returns.cr_net_loss, customer.c_current_cdemo_sk, customer.c_current_hdemo_sk, customer.c_current_addr_sk +11)--------------------Inner Join: catalog_returns.cr_returning_customer_sk = customer.c_customer_sk +12)----------------------Projection: call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, catalog_returns.cr_returning_customer_sk, catalog_returns.cr_net_loss +13)------------------------Inner Join: catalog_returns.cr_returned_date_sk = date_dim.d_date_sk +14)--------------------------Projection: call_center.cc_call_center_id, call_center.cc_name, call_center.cc_manager, catalog_returns.cr_returned_date_sk, catalog_returns.cr_returning_customer_sk, catalog_returns.cr_net_loss +15)----------------------------Inner Join: call_center.cc_call_center_sk = catalog_returns.cr_call_center_sk +16)------------------------------TableScan: call_center projection=[cc_call_center_sk, cc_call_center_id, cc_name, cc_manager] +17)------------------------------TableScan: catalog_returns projection=[cr_returned_date_sk, cr_returning_customer_sk, cr_call_center_sk, cr_net_loss] +18)--------------------------Projection: date_dim.d_date_sk +19)----------------------------Filter: date_dim.d_moy = Int64(11) AND date_dim.d_year = Int64(1998) +20)------------------------------TableScan: date_dim projection=[d_date_sk, d_year, d_moy], partial_filters=[date_dim.d_moy = Int64(11), date_dim.d_year = Int64(1998)] +21)----------------------TableScan: customer projection=[c_customer_sk, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk] +22)------------------Projection: customer_address.ca_address_sk +23)--------------------Filter: customer_address.ca_gmt_offset = Decimal128(-7.00,5,2) +24)----------------------TableScan: customer_address projection=[ca_address_sk, ca_gmt_offset], partial_filters=[customer_address.ca_gmt_offset = Decimal128(-7.00,5,2)] +25)--------------Filter: customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Unknown") OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree") +26)----------------TableScan: customer_demographics projection=[cd_demo_sk, cd_marital_status, cd_education_status], partial_filters=[customer_demographics.cd_marital_status = Utf8View("M") AND customer_demographics.cd_education_status = Utf8View("Unknown") OR customer_demographics.cd_marital_status = Utf8View("W") AND customer_demographics.cd_education_status = Utf8View("Advanced Degree")] +27)----------Projection: household_demographics.hd_demo_sk +28)------------Filter: household_demographics.hd_buy_potential LIKE Utf8View("Unknown%") +29)--------------TableScan: household_demographics projection=[hd_demo_sk, hd_buy_potential], partial_filters=[household_demographics.hd_buy_potential LIKE Utf8View("Unknown%")] +physical_plan +01)SortPreservingMergeExec: [returns_loss@3 DESC] +02)--SortExec: expr=[returns_loss@3 DESC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[cc_call_center_id@0 as call_center, cc_name@1 as call_center_name, cc_manager@2 as manager, sum(catalog_returns.cr_net_loss)@5 as returns_loss] +04)------AggregateExec: mode=FinalPartitioned, gby=[cc_call_center_id@0 as cc_call_center_id, cc_name@1 as cc_name, cc_manager@2 as cc_manager, cd_marital_status@3 as cd_marital_status, cd_education_status@4 as cd_education_status], aggr=[sum(catalog_returns.cr_net_loss)] +05)--------RepartitionExec: partitioning=Hash([cc_call_center_id@0, cc_name@1, cc_manager@2, cd_marital_status@3, cd_education_status@4], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[cc_call_center_id@0 as cc_call_center_id, cc_name@1 as cc_name, cc_manager@2 as cc_manager, cd_marital_status@4 as cd_marital_status, cd_education_status@5 as cd_education_status], aggr=[sum(catalog_returns.cr_net_loss)] +07)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_hdemo_sk@4, hd_demo_sk@0)], projection=[cc_call_center_id@0, cc_name@1, cc_manager@2, cr_net_loss@3, cd_marital_status@5, cd_education_status@6] +08)--------------CoalescePartitionsExec +09)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_cdemo_sk@4, cd_demo_sk@0)], projection=[cc_call_center_id@0, cc_name@1, cc_manager@2, cr_net_loss@3, c_current_hdemo_sk@5, cd_marital_status@7, cd_education_status@8] +10)------------------CoalescePartitionsExec +11)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(c_current_addr_sk@6, ca_address_sk@0)], projection=[cc_call_center_id@0, cc_name@1, cc_manager@2, cr_net_loss@3, c_current_cdemo_sk@4, c_current_hdemo_sk@5] +12)----------------------CoalescePartitionsExec +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cr_returning_customer_sk@3, c_customer_sk@0)], projection=[cc_call_center_id@0, cc_name@1, cc_manager@2, cr_net_loss@4, c_current_cdemo_sk@6, c_current_hdemo_sk@7, c_current_addr_sk@8] +14)--------------------------CoalescePartitionsExec +15)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cr_returned_date_sk@3)], projection=[cc_call_center_id@1, cc_name@2, cc_manager@3, cr_returning_customer_sk@5, cr_net_loss@6] +16)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_moy@8 = 11 AND d_year@6 = 1998 +17)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cc_call_center_sk@0, cr_call_center_sk@2)], projection=[cc_call_center_id@1, cc_name@2, cc_manager@3, cr_returned_date_sk@4, cr_returning_customer_sk@5, cr_net_loss@7] +18)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/call_center.vortex]]}, projection=[cc_call_center_sk, cc_call_center_id, cc_name, cc_manager], file_type=vortex +19)--------------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +20)----------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/catalog_returns.vortex]]}, projection=[cr_returned_date_sk, cr_returning_customer_sk, cr_call_center_sk, cr_net_loss], file_type=vortex +21)--------------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +22)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer.vortex]]}, projection=[c_customer_sk, c_current_cdemo_sk, c_current_hdemo_sk, c_current_addr_sk], file_type=vortex +23)----------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +24)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_gmt_offset@11 = -7.00 +25)------------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +26)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_demographics.vortex]]}, projection=[cd_demo_sk, cd_marital_status, cd_education_status], file_type=vortex, predicate: cd_marital_status@2 = M AND cd_education_status@3 = Unknown OR cd_marital_status@2 = W AND cd_education_status@3 = Advanced Degree +27)--------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +28)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_buy_potential@2 LIKE Unknown% diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q92.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q92.slt.no new file mode 100644 index 00000000000..563c1659b27 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q92.slt.no @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT sum(ws_ext_discount_amt) AS "Excess Discount Amount" +FROM web_sales, + item, + date_dim +WHERE i_manufact_id = 350 + AND i_item_sk = ws_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk + AND ws_ext_discount_amt > + (SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100; +---- +logical_plan +01)Sort: Excess Discount Amount ASC NULLS LAST, fetch=100 +02)--Projection: sum(web_sales.ws_ext_discount_amt) AS Excess Discount Amount +03)----Aggregate: groupBy=[[]], aggr=[[sum(web_sales.ws_ext_discount_amt)]] +04)------Projection: web_sales.ws_ext_discount_amt +05)--------LeftSemi Join: item.i_item_sk = __scalar_sq_1.ws_item_sk Filter: CAST(web_sales.ws_ext_discount_amt AS Decimal128(30, 15)) > __scalar_sq_1.Float64(1.3) * avg(web_sales.ws_ext_discount_amt) +06)----------Projection: web_sales.ws_ext_discount_amt, item.i_item_sk +07)------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +08)--------------Projection: web_sales.ws_sold_date_sk, web_sales.ws_ext_discount_amt, item.i_item_sk +09)----------------Inner Join: web_sales.ws_item_sk = item.i_item_sk +10)------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_ext_discount_amt] +11)------------------Projection: item.i_item_sk +12)--------------------Filter: item.i_manufact_id = Int64(350) +13)----------------------TableScan: item projection=[i_item_sk, i_manufact_id], partial_filters=[item.i_manufact_id = Int64(350)] +14)--------------Projection: date_dim.d_date_sk +15)----------------Filter: date_dim.d_date >= Date32("2000-01-27") AND date_dim.d_date <= Date32("2000-04-26") +16)------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-01-27"), date_dim.d_date <= Date32("2000-04-26")] +17)----------SubqueryAlias: __scalar_sq_1 +18)------------Projection: CAST(Float64(1.3) * CAST(avg(web_sales.ws_ext_discount_amt) AS Float64) AS Decimal128(30, 15)), web_sales.ws_item_sk +19)--------------Aggregate: groupBy=[[web_sales.ws_item_sk]], aggr=[[avg(web_sales.ws_ext_discount_amt)]] +20)----------------Projection: web_sales.ws_item_sk, web_sales.ws_ext_discount_amt +21)------------------Inner Join: web_sales.ws_sold_date_sk = date_dim.d_date_sk +22)--------------------TableScan: web_sales projection=[ws_sold_date_sk, ws_item_sk, ws_ext_discount_amt] +23)--------------------Projection: date_dim.d_date_sk +24)----------------------Filter: date_dim.d_date >= Date32("2000-01-27") AND date_dim.d_date <= Date32("2000-04-26") +25)------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("2000-01-27"), date_dim.d_date <= Date32("2000-04-26")] +physical_plan +01)ProjectionExec: expr=[sum(web_sales.ws_ext_discount_amt)@0 as Excess Discount Amount] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[sum(web_sales.ws_ext_discount_amt)] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[sum(web_sales.ws_ext_discount_amt)] +06)----------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(i_item_sk@1, ws_item_sk@1)], filter=CAST(ws_ext_discount_amt@0 AS Decimal128(30, 15)) > Float64(1.3) * avg(web_sales.ws_ext_discount_amt)@1, projection=[ws_ext_discount_amt@0] +07)------------CoalescePartitionsExec +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_ext_discount_amt@2, i_item_sk@3] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-01-27 AND d_date@2 <= 2000-04-26 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ws_item_sk@1)], projection=[ws_sold_date_sk@1, ws_ext_discount_amt@3, i_item_sk@0] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk], file_type=vortex, predicate: i_manufact_id@13 = 350 +12)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_ext_discount_amt], file_type=vortex +13)------------ProjectionExec: expr=[CAST(1.3 * CAST(avg(web_sales.ws_ext_discount_amt)@1 AS Float64) AS Decimal128(30, 15)) as Float64(1.3) * avg(web_sales.ws_ext_discount_amt), ws_item_sk@0 as ws_item_sk] +14)--------------AggregateExec: mode=FinalPartitioned, gby=[ws_item_sk@0 as ws_item_sk], aggr=[avg(web_sales.ws_ext_discount_amt)] +15)----------------RepartitionExec: partitioning=Hash([ws_item_sk@0], 4), input_partitions=4 +16)------------------AggregateExec: mode=Partial, gby=[ws_item_sk@0 as ws_item_sk], aggr=[avg(web_sales.ws_ext_discount_amt)] +17)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_sold_date_sk@0)], projection=[ws_item_sk@2, ws_ext_discount_amt@3] +18)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 2000-01-27 AND d_date@2 <= 2000-04-26 +19)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_sold_date_sk, ws_item_sk, ws_ext_discount_amt], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q93.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q93.slt.no new file mode 100644 index 00000000000..735afa62962 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q93.slt.no @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT ss_customer_sk, + sum(act_sales) sumsales +FROM + (SELECT ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL THEN (ss_quantity-sr_return_quantity)*ss_sales_price + ELSE (ss_quantity*ss_sales_price) + END act_sales + FROM store_sales + LEFT OUTER JOIN store_returns ON (sr_item_sk = ss_item_sk + AND sr_ticket_number = ss_ticket_number) ,reason + WHERE sr_reason_sk = r_reason_sk + AND r_reason_desc = 'reason 28') t +GROUP BY ss_customer_sk +ORDER BY sumsales NULLS FIRST, + ss_customer_sk NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: sumsales ASC NULLS FIRST, t.ss_customer_sk ASC NULLS FIRST, fetch=100 +02)--Projection: t.ss_customer_sk, sum(t.act_sales) AS sumsales +03)----Aggregate: groupBy=[[t.ss_customer_sk]], aggr=[[sum(t.act_sales)]] +04)------SubqueryAlias: t +05)--------Projection: store_sales.ss_customer_sk, CASE WHEN store_returns.sr_return_quantity IS NOT NULL THEN CAST(store_sales.ss_quantity - store_returns.sr_return_quantity AS Decimal128(20, 0)) * store_sales.ss_sales_price ELSE CAST(store_sales.ss_quantity AS Decimal128(20, 0)) * store_sales.ss_sales_price END AS act_sales +06)----------Inner Join: store_returns.sr_reason_sk = reason.r_reason_sk +07)------------Projection: store_sales.ss_customer_sk, store_sales.ss_quantity, store_sales.ss_sales_price, store_returns.sr_reason_sk, store_returns.sr_return_quantity +08)--------------Left Join: store_sales.ss_item_sk = store_returns.sr_item_sk, store_sales.ss_ticket_number = store_returns.sr_ticket_number +09)----------------TableScan: store_sales projection=[ss_item_sk, ss_customer_sk, ss_ticket_number, ss_quantity, ss_sales_price] +10)----------------TableScan: store_returns projection=[sr_item_sk, sr_reason_sk, sr_ticket_number, sr_return_quantity] +11)------------Projection: reason.r_reason_sk +12)--------------Filter: reason.r_reason_desc = Utf8View("reason 28") +13)----------------TableScan: reason projection=[r_reason_sk, r_reason_desc], partial_filters=[reason.r_reason_desc = Utf8View("reason 28")] +physical_plan +01)SortPreservingMergeExec: [sumsales@1 ASC, ss_customer_sk@0 ASC], fetch=100 +02)--ProjectionExec: expr=[ss_customer_sk@0 as ss_customer_sk, sum(t.act_sales)@1 as sumsales] +03)----SortExec: TopK(fetch=100), expr=[sum(t.act_sales)@1 ASC, ss_customer_sk@0 ASC], preserve_partitioning=[true] +04)------AggregateExec: mode=FinalPartitioned, gby=[ss_customer_sk@0 as ss_customer_sk], aggr=[sum(t.act_sales)] +05)--------RepartitionExec: partitioning=Hash([ss_customer_sk@0], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[ss_customer_sk@0 as ss_customer_sk], aggr=[sum(t.act_sales)] +07)------------ProjectionExec: expr=[ss_customer_sk@0 as ss_customer_sk, CASE WHEN sr_return_quantity@1 IS NOT NULL THEN CAST(ss_quantity@2 - sr_return_quantity@1 AS Decimal128(20, 0)) * ss_sales_price@3 ELSE CAST(ss_quantity@2 AS Decimal128(20, 0)) * ss_sales_price@3 END as act_sales] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(r_reason_sk@0, sr_reason_sk@3)], projection=[ss_customer_sk@1, sr_return_quantity@5, ss_quantity@2, ss_sales_price@3] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/reason.vortex]]}, projection=[r_reason_sk], file_type=vortex, predicate: r_reason_desc@2 = reason 28 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Right, on=[(sr_item_sk@0, ss_item_sk@0), (sr_ticket_number@2, ss_ticket_number@2)], projection=[ss_customer_sk@5, ss_quantity@7, ss_sales_price@8, sr_reason_sk@1, sr_return_quantity@3] +11)------------------CoalescePartitionsExec +12)--------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:], [${WORK_DIR}/store_returns.vortex:]]}, projection=[sr_item_sk, sr_reason_sk, sr_ticket_number, sr_return_quantity], file_type=vortex +13)------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_item_sk, ss_customer_sk, ss_ticket_number, ss_quantity, ss_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q94.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q94.slt.no new file mode 100644 index 00000000000..05864072ca4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q94.slt.no @@ -0,0 +1,84 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND EXISTS + (SELECT * + FROM web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) + AND NOT exists + (SELECT * + FROM web_returns wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +logical_plan +01)Sort: order count ASC NULLS LAST, fetch=100 +02)--Projection: count(alias1) AS order count, sum(alias2) AS total shipping cost, sum(alias3) AS total net profit +03)----Aggregate: groupBy=[[]], aggr=[[count(alias1), sum(alias2), sum(alias3)]] +04)------Aggregate: groupBy=[[ws1.ws_order_number AS alias1]], aggr=[[sum(ws1.ws_ext_ship_cost) AS alias2, sum(ws1.ws_net_profit) AS alias3]] +05)--------LeftAnti Join: ws1.ws_order_number = __correlated_sq_2.wr_order_number +06)----------Projection: ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +07)------------LeftSemi Join: ws1.ws_order_number = __correlated_sq_1.ws_order_number Filter: ws1.ws_warehouse_sk != __correlated_sq_1.ws_warehouse_sk +08)--------------Projection: ws1.ws_warehouse_sk, ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +09)----------------Inner Join: ws1.ws_web_site_sk = web_site.web_site_sk +10)------------------Projection: ws1.ws_web_site_sk, ws1.ws_warehouse_sk, ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +11)--------------------Inner Join: ws1.ws_ship_addr_sk = customer_address.ca_address_sk +12)----------------------Projection: ws1.ws_ship_addr_sk, ws1.ws_web_site_sk, ws1.ws_warehouse_sk, ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +13)------------------------Inner Join: ws1.ws_ship_date_sk = date_dim.d_date_sk +14)--------------------------SubqueryAlias: ws1 +15)----------------------------TableScan: web_sales projection=[ws_ship_date_sk, ws_ship_addr_sk, ws_web_site_sk, ws_warehouse_sk, ws_order_number, ws_ext_ship_cost, ws_net_profit] +16)--------------------------Projection: date_dim.d_date_sk +17)----------------------------Filter: date_dim.d_date >= Date32("1999-02-01") AND date_dim.d_date <= Date32("1999-04-02") +18)------------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("1999-02-01"), date_dim.d_date <= Date32("1999-04-02")] +19)----------------------Projection: customer_address.ca_address_sk +20)------------------------Filter: customer_address.ca_state = Utf8View("IL") +21)--------------------------TableScan: customer_address projection=[ca_address_sk, ca_state], partial_filters=[customer_address.ca_state = Utf8View("IL")] +22)------------------Projection: web_site.web_site_sk +23)--------------------Filter: web_site.web_company_name = Utf8View("pri") +24)----------------------TableScan: web_site projection=[web_site_sk, web_company_name], partial_filters=[web_site.web_company_name = Utf8View("pri")] +25)--------------SubqueryAlias: __correlated_sq_1 +26)----------------SubqueryAlias: ws2 +27)------------------TableScan: web_sales projection=[ws_warehouse_sk, ws_order_number] +28)----------SubqueryAlias: __correlated_sq_2 +29)------------SubqueryAlias: wr1 +30)--------------TableScan: web_returns projection=[wr_order_number] +physical_plan +01)ProjectionExec: expr=[count(alias1)@0 as order count, sum(alias2)@1 as total shipping cost, sum(alias3)@2 as total net profit] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[count(alias1), sum(alias2), sum(alias3)] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[count(alias1), sum(alias2), sum(alias3)] +06)----------AggregateExec: mode=FinalPartitioned, gby=[alias1@0 as alias1], aggr=[sum(ws1.ws_ext_ship_cost) as alias2, sum(ws1.ws_net_profit) as alias3] +07)------------RepartitionExec: partitioning=Hash([alias1@0], 4), input_partitions=4 +08)--------------AggregateExec: mode=Partial, gby=[ws_order_number@0 as alias1], aggr=[sum(ws1.ws_ext_ship_cost) as alias2, sum(ws1.ws_net_profit) as alias3] +09)----------------RepartitionExec: partitioning=RoundRobinBatch(4), input_partitions=1 +10)------------------HashJoinExec: mode=CollectLeft, join_type=LeftAnti, on=[(ws_order_number@0, wr_order_number@0)] +11)--------------------CoalescePartitionsExec +12)----------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ws_order_number@1, ws_order_number@1)], filter=ws_warehouse_sk@0 != ws_warehouse_sk@1, projection=[ws_order_number@1, ws_ext_ship_cost@2, ws_net_profit@3] +13)------------------------CoalescePartitionsExec +14)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(web_site_sk@0, ws_web_site_sk@0)], projection=[ws_warehouse_sk@2, ws_order_number@3, ws_ext_ship_cost@4, ws_net_profit@5] +15)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_site.vortex]]}, projection=[web_site_sk], file_type=vortex, predicate: web_company_name@14 = pri +16)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ws_ship_addr_sk@0)], projection=[ws_web_site_sk@2, ws_warehouse_sk@3, ws_order_number@4, ws_ext_ship_cost@5, ws_net_profit@6] +17)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_state@8 = IL +18)------------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_ship_date_sk@0)], projection=[ws_ship_addr_sk@2, ws_web_site_sk@3, ws_warehouse_sk@4, ws_order_number@5, ws_ext_ship_cost@6, ws_net_profit@7] +19)--------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 1999-02-01 AND d_date@2 <= 1999-04-02 +20)--------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_ship_date_sk, ws_ship_addr_sk, ws_web_site_sk, ws_warehouse_sk, ws_order_number, ws_ext_ship_cost, ws_net_profit], file_type=vortex +21)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_warehouse_sk, ws_order_number], file_type=vortex +22)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_order_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q95.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q95.slt.no new file mode 100644 index 00000000000..ac5eed7e74c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q95.slt.no @@ -0,0 +1,111 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ws_wh AS + (SELECT ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, + web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND ws1.ws_order_number IN + (SELECT ws_order_number + FROM ws_wh) + AND ws1.ws_order_number IN + (SELECT wr_order_number + FROM web_returns, + ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +logical_plan +01)Sort: order count ASC NULLS LAST, fetch=100 +02)--Projection: count(alias1) AS order count, sum(alias2) AS total shipping cost, sum(alias3) AS total net profit +03)----Aggregate: groupBy=[[]], aggr=[[count(alias1), sum(alias2), sum(alias3)]] +04)------Aggregate: groupBy=[[ws1.ws_order_number AS alias1]], aggr=[[sum(ws1.ws_ext_ship_cost) AS alias2, sum(ws1.ws_net_profit) AS alias3]] +05)--------LeftSemi Join: ws1.ws_order_number = __correlated_sq_2.wr_order_number +06)----------LeftSemi Join: ws1.ws_order_number = __correlated_sq_1.ws_order_number +07)------------Projection: ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +08)--------------Inner Join: ws1.ws_web_site_sk = web_site.web_site_sk +09)----------------Projection: ws1.ws_web_site_sk, ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +10)------------------Inner Join: ws1.ws_ship_addr_sk = customer_address.ca_address_sk +11)--------------------Projection: ws1.ws_ship_addr_sk, ws1.ws_web_site_sk, ws1.ws_order_number, ws1.ws_ext_ship_cost, ws1.ws_net_profit +12)----------------------Inner Join: ws1.ws_ship_date_sk = date_dim.d_date_sk +13)------------------------SubqueryAlias: ws1 +14)--------------------------TableScan: web_sales projection=[ws_ship_date_sk, ws_ship_addr_sk, ws_web_site_sk, ws_order_number, ws_ext_ship_cost, ws_net_profit] +15)------------------------Projection: date_dim.d_date_sk +16)--------------------------Filter: date_dim.d_date >= Date32("1999-02-01") AND date_dim.d_date <= Date32("1999-04-02") +17)----------------------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("1999-02-01"), date_dim.d_date <= Date32("1999-04-02")] +18)--------------------Projection: customer_address.ca_address_sk +19)----------------------Filter: customer_address.ca_state = Utf8View("IL") +20)------------------------TableScan: customer_address projection=[ca_address_sk, ca_state], partial_filters=[customer_address.ca_state = Utf8View("IL")] +21)----------------Projection: web_site.web_site_sk +22)------------------Filter: web_site.web_company_name = Utf8View("pri") +23)--------------------TableScan: web_site projection=[web_site_sk, web_company_name], partial_filters=[web_site.web_company_name = Utf8View("pri")] +24)------------SubqueryAlias: __correlated_sq_1 +25)--------------SubqueryAlias: ws_wh +26)----------------Projection: ws1.ws_order_number +27)------------------LeftSemi Join: ws1.ws_order_number = ws2.ws_order_number Filter: ws2.ws_warehouse_sk != ws1.ws_warehouse_sk +28)--------------------SubqueryAlias: ws1 +29)----------------------TableScan: web_sales projection=[ws_warehouse_sk, ws_order_number] +30)--------------------SubqueryAlias: ws2 +31)----------------------TableScan: web_sales projection=[ws_warehouse_sk, ws_order_number] +32)----------SubqueryAlias: __correlated_sq_2 +33)------------LeftSemi Join: web_returns.wr_order_number = ws_wh.ws_order_number +34)--------------TableScan: web_returns projection=[wr_order_number] +35)--------------SubqueryAlias: ws_wh +36)----------------Projection: ws1.ws_order_number +37)------------------LeftSemi Join: ws1.ws_order_number = ws2.ws_order_number Filter: ws2.ws_warehouse_sk != ws1.ws_warehouse_sk +38)--------------------SubqueryAlias: ws1 +39)----------------------TableScan: web_sales projection=[ws_warehouse_sk, ws_order_number] +40)--------------------SubqueryAlias: ws2 +41)----------------------TableScan: web_sales projection=[ws_warehouse_sk, ws_order_number] +physical_plan +01)ProjectionExec: expr=[count(alias1)@0 as order count, sum(alias2)@1 as total shipping cost, sum(alias3)@2 as total net profit] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[count(alias1), sum(alias2), sum(alias3)] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[count(alias1), sum(alias2), sum(alias3)] +06)----------AggregateExec: mode=FinalPartitioned, gby=[alias1@0 as alias1], aggr=[sum(ws1.ws_ext_ship_cost) as alias2, sum(ws1.ws_net_profit) as alias3] +07)------------RepartitionExec: partitioning=Hash([alias1@0], 4), input_partitions=4 +08)--------------AggregateExec: mode=Partial, gby=[ws_order_number@0 as alias1], aggr=[sum(ws1.ws_ext_ship_cost) as alias2, sum(ws1.ws_net_profit) as alias3] +09)----------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ws_order_number@0, wr_order_number@0)] +10)------------------CoalescePartitionsExec +11)--------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(ws_order_number@0, ws_order_number@0)] +12)----------------------CoalescePartitionsExec +13)------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(web_site_sk@0, ws_web_site_sk@0)], projection=[ws_order_number@2, ws_ext_ship_cost@3, ws_net_profit@4] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_site.vortex]]}, projection=[web_site_sk], file_type=vortex, predicate: web_company_name@14 = pri +15)--------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(ca_address_sk@0, ws_ship_addr_sk@0)], projection=[ws_web_site_sk@2, ws_order_number@3, ws_ext_ship_cost@4, ws_net_profit@5] +16)----------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/customer_address.vortex]]}, projection=[ca_address_sk], file_type=vortex, predicate: ca_state@8 = IL +17)----------------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ws_ship_date_sk@0)], projection=[ws_ship_addr_sk@2, ws_web_site_sk@3, ws_order_number@4, ws_ext_ship_cost@5, ws_net_profit@6] +18)------------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 1999-02-01 AND d_date@2 <= 1999-04-02 +19)------------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_ship_date_sk, ws_ship_addr_sk, ws_web_site_sk, ws_order_number, ws_ext_ship_cost, ws_net_profit], file_type=vortex +20)----------------------HashJoinExec: mode=Partitioned, join_type=LeftSemi, on=[(ws_order_number@1, ws_order_number@1)], filter=ws_warehouse_sk@1 != ws_warehouse_sk@0, projection=[ws_order_number@1] +21)------------------------RepartitionExec: partitioning=Hash([ws_order_number@1], 4), input_partitions=4 +22)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_warehouse_sk, ws_order_number], file_type=vortex +23)------------------------RepartitionExec: partitioning=Hash([ws_order_number@1], 4), input_partitions=4 +24)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_warehouse_sk, ws_order_number], file_type=vortex +25)------------------HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(wr_order_number@0, ws_order_number@0)] +26)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/web_returns.vortex]]}, projection=[wr_order_number], file_type=vortex +27)--------------------HashJoinExec: mode=Partitioned, join_type=LeftSemi, on=[(ws_order_number@1, ws_order_number@1)], filter=ws_warehouse_sk@1 != ws_warehouse_sk@0, projection=[ws_order_number@1] +28)----------------------RepartitionExec: partitioning=Hash([ws_order_number@1], 4), input_partitions=4 +29)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_warehouse_sk, ws_order_number], file_type=vortex +30)----------------------RepartitionExec: partitioning=Hash([ws_order_number@1], 4), input_partitions=4 +31)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:], [${WORK_DIR}/web_sales.vortex:]]}, projection=[ws_warehouse_sk, ws_order_number], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q96.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q96.slt.no new file mode 100644 index 00000000000..c82568018a2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q96.slt.no @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT count(*) +FROM store_sales , + household_demographics, + time_dim, + store +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 20 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY count(*) +LIMIT 100; +---- +logical_plan +01)Sort: count(*) ASC NULLS LAST, fetch=100 +02)--Projection: count(Int64(1)) AS count(*) +03)----Aggregate: groupBy=[[]], aggr=[[count(Int64(1))]] +04)------Projection: +05)--------Inner Join: store_sales.ss_store_sk = store.s_store_sk +06)----------Projection: store_sales.ss_store_sk +07)------------Inner Join: store_sales.ss_sold_time_sk = time_dim.t_time_sk +08)--------------Projection: store_sales.ss_sold_time_sk, store_sales.ss_store_sk +09)----------------Inner Join: store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk +10)------------------TableScan: store_sales projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk] +11)------------------Projection: household_demographics.hd_demo_sk +12)--------------------Filter: household_demographics.hd_dep_count = Int64(7) +13)----------------------TableScan: household_demographics projection=[hd_demo_sk, hd_dep_count], partial_filters=[household_demographics.hd_dep_count = Int64(7)] +14)--------------Projection: time_dim.t_time_sk +15)----------------Filter: time_dim.t_hour = Int64(20) AND time_dim.t_minute >= Int64(30) +16)------------------TableScan: time_dim projection=[t_time_sk, t_hour, t_minute], partial_filters=[time_dim.t_hour = Int64(20), time_dim.t_minute >= Int64(30)] +17)----------Projection: store.s_store_sk +18)------------Filter: store.s_store_name = Utf8View("ese") +19)--------------TableScan: store projection=[s_store_sk, s_store_name], partial_filters=[store.s_store_name = Utf8View("ese")] +physical_plan +01)ProjectionExec: expr=[count(Int64(1))@0 as count(*)] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[count(Int64(1))] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[count(Int64(1))] +06)----------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(s_store_sk@0, ss_store_sk@0)], projection=[] +07)------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/store.vortex]]}, projection=[s_store_sk], file_type=vortex, predicate: s_store_name@5 = ese +08)------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(t_time_sk@0, ss_sold_time_sk@0)], projection=[ss_store_sk@2] +09)--------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/time_dim.vortex]]}, projection=[t_time_sk], file_type=vortex, predicate: t_hour@3 = 20 AND t_minute@4 >= 30 +10)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(hd_demo_sk@0, ss_hdemo_sk@1)], projection=[ss_sold_time_sk@1, ss_store_sk@3] +11)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/household_demographics.vortex]]}, projection=[hd_demo_sk], file_type=vortex, predicate: hd_dep_count@3 = 7 +12)----------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_time_sk, ss_hdemo_sk, ss_store_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q97.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q97.slt.no new file mode 100644 index 00000000000..de71ee1f0f8 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q97.slt.no @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +WITH ssci AS + (SELECT ss_customer_sk customer_sk , + ss_item_sk item_sk + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ss_customer_sk , + ss_item_sk), + csci as + ( SELECT cs_bill_customer_sk customer_sk ,cs_item_sk item_sk + FROM catalog_sales,date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY cs_bill_customer_sk ,cs_item_sk) +SELECT sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NULL THEN 1 + ELSE 0 + END) store_only , + sum(CASE + WHEN ssci.customer_sk IS NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) catalog_only , + sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) store_and_catalog +FROM ssci +FULL OUTER JOIN csci ON (ssci.customer_sk=csci.customer_sk + AND ssci.item_sk = csci.item_sk) +LIMIT 100; +---- +logical_plan +01)Projection: sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN Int64(1) ELSE Int64(0) END) AS store_only, sum(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END) AS catalog_only, sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END) AS store_and_catalog +02)--Limit: skip=0, fetch=100 +03)----Aggregate: groupBy=[[]], aggr=[[sum(CASE WHEN __common_expr_1 AS ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END)]] +04)------Projection: ssci.customer_sk IS NOT NULL AS __common_expr_1, ssci.customer_sk, csci.customer_sk +05)--------Full Join: ssci.customer_sk = csci.customer_sk, ssci.item_sk = csci.item_sk +06)----------SubqueryAlias: ssci +07)------------Projection: store_sales.ss_customer_sk AS customer_sk, store_sales.ss_item_sk AS item_sk +08)--------------Aggregate: groupBy=[[store_sales.ss_customer_sk, store_sales.ss_item_sk]], aggr=[[]] +09)----------------Projection: store_sales.ss_item_sk, store_sales.ss_customer_sk +10)------------------LeftSemi Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +11)--------------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk] +12)--------------------Projection: date_dim.d_date_sk +13)----------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +14)------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +15)----------SubqueryAlias: csci +16)------------Projection: catalog_sales.cs_bill_customer_sk AS customer_sk, catalog_sales.cs_item_sk AS item_sk +17)--------------Aggregate: groupBy=[[catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk]], aggr=[[]] +18)----------------Projection: catalog_sales.cs_bill_customer_sk, catalog_sales.cs_item_sk +19)------------------LeftSemi Join: catalog_sales.cs_sold_date_sk = date_dim.d_date_sk +20)--------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk] +21)--------------------Projection: date_dim.d_date_sk +22)----------------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +23)------------------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +physical_plan +01)ProjectionExec: expr=[sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN Int64(1) ELSE Int64(0) END)@0 as store_only, sum(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END)@1 as catalog_only, sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END)@2 as store_and_catalog] +02)--GlobalLimitExec: skip=0, fetch=100 +03)----AggregateExec: mode=Final, gby=[], aggr=[sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END)] +04)------CoalescePartitionsExec +05)--------AggregateExec: mode=Partial, gby=[], aggr=[sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL THEN Int64(1) ELSE Int64(0) END)] +06)----------ProjectionExec: expr=[customer_sk@0 IS NOT NULL as __common_expr_1, customer_sk@0 as customer_sk, customer_sk@1 as customer_sk] +07)------------HashJoinExec: mode=CollectLeft, join_type=Full, on=[(customer_sk@0, customer_sk@0), (item_sk@1, item_sk@1)], projection=[customer_sk@2, customer_sk@0] +08)--------------CoalescePartitionsExec +09)----------------ProjectionExec: expr=[cs_bill_customer_sk@0 as customer_sk, cs_item_sk@1 as item_sk] +10)------------------AggregateExec: mode=FinalPartitioned, gby=[cs_bill_customer_sk@0 as cs_bill_customer_sk, cs_item_sk@1 as cs_item_sk], aggr=[] +11)--------------------RepartitionExec: partitioning=Hash([cs_bill_customer_sk@0, cs_item_sk@1], 4), input_partitions=4 +12)----------------------AggregateExec: mode=Partial, gby=[cs_bill_customer_sk@0 as cs_bill_customer_sk, cs_item_sk@1 as cs_item_sk], aggr=[] +13)------------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, cs_sold_date_sk@0)], projection=[cs_bill_customer_sk@1, cs_item_sk@2] +14)--------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +15)--------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_bill_customer_sk, cs_item_sk], file_type=vortex +16)--------------ProjectionExec: expr=[ss_customer_sk@0 as customer_sk, ss_item_sk@1 as item_sk] +17)----------------AggregateExec: mode=FinalPartitioned, gby=[ss_customer_sk@0 as ss_customer_sk, ss_item_sk@1 as ss_item_sk], aggr=[] +18)------------------RepartitionExec: partitioning=Hash([ss_customer_sk@0, ss_item_sk@1], 4), input_partitions=4 +19)--------------------AggregateExec: mode=Partial, gby=[ss_customer_sk@1 as ss_customer_sk, ss_item_sk@0 as ss_item_sk], aggr=[] +20)----------------------HashJoinExec: mode=CollectLeft, join_type=RightSemi, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_item_sk@1, ss_customer_sk@2] +21)------------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +22)------------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_customer_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q98.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q98.slt.no new file mode 100644 index 00000000000..363df4e7569 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q98.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(ss_ext_sales_price) AS itemrevenue, + sum(ss_ext_sales_price)*100.0000/sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM store_sales , + item, + date_dim +WHERE ss_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST; +---- +logical_plan +01)Sort: item.i_category ASC NULLS FIRST, item.i_class ASC NULLS FIRST, item.i_item_id ASC NULLS FIRST, item.i_item_desc ASC NULLS FIRST, revenueratio ASC NULLS FIRST +02)--Projection: item.i_item_id, item.i_item_desc, item.i_category, item.i_class, item.i_current_price, sum(store_sales.ss_ext_sales_price) AS itemrevenue, CAST(sum(store_sales.ss_ext_sales_price) AS Float64) * Float64(100) / CAST(sum(sum(store_sales.ss_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING AS Float64) AS revenueratio +03)----WindowAggr: windowExpr=[[sum(sum(store_sales.ss_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING]] +04)------Aggregate: groupBy=[[item.i_item_id, item.i_item_desc, item.i_category, item.i_class, item.i_current_price]], aggr=[[sum(store_sales.ss_ext_sales_price)]] +05)--------Projection: store_sales.ss_ext_sales_price, item.i_item_id, item.i_item_desc, item.i_current_price, item.i_class, item.i_category +06)----------Inner Join: store_sales.ss_sold_date_sk = date_dim.d_date_sk +07)------------Projection: store_sales.ss_sold_date_sk, store_sales.ss_ext_sales_price, item.i_item_id, item.i_item_desc, item.i_current_price, item.i_class, item.i_category +08)--------------Inner Join: store_sales.ss_item_sk = item.i_item_sk +09)----------------TableScan: store_sales projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price] +10)----------------Filter: item.i_category = Utf8View("Sports") OR item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Home") +11)------------------TableScan: item projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_class, i_category], partial_filters=[item.i_category = Utf8View("Sports") OR item.i_category = Utf8View("Books") OR item.i_category = Utf8View("Home")] +12)------------Projection: date_dim.d_date_sk +13)--------------Filter: date_dim.d_date >= Date32("1999-02-22") AND date_dim.d_date <= Date32("1999-03-24") +14)----------------TableScan: date_dim projection=[d_date_sk, d_date], partial_filters=[date_dim.d_date >= Date32("1999-02-22"), date_dim.d_date <= Date32("1999-03-24")] +physical_plan +01)SortPreservingMergeExec: [i_category@2 ASC, i_class@3 ASC, i_item_id@0 ASC, i_item_desc@1 ASC, revenueratio@6 ASC] +02)--SortExec: expr=[i_category@2 ASC, i_class@3 ASC, i_item_id@0 ASC, i_item_desc@1 ASC, revenueratio@6 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_category@2 as i_category, i_class@3 as i_class, i_current_price@4 as i_current_price, sum(store_sales.ss_ext_sales_price)@5 as itemrevenue, CAST(sum(store_sales.ss_ext_sales_price)@5 AS Float64) * 100 / CAST(sum(sum(store_sales.ss_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING@6 AS Float64) as revenueratio] +04)------WindowAggExec: wdw=[sum(sum(store_sales.ss_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING: Ok(Field { name: "sum(sum(store_sales.ss_ext_sales_price)) PARTITION BY [item.i_class] ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING", data_type: Decimal128(27, 2), nullable: true }), frame: WindowFrame { units: Rows, start_bound: Preceding(UInt64(NULL)), end_bound: Following(UInt64(NULL)), is_causal: false }] +05)--------SortExec: expr=[i_class@3 ASC NULLS LAST], preserve_partitioning=[true] +06)----------RepartitionExec: partitioning=Hash([i_class@3], 4), input_partitions=4 +07)------------AggregateExec: mode=FinalPartitioned, gby=[i_item_id@0 as i_item_id, i_item_desc@1 as i_item_desc, i_category@2 as i_category, i_class@3 as i_class, i_current_price@4 as i_current_price], aggr=[sum(store_sales.ss_ext_sales_price)] +08)--------------RepartitionExec: partitioning=Hash([i_item_id@0, i_item_desc@1, i_category@2, i_class@3, i_current_price@4], 4), input_partitions=4 +09)----------------AggregateExec: mode=Partial, gby=[i_item_id@1 as i_item_id, i_item_desc@2 as i_item_desc, i_category@5 as i_category, i_class@4 as i_class, i_current_price@3 as i_current_price], aggr=[sum(store_sales.ss_ext_sales_price)] +10)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, ss_sold_date_sk@0)], projection=[ss_ext_sales_price@2, i_item_id@3, i_item_desc@4, i_current_price@5, i_class@6, i_category@7] +11)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_date@2 >= 1999-02-22 AND d_date@2 <= 1999-03-24 +12)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(i_item_sk@0, ss_item_sk@1)], projection=[ss_sold_date_sk@6, ss_ext_sales_price@8, i_item_id@1, i_item_desc@2, i_current_price@3, i_class@4, i_category@5] +13)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/item.vortex]]}, projection=[i_item_sk, i_item_id, i_item_desc, i_current_price, i_class, i_category], file_type=vortex, predicate: i_category@12 = Sports OR i_category@12 = Books OR i_category@12 = Home +14)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:], [${WORK_DIR}/store_sales.vortex:]]}, projection=[ss_sold_date_sk, ss_item_sk, ss_ext_sales_price], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/plans/q99.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q99.slt.no new file mode 100644 index 00000000000..b0b00892b0f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/plans/q99.slt.no @@ -0,0 +1,88 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN +SELECT w_substr , + sm_type , + LOWER(cc_name) cc_name_lower , + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 30) + AND (cs_ship_date_sk - cs_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 60) + AND (cs_ship_date_sk - cs_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 90) + AND (cs_ship_date_sk - cs_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM catalog_sales , + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, * + FROM warehouse) AS sq1 , + ship_mode , + call_center , + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY w_substr , + sm_type , + cc_name +ORDER BY w_substr NULLS FIRST, + sm_type NULLS FIRST, + cc_name_lower NULLS FIRST +LIMIT 100; +---- +logical_plan +01)Sort: sq1.w_substr ASC NULLS FIRST, ship_mode.sm_type ASC NULLS FIRST, cc_name_lower ASC NULLS FIRST, fetch=100 +02)--Projection: sq1.w_substr, ship_mode.sm_type, lower(call_center.cc_name) AS cc_name_lower, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END) AS 30 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(30) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END) AS 31-60 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(60) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END) AS 61-90 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(90) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END) AS 91-120 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END) AS >120 days +03)----Aggregate: groupBy=[[sq1.w_substr, ship_mode.sm_type, call_center.cc_name]], aggr=[[sum(CASE WHEN __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(30) AND __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(60) AND __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(90) AND __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN __common_expr_1 AS catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)]] +04)------Projection: catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk AS __common_expr_1, sq1.w_substr, ship_mode.sm_type, call_center.cc_name +05)--------Inner Join: catalog_sales.cs_ship_date_sk = date_dim.d_date_sk +06)----------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, sq1.w_substr, ship_mode.sm_type, call_center.cc_name +07)------------Inner Join: catalog_sales.cs_call_center_sk = call_center.cc_call_center_sk +08)--------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_call_center_sk, sq1.w_substr, ship_mode.sm_type +09)----------------Inner Join: catalog_sales.cs_ship_mode_sk = ship_mode.sm_ship_mode_sk +10)------------------Projection: catalog_sales.cs_sold_date_sk, catalog_sales.cs_ship_date_sk, catalog_sales.cs_call_center_sk, catalog_sales.cs_ship_mode_sk, sq1.w_substr +11)--------------------Inner Join: catalog_sales.cs_warehouse_sk = sq1.w_warehouse_sk +12)----------------------TableScan: catalog_sales projection=[cs_sold_date_sk, cs_ship_date_sk, cs_call_center_sk, cs_ship_mode_sk, cs_warehouse_sk] +13)----------------------SubqueryAlias: sq1 +14)------------------------Projection: substr(warehouse.w_warehouse_name, Int64(1), Int64(20)) AS w_substr, warehouse.w_warehouse_sk +15)--------------------------TableScan: warehouse projection=[w_warehouse_sk, w_warehouse_name] +16)------------------TableScan: ship_mode projection=[sm_ship_mode_sk, sm_type] +17)--------------TableScan: call_center projection=[cc_call_center_sk, cc_name] +18)----------Projection: date_dim.d_date_sk +19)------------Filter: date_dim.d_month_seq >= Int64(1200) AND date_dim.d_month_seq <= Int64(1211) +20)--------------TableScan: date_dim projection=[d_date_sk, d_month_seq], partial_filters=[date_dim.d_month_seq >= Int64(1200), date_dim.d_month_seq <= Int64(1211)] +physical_plan +01)SortPreservingMergeExec: [w_substr@0 ASC, sm_type@1 ASC, cc_name_lower@2 ASC], fetch=100 +02)--SortExec: TopK(fetch=100), expr=[w_substr@0 ASC, sm_type@1 ASC, cc_name_lower@2 ASC], preserve_partitioning=[true] +03)----ProjectionExec: expr=[w_substr@0 as w_substr, sm_type@1 as sm_type, lower(cc_name@2) as cc_name_lower, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END)@3 as 30 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(30) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END)@4 as 31-60 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(60) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END)@5 as 61-90 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(90) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END)@6 as 91-120 days, sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)@7 as >120 days] +04)------AggregateExec: mode=FinalPartitioned, gby=[w_substr@0 as w_substr, sm_type@1 as sm_type, cc_name@2 as cc_name], aggr=[sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(30) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(60) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(90) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)] +05)--------RepartitionExec: partitioning=Hash([w_substr@0, sm_type@1, cc_name@2], 4), input_partitions=4 +06)----------AggregateExec: mode=Partial, gby=[w_substr@1 as w_substr, sm_type@2 as sm_type, cc_name@3 as cc_name], aggr=[sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(30) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(30) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(60) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(60) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(90) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(90) AND catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk <= Int64(120) THEN Int64(1) ELSE Int64(0) END), sum(CASE WHEN catalog_sales.cs_ship_date_sk - catalog_sales.cs_sold_date_sk > Int64(120) THEN Int64(1) ELSE Int64(0) END)] +07)------------ProjectionExec: expr=[cs_ship_date_sk@0 - cs_sold_date_sk@1 as __common_expr_1, w_substr@2 as w_substr, sm_type@3 as sm_type, cc_name@4 as cc_name] +08)--------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(d_date_sk@0, cs_ship_date_sk@1)], projection=[cs_ship_date_sk@2, cs_sold_date_sk@1, w_substr@3, sm_type@4, cc_name@5] +09)----------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/date_dim.vortex]]}, projection=[d_date_sk], file_type=vortex, predicate: d_month_seq@3 >= 1200 AND d_month_seq@3 <= 1211 +10)----------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(cc_call_center_sk@0, cs_call_center_sk@2)], projection=[cs_sold_date_sk@2, cs_ship_date_sk@3, w_substr@5, sm_type@6, cc_name@1] +11)------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/call_center.vortex]]}, projection=[cc_call_center_sk, cc_name], file_type=vortex +12)------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(sm_ship_mode_sk@0, cs_ship_mode_sk@3)], projection=[cs_sold_date_sk@2, cs_ship_date_sk@3, cs_call_center_sk@4, w_substr@6, sm_type@1] +13)--------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/ship_mode.vortex]]}, projection=[sm_ship_mode_sk, sm_type], file_type=vortex +14)--------------------HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(w_warehouse_sk@1, cs_warehouse_sk@4)], projection=[cs_sold_date_sk@2, cs_ship_date_sk@3, cs_call_center_sk@4, cs_ship_mode_sk@5, w_substr@0] +15)----------------------DataSourceExec: file_groups={1 group: [[${WORK_DIR}/warehouse.vortex]]}, projection=[substr(w_warehouse_name@2, 1, 20) as w_substr, w_warehouse_sk], file_type=vortex +16)----------------------DataSourceExec: file_groups={4 groups: [[${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:], [${WORK_DIR}/catalog_sales.vortex:]]}, projection=[cs_sold_date_sk, cs_ship_date_sk, cs_call_center_sk, cs_ship_mode_sk, cs_warehouse_sk], file_type=vortex diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q1.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q1.slt.no new file mode 100644 index 00000000000..535aa94bcab --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q1.slt.no @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query T +WITH customer_total_return AS + (SELECT sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + sum(sr_return_amt) AS ctr_total_return + FROM store_returns, + date_dim + WHERE sr_returned_date_sk = d_date_sk + AND d_year = 2000 + GROUP BY sr_customer_sk, + sr_store_sk) +SELECT c_customer_id +FROM customer_total_return ctr1, + store, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100; +---- +AAAAAAAAAAFBAAAA +AAAAAAAAAANAAAAA +AAAAAAAAABDBAAAA +AAAAAAAAABEBAAAA +AAAAAAAAABECAAAA +AAAAAAAAABHBAAAA +AAAAAAAAABKBAAAA +AAAAAAAAABMAAAAA +AAAAAAAAACFCAAAA +AAAAAAAAACJBAAAA +AAAAAAAAADBBAAAA +AAAAAAAAADCCAAAA +AAAAAAAAADJAAAAA +AAAAAAAAADNAAAAA +AAAAAAAAAEEBAAAA +AAAAAAAAAEGCAAAA +AAAAAAAAAEJBAAAA +AAAAAAAAAEKAAAAA +AAAAAAAAAEPAAAAA +AAAAAAAAAFDCAAAA +AAAAAAAAAFKBAAAA +AAAAAAAAAGFBAAAA +AAAAAAAAAGPBAAAA +AAAAAAAAAHFBAAAA +AAAAAAAAAHHAAAAA +AAAAAAAAAHJAAAAA +AAAAAAAAAHMAAAAA +AAAAAAAAAHPBAAAA +AAAAAAAAAIKBAAAA +AAAAAAAAAILBAAAA +AAAAAAAAAJJAAAAA +AAAAAAAAAJMAAAAA +AAAAAAAAAKCAAAAA +AAAAAAAAAKCCAAAA +AAAAAAAAAKFBAAAA +AAAAAAAAAKJAAAAA +AAAAAAAAALAAAAAA +AAAAAAAAALDCAAAA +AAAAAAAAALEBAAAA +AAAAAAAAALOAAAAA +AAAAAAAAAMAAAAAA +AAAAAAAAAMEAAAAA +AAAAAAAAAMGAAAAA +AAAAAAAAAMPAAAAA +AAAAAAAAANDBAAAA +AAAAAAAAANIBAAAA +AAAAAAAAANKBAAAA +AAAAAAAAANPBAAAA +AAAAAAAAAOFAAAAA +AAAAAAAAAOIBAAAA +AAAAAAAAAOLBAAAA +AAAAAAAAAPIAAAAA +AAAAAAAAAPJAAAAA +AAAAAAAAAPKAAAAA +AAAAAAAAAPNBAAAA +AAAAAAAABAFBAAAA +AAAAAAAABAGAAAAA +AAAAAAAABAHCAAAA +AAAAAAAABAMAAAAA +AAAAAAAABBBAAAAA +AAAAAAAABBFCAAAA +AAAAAAAABBGCAAAA +AAAAAAAABBOAAAAA +AAAAAAAABBPAAAAA +AAAAAAAABCCAAAAA +AAAAAAAABCDBAAAA +AAAAAAAABCKBAAAA +AAAAAAAABDACAAAA +AAAAAAAABDCAAAAA +AAAAAAAABDDBAAAA +AAAAAAAABDJAAAAA +AAAAAAAABDMBAAAA +AAAAAAAABEACAAAA +AAAAAAAABEIAAAAA +AAAAAAAABEMAAAAA +AAAAAAAABFFBAAAA +AAAAAAAABFIBAAAA +AAAAAAAABFJBAAAA +AAAAAAAABGABAAAA +AAAAAAAABHACAAAA +AAAAAAAABHBCAAAA +AAAAAAAABHCAAAAA +AAAAAAAABIABAAAA +AAAAAAAABIDBAAAA +AAAAAAAABJDAAAAA +AAAAAAAABJJAAAAA +AAAAAAAABJKBAAAA +AAAAAAAABJMBAAAA +AAAAAAAABJNAAAAA +AAAAAAAABKCBAAAA +AAAAAAAABKCCAAAA +AAAAAAAABKECAAAA +AAAAAAAABLDBAAAA +AAAAAAAABLMBAAAA +AAAAAAAABLPAAAAA +AAAAAAAABMBCAAAA +AAAAAAAABMCAAAAA +AAAAAAAABMCBAAAA +AAAAAAAABMDBAAAA +AAAAAAAABMEBAAAA diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q10.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q10.slt.no new file mode 100644 index 00000000000..2a19baba86a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q10.slt.no @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIITIIIIIII +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3, + cd_dep_count, + count(*) cnt4, + cd_dep_employed_count, + count(*) cnt5, + cd_dep_college_count, + count(*) cnt6 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ('Rush County', + 'Toole County', + 'Jefferson County', + 'Dona Ana County', + 'La Porte County') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100; +---- +M D College 1 9500 1 Good 1 5 1 1 1 0 1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q11.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q11.slt.no new file mode 100644 index 00000000000..77dd66a0170 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q11.slt.no @@ -0,0 +1,89 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTT +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ss_ext_list_price-ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ws_ext_list_price-ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN (t_w_secyear.year_total*1.0000) / t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN (t_s_secyear.year_total*1.0000) / t_s_firstyear.year_total + ELSE 0.0 + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- +AAAAAAAAFNMBAAAA Shawnna Freeland Y +AAAAAAAAKJHBAAAA Roderick Ballard Y +AAAAAAAALFNAAAAA David Gonzalez N +AAAAAAAALKIAAAAA John Robbins Y diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q12.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q12.slt.no new file mode 100644 index 00000000000..ea76649d831 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q12.slt.no @@ -0,0 +1,132 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ws_ext_sales_price) AS itemrevenue, + sum(ws_ext_sales_price)*100.0000/sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM web_sales, + item, + date_dim +WHERE ws_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price +ORDER BY i_category, + i_class, + i_item_id, + i_item_desc, + revenueratio +LIMIT 100; +---- +AAAAAAAACKEAAAAA Physical, local rates cannot explain; quickly lovely horses used to take. Quick, various subjects keep usually; please easy sources ought to thin Books arts 35.27 0 0 +AAAAAAAAIJGAAAAA Industrial figures shall not meet still. Live, civil years ought to spend tiny groups. Brief years know again unfortunately present texts. So as prime terms become. Effective sets get other oth Books arts 4.1 4278.12 72.150489759573 +AAAAAAAAMFFAAAAA So tiny sales obtain as ill tons. Constant others increase women. New Books arts 8.22 1651.32 27.849510240427 +AAAAAAAAADFAAAAA Good groups steal respective chapters. Components could rely needs. Men need only wide, private courts. New, sudden forms see only. Letters will not find at the faces. Just fascinating humans s Books business 78.25 4458.55 45.007490228381 +AAAAAAAAEICAAAAA Contemporary, signific Books business 2.42 5161.11 52.09958571567 +AAAAAAAAKMAAAAAA Conservative women ought to beat positions. Agai Books business 0.19 286.58 2.892924055949 +AAAAAAAAGMCAAAAA Now old phenomena will suppress sufficiently by a arguments. C Books computers 9.23 6536.02 74.190249278929 +AAAAAAAALCDAAAAA Groups see legs. Systems lead hot, golden hands. Then general enquiries comply often social houses. Relentlessly annual ministers should not minimise suf Books computers 4.34 1968.38 22.343047125874 +AAAAAAAAMJEAAAAA Advantages w Books computers 1.04 305.41 3.466703595197 +AAAAAAAAGOCAAAAA Frantically necess Books cooking 4.37 1065.24 6.35584725537 +AAAAAAAAKCCAAAAA Bitter reasons may not bear cuts. Marine, normal shares make also. Trying contracts lift numerous reports. Also general feelings argue rights; still quiet techniques Books cooking 4.44 10498.56 62.640572792363 +AAAAAAAALIGAAAAA Visitors will determine reluctant forms. Laws could not need fresh paths. Social, critical police must not thin Books cooking 0.88 5196.2 31.003579952267 +AAAAAAAACIDAAAAA Magic, dead sports call; recently european wives o Books entertainments 3.51 4638.06 65.023938537892 +AAAAAAAAJKGAAAAA Most final departments will attempt also other customers. Severe units put increased years; flights Books entertainments 4.92 2053.79 28.793399552773 +AAAAAAAAKDEAAAAA Free activities might act on a years. Other, new fingers can claim specifically at the alternatives. Great, straightforward features come now; sure, little stand Books entertainments 6.46 110.88 1.55449785149 +AAAAAAAAOOEAAAAA True, sole women market far except for a depths. Dif Books entertainments 1.45 330.12 4.628164057845 +AAAAAAAABGAAAAAA More reg Books fiction 57.09 1461.78 34.482449518777 +AAAAAAAALIAAAAAA Lines shall describe explicitly northern, firm systems. Later Books fiction 2.99 9.76 0.230232119268 +AAAAAAAAOCGAAAAA National, suitable weeks tax yet personal, subjective groups. White, likely boys drive states; de Books fiction 8.69 2762.56 65.167012643895 +AAAAAAAAPMBAAAAA Unlikely, interested chemicals control likely countries. Assistant, medical museums choose horses. Far fierce waters should touch significantly publishers. At first foreign entries may unde Books fiction 8.79 5.1 0.12030571806 +AAAAAAAAPNGAAAAA Ancient firms shall not show all thence emotional affairs. Ever annual revenues used to sta Books home repair 1.73 8778.5 100 +AAAAAAAACLBAAAAA Foreign, successful books might see bri Books mystery 3 1287.76 100 +AAAAAAAAEBFAAAAA Large wings used to see particul Books parenting 99.89 17.82 0.393768644349 +AAAAAAAAEFEAAAAA Extern Books parenting 2.15 3289.34 72.68456524141 +AAAAAAAAGFCAAAAA Royal versions restore oddly in a travellers; inc measures should play enough complex kinds. Necessary, local stations mean quite serious stones. Econo Books parenting 2.09 1055.34 23.319854159761 +AAAAAAAAIHFAAAAA Permanent cards act again. Christian cases should not include positions. Quite multiple films should locate physical risks; by now negative leaders shall give duties. Victor Books parenting 4.64 163 3.60181195448 +AAAAAAAACLGAAAAA Failures think just eventually top factors. Animals ought to lose nearly terrible, necessary books. Public principles must not go sometimes else commercial wages. Serious oth Books reference 2.23 306.88 2.516298790802 +AAAAAAAAHFBAAAAA Difficult, ready masses ought to take tools. Attempts must receive immediately. Pilots s Books reference 38.26 3118.67 25.571902860765 +AAAAAAAAHMGAAAAA White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Books reference 4.95 6925.5 56.786454886931 +AAAAAAAALIDAAAAA German, ultimate personnel want even. Asian, old hospitals could not open far applicable, logical seeds. Years worry schemes. Perhaps li Books reference 1.55 1844.64 15.125343461502 +AAAAAAAAFCDAAAAA Bombs ensure once members. Even national effects can get quickly new extraordinary clubs. Main, occupational barriers tackle just equal ser Books romance 4.5 48.48 2.732976678374 +AAAAAAAALLDAAAAA Officials must prevent openly local, federal elements. Expenses sleep lines; russian, young conclusions cost actually up the leaders. Regulations Books romance 90.72 1341.12 75.603335043323 +AAAAAAAAMPEAAAAA Skills eat great, soviet provinces. Male, widespread months must help in public responsible cells. Widely main responses might appear Books romance 2.81 384.29 21.663688278304 +AAAAAAAACPCAAAAA Elections grow arab, domestic initiatives. Wide courses shall order involved, new services. Compulsory, concerne Books science 0.31 975.52 41.151110698648 +AAAAAAAADAHAAAAA Similar fields run old cities. Golden, warm opportunities compare by a wives. Initial, regular libraries touch sometimes. Still unemployed stations contribute below Books science 2.33 154.08 6.499675184976 +AAAAAAAADPEAAAAA Double effects put. Long, personal keys vote national metres; other, logical residents decide especially. Materials provide different, different families. Clearly open systems take pa Books science 0.45 1240.98 52.349214116377 +AAAAAAAABJAAAAAA Prospects know Books self-help 59.77 1950.21 9.631760644419 +AAAAAAAAFGCAAAAA Pp. would agree thus processes. Married plans should want most in the houses. Ministers could write very foreign, level features. Ot Books self-help 1.89 13333.95 65.854146396875 +AAAAAAAAJHAAAAAA However increasing dates meet. Large, ready goals mean now blind structures. Crea Books self-help 38.79 239.44 1.182554067869 +AAAAAAAAMPBAAAAA Beautiful, short women could occur consciously women. Books self-help 2.94 4724.1 23.331538890837 +AAAAAAAAAGCAAAAA Facilities form busy years. Women meet rather on the benefits. Only remarkable factors cannot start supreme, crucial skills; stairs take Books sports 7.52 19264.21 100 +AAAAAAAAAHDAAAAA National reasons Books travel 4.02 647.29 3.488003034874 +AAAAAAAADJEAAAAA Good, domestic authorities can drink only blue, old findings. Historical, Books travel 84.79 2321.23 12.508237860371 +AAAAAAAAKPAAAAAA Flowers suffer following, subst Books travel 4.16 3077.62 16.584139875771 +AAAAAAAAMEAAAAAA Original interests see of course british, important terms. Yet appropriate principles conclude in a arrangements; good countries would get sometimes; Books travel 3.84 5784.29 31.169369331503 +AAAAAAAAMGBAAAAA White trees grow simply. Then possible banks used to get happily unhappy accused minds. Very fires should touch then particular towns. National systems watch actively victorian papers. Con Books travel 8.58 37.1 0.199917985128 +AAAAAAAAPCCAAAAA For instance total methods clear. Level, english sorts prove most. Territorial Books travel 3.3 6690.08 36.050331912353 +AAAAAAAAOJGAAAAA NULL Books NULL NULL 2157.45 100 +AAAAAAAAABDAAAAA Great, wonderful lakes must not arrange already to the rules. Easy, cultural elections need rather sensible orders. Hardly favorable prospects take at Home accent 1.06 3526.38 32.042706889893 +AAAAAAAAEAGAAAAA Over other countries cannot remai Home accent 9.45 1911.74 17.37116376275 +AAAAAAAAOLDAAAAA So old proposals could not reconsider varieties. Sentences Home accent 0.48 5567.13 50.586129347357 +AAAAAAAAADEAAAAA International colleges shall mind large, outer hundreds. Technical, major times shall turn afterwards even medical questions. Alone members oug Home bathroom 2.57 908.04 7.534907572829 +AAAAAAAAHBFAAAAA There young things should not compete small, relative problems. Sources find right dealers. Late authorities must find groups. Feet fall continually major courses. Now Home bathroom 7.89 11143.07 92.465092427171 +AAAAAAAAAOGAAAAA As prime legs proceed probably orange, historic experiments. Here different skills may not appease usually continental terms. Cheerful daughters take on a shops. Far Home bedding 3.51 5946.04 75.219388406981 +AAAAAAAAEKDAAAAA So general children can afford now particular characteristics. Publishers see under a exchanges; similarly wonderful Home bedding 1.78 1958.89 24.780611593019 +AAAAAAAADOFAAAAA New needs write as. Back drivers like but for a years. Times perform soon economic odds. Very cold windows used to know occasionally. Cases must take Home blinds/shades 2.08 1816.2 40.445474770014 +AAAAAAAAIJFAAAAA Ty Home blinds/shades 1.08 2674.29 59.554525229986 +AAAAAAAAAIAAAAAA Great, tiny animals adopt then outcomes. Terms sweep less dry, physical signs. National, black terms adapt for a reasons; groups shall Home curtains/drapes 4.06 676.14 9.171469613589 +AAAAAAAAGKDAAAAA Once again real differences can make black offenders. Consequen Home curtains/drapes 0.46 4236.1 57.460381622336 +AAAAAAAAOPFAAAAA Limited ey Home curtains/drapes 4.92 2459.97 33.368148764075 +AAAAAAAAJNGAAAAA Financial, clear nations ought to come. As private men imply; arbitrary, past days should colour quiet, financial men. Lips come by a questions. Deep years must not connec Home decor 4.49 829.27 7.026372090068 +AAAAAAAALLGAAAAA Aspects acc Home decor 3.23 10972.98 92.973627909932 +AAAAAAAABNCAAAAA Words shall not avoid then thick inches. Nevertheless gold facilities shall panic however. Good govern Home flatware 9.67 42.99 0.165118607703 +AAAAAAAAEBGAAAAA Relations shall know head, decent weaknesses. Systematic implications might not keep in a managers. Much great others Home flatware 6.97 7920.96 30.423305114529 +AAAAAAAANMDAAAAA Players shall not ensue still rational, public losses. Uncertain times walk anywhere. Costs get. Nearly white sales remove available ends. Rivers will think then customers. Families trust together sig Home flatware 2.03 13999.2 53.768979133755 +AAAAAAAAODFAAAAA Domestic years refuse strictly more selective years. Studies become schools. Almost clear countries end unknown, special images; further little men may no Home flatware 9.22 4072.68 15.642597144013 +AAAAAAAAABEAAAAA Less short parts can mention careful groups. Even successful tons say in a rights. Then chinese traditions repair. Attit Home furniture 8.76 2899.44 17.978302818054 +AAAAAAAAABGAAAAA Extra millions should condemn. Uncomfortable nurses should not joi Home furniture 4.64 7086.6 43.941257880978 +AAAAAAAAAFDAAAAA Most increased shares may not examine sometimes evident, environmental roots. Minerals may live ge Home furniture 0.85 6141.4 38.080439300968 +AAAAAAAAJFFAAAAA Close, small reports will expand seriously men. Serious, a Home glassware 0.82 4606.5 55.923808136359 +AAAAAAAAOOAAAAAA Previously recent expectations win over true minutes. Extra perc Home glassware 2.39 3630.6 44.076191863641 +AAAAAAAAEHFAAAAA Kids used to know even. Homes require i Home kids 3.14 1571.32 100 +AAAAAAAAHOEAAAAA Separate studies may not trust only. Backs push recent centres. Messages open. Magic sides ought to get fresh items; concerned partners pass as through Home lighting 1.46 1521.23 14.822512391637 +AAAAAAAAICAAAAAA Usually other children must stop shares. Relations Home lighting 9.93 87.83 0.855795154814 +AAAAAAAALBBAAAAA Democrats pay papers. Moving, conventional seats could not mind instead. Alone activit Home lighting 9.13 2869.49 27.959645209915 +AAAAAAAAOJAAAAAA Great, absent relations should participate alone wonderful issues; chains will care on behalf of a police. Substantial activities exert grey, free Home lighting 9.17 5784.42 56.362047243634 +AAAAAAAAALGAAAAA Big, western sentences could use; prices bring average board Home mattresses 4.48 1144.93 43.218442002589 +AAAAAAAALGCAAAAA Different, new tests could not warn able, great bodies. Good, moving years might convey; permanently confident e Home mattresses 9.27 1504.24 56.781557997411 +AAAAAAAABDGAAAAA New sites shou Home paint 4.83 18884.52 79.863857947406 +AAAAAAAAGCDAAAAA Particular groups prove patient benefits. Fresh moments take together. Easier strong Home paint 2.01 411.57 1.740556181222 +AAAAAAAAILEAAAAA Sweet days allow theoretical, conventional events. Simple, useful offences w Home paint 0.76 3692.08 15.614045400702 +AAAAAAAAMGFAAAAA Resources could not provide ai Home paint 7.56 657.72 2.78154047067 +AAAAAAAAKECAAAAA Possible countries see ever. Never particular users ought to encourage in a casualties. Still upper proposals will see though succe Home rugs 87.61 0 0 +AAAAAAAANGAAAAAA Solutions may not go central, interesting sectors. Enterprises resist inte Home rugs 9.46 29.7 0.867041898267 +AAAAAAAAPCFAAAAA Standard women sit however sale Home rugs 7.34 3395.74 99.132958101733 +AAAAAAAAOEBAAAAA Over different children would provide successfully important international forms; well particular birds list in order. Horses used to pay never cert Home tables 1.94 4974 100 +AAAAAAAAAICAAAAA Only, other occasions can work also birds. General women get si Home wallpaper 4.82 1431.8 6.671901174968 +AAAAAAAAGCFAAAAA Medical, proposed friends suggest then even arbitrary years. Governments continue upon the yea Home wallpaper 8.17 3264.04 15.209772531879 +AAAAAAAAJKDAAAAA Hardly well-known agencies might eat now similar british circumstances; institutions tell eventually. Informal problems will per Home wallpaper 57.16 143.85 0.670312183279 +AAAAAAAAKABAAAAA Certainly difficult fields like for a fields. Old, ideal committees should experiment out of a messages. Hearts see geo Home wallpaper 8.59 7843.78 36.550443496434 +AAAAAAAAKEFAAAAA Important, awful changes shall determine then awful, possible respondents. Children clear especially. Really saf Home wallpaper 0.75 3796.8 17.692327406845 +AAAAAAAAKPBAAAAA For example flat users lower very new developments; animals enter systems. Male courses want Home wallpaper 6.27 2997 13.96541962661 +AAAAAAAAMNDAAAAA Compatible kids go at the acts. Massive operations may not mark brilliantly. Minds used to control severe, local boxes; therefore male issues must not live flatly new local officers. Substantial Home wallpaper 4.16 1982.88 9.239823579984 +AAAAAAAADCFAAAAA Police might not generate completely now personal newspapers. Levels settle widely furthermore basic f Sports archery 6.79 7340 34.901989128078 +AAAAAAAAEFCAAAAA Statistical, Sports archery 0.35 669.64 3.184164577619 +AAAAAAAAEKFAAAAA Sure schools might fit as essential organisations; feelings average lazily modest aspects. British difficulties should enable Sports archery 0.14 1629.12 7.746529772253 +AAAAAAAAMNGAAAAA Conscious, c Sports archery 4.8 11391.56 54.16731652205 +AAAAAAAACPAAAAAA At all lengthy sales must not restore poor, clean calculations; also alone inves Sports athletic shoes 1.76 3897.85 66.953005701015 +AAAAAAAAGAEAAAAA Equations may not lea Sports athletic shoes 6.16 494.12 8.487453128516 +AAAAAAAAPDBAAAAA Poor, serious years help bare, great days. Wide institutions detach carefully needs. Supreme models find almost new changes. Businesses assume just even experimental words. Mos Sports athletic shoes 0.45 1429.8 24.559541170469 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q13.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q13.slt.no new file mode 100644 index 00000000000..8979a67975d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q13.slt.no @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RRRR +SELECT avg(ss_quantity) avg1, + avg(ss_ext_sales_price) avg2, + avg(ss_ext_wholesale_cost) avg3, + sum(ss_ext_wholesale_cost) +FROM store_sales , + store , + customer_demographics , + household_demographics , + customer_address , + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 and((ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 ) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1)) and((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('TX', 'OH', 'TX') + AND ss_net_profit BETWEEN 100 AND 200) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'NM', 'KY') + AND ss_net_profit BETWEEN 150 AND 300) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'TX', 'MS') + AND ss_net_profit BETWEEN 50 AND 250)) ; +---- +4 536.56 298.88 298.88 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q14.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q14.slt.no new file mode 100644 index 00000000000..593421d84ba --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q14.slt.no @@ -0,0 +1,239 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIIIRI +WITH cross_items AS + (SELECT i_item_sk ss_item_sk + FROM item, + (SELECT iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, + item iss, + date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, + item ics, + date_dim d2 WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, + item iws, + date_dim d3 WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) sq1 + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id ), + avg_sales AS + (SELECT avg(quantity*list_price) average_sales + FROM + (SELECT ss_quantity quantity, + ss_list_price list_price + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT ws_quantity quantity, + ws_list_price list_price + FROM web_sales, + date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) sq2) +SELECT channel, + i_brand_id, + i_class_id, + i_category_id, + sum(sales) AS sum_sales, + sum(number_sales) AS sum_number_sales +FROM + (SELECT 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity*ss_list_price) sales, + count(*) number_sales + FROM store_sales, + item, + date_dim + WHERE ss_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ss_quantity*ss_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(cs_quantity*cs_list_price) sales, + count(*) number_sales + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(cs_quantity*cs_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ws_quantity*ws_list_price) sales, + count(*) number_sales + FROM web_sales, + item, + date_dim + WHERE ws_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ws_quantity*ws_list_price) > + (SELECT average_sales + FROM avg_sales)) y +GROUP BY ROLLUP (channel, + i_brand_id, + i_class_id, + i_category_id) +ORDER BY channel NULLS FIRST, + i_brand_id NULLS FIRST, + i_class_id NULLS FIRST, + i_category_id NULLS FIRST +LIMIT 100; +---- +NULL NULL NULL NULL 67233944.61 15544 +catalog NULL NULL NULL 22754494.09 4442 +catalog 1001001 NULL NULL 160332.73 23 +catalog 1001001 1 NULL 54197.89 8 +catalog 1001001 1 5 54197.89 8 +catalog 1001001 3 NULL 74447.97 12 +catalog 1001001 3 2 52741.46 7 +catalog 1001001 3 5 21706.51 5 +catalog 1001001 7 NULL 31686.87 3 +catalog 1001001 7 7 31686.87 3 +catalog 1001002 NULL NULL 537384.24 104 +catalog 1001002 1 NULL 426344.77 83 +catalog 1001002 1 1 426344.77 83 +catalog 1001002 3 NULL 13382.56 4 +catalog 1001002 3 1 13382.56 4 +catalog 1001002 5 NULL 8913.7 2 +catalog 1001002 5 1 8913.7 2 +catalog 1001002 8 NULL 46506.85 8 +catalog 1001002 8 1 46506.85 8 +catalog 1001002 9 NULL 42236.36 7 +catalog 1001002 9 1 42236.36 7 +catalog 1002001 NULL NULL 302169.32 55 +catalog 1002001 1 NULL 94206.3 18 +catalog 1002001 1 2 49591.03 10 +catalog 1002001 1 9 44615.27 8 +catalog 1002001 2 NULL 113767.8 22 +catalog 1002001 2 5 29844.64 7 +catalog 1002001 2 6 44381.06 9 +catalog 1002001 2 7 39542.1 6 +catalog 1002001 4 NULL 94195.22 15 +catalog 1002001 4 5 36295.8 6 +catalog 1002001 4 9 57899.42 9 +catalog 1002002 NULL NULL 414619.86 96 +catalog 1002002 1 NULL 22777.7 4 +catalog 1002002 1 1 22777.7 4 +catalog 1002002 2 NULL 336274.18 76 +catalog 1002002 2 1 336274.18 76 +catalog 1002002 3 NULL 27482.94 5 +catalog 1002002 3 1 27482.94 5 +catalog 1002002 5 NULL 10904.22 4 +catalog 1002002 5 1 10904.22 4 +catalog 1002002 9 NULL 17180.82 7 +catalog 1002002 9 1 17180.82 7 +catalog 1003001 NULL NULL 154892.53 28 +catalog 1003001 3 NULL 54541.82 12 +catalog 1003001 3 1 36077.44 7 +catalog 1003001 3 4 18464.38 5 +catalog 1003001 4 NULL 9922.68 2 +catalog 1003001 4 9 9922.68 2 +catalog 1003001 7 NULL 20286.34 4 +catalog 1003001 7 6 20286.34 4 +catalog 1003001 11 NULL 70141.69 10 +catalog 1003001 11 8 33058.59 5 +catalog 1003001 11 9 37083.1 5 +catalog 1003002 NULL NULL 474728.93 85 +catalog 1003002 3 NULL 366122.12 65 +catalog 1003002 3 1 366122.12 65 +catalog 1003002 6 NULL 64280.42 7 +catalog 1003002 6 1 64280.42 7 +catalog 1003002 9 NULL 44326.39 13 +catalog 1003002 9 1 44326.39 13 +catalog 1004001 NULL NULL 237955.87 56 +catalog 1004001 2 NULL 39889.24 7 +catalog 1004001 2 2 39889.24 7 +catalog 1004001 3 NULL 58498.59 13 +catalog 1004001 3 2 16031.89 3 +catalog 1004001 3 3 19853.35 6 +catalog 1004001 3 5 22613.35 4 +catalog 1004001 4 NULL 118255.22 30 +catalog 1004001 4 2 19709.93 5 +catalog 1004001 4 4 23560.47 4 +catalog 1004001 4 7 40304.66 7 +catalog 1004001 4 8 11754.54 6 +catalog 1004001 4 9 22925.62 8 +catalog 1004001 13 NULL 21312.82 6 +catalog 1004001 13 9 21312.82 6 +catalog 1004002 NULL NULL 274240.25 62 +catalog 1004002 3 NULL 7323.4 4 +catalog 1004002 3 1 7323.4 4 +catalog 1004002 4 NULL 266916.85 58 +catalog 1004002 4 1 266916.85 58 +catalog 2001001 NULL NULL 165508.03 31 +catalog 2001001 1 NULL 110949.03 23 +catalog 2001001 1 3 13033.35 3 +catalog 2001001 1 4 15746.13 6 +catalog 2001001 1 8 16102.04 4 +catalog 2001001 1 9 66067.51 10 +catalog 2001001 4 NULL 34298.44 5 +catalog 2001001 4 3 34298.44 5 +catalog 2001001 7 NULL 20260.56 3 +catalog 2001001 7 9 20260.56 3 +catalog 2001002 NULL NULL 236409.59 48 +catalog 2001002 1 NULL 211602.01 44 +catalog 2001002 1 2 211602.01 44 +catalog 2001002 2 NULL 24807.58 4 +catalog 2001002 2 2 24807.58 4 +catalog 2002001 NULL NULL 154934.27 31 +catalog 2002001 2 NULL 105218.28 22 +catalog 2002001 2 2 30565.3 8 +catalog 2002001 2 6 25976.19 6 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q15.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q15.slt.no new file mode 100644 index 00000000000..db8e75124c4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q15.slt.no @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +SELECT ca_zip, + sum(cs_sales_price) +FROM catalog_sales, + customer, + customer_address, + date_dim +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND (SUBSTRING(ca_zip, 1, 5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR ca_state IN ('CA', + 'WA', + 'GA') + OR cs_sales_price > 500) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip +ORDER BY ca_zip NULLS FIRST +LIMIT 100; +---- +NULL 901.05 +30169 1039.8 +30191 182.28 +30411 791.61 +30534 591.82 +31289 1197.76 +33003 97.91 +33394 690.36 +33683 682.74 +34289 703.01 +36060 946.18 +36867 624.75 +36871 377.01 +36909 441.38 +37057 524.59 +38222 1064.62 +38252 392.2 +38371 308.93 +39237 947.12 +39454 380.51 +39843 632.17 +90162 598.27 +90411 394.23 +91904 164.72 +92808 728.28 +94212 409.46 +94854 70.36 +95752 571.44 +98014 389.35 +98877 408.22 +98883 589.24 +99391 290.39 +99843 555.1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q16.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q16.slt.no new file mode 100644 index 00000000000..e51f0049826 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q16.slt.no @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT count(DISTINCT cs_order_number) AS "order count", + sum(cs_ext_ship_cost) AS "total shipping cost", + sum(cs_net_profit) AS "total net profit" +FROM catalog_sales cs1, + date_dim, + customer_address, + call_center +WHERE d_date BETWEEN '2002-02-01' AND cast('2002-04-02' AS date) + AND cs1.cs_ship_date_sk = d_date_sk + AND cs1.cs_ship_addr_sk = ca_address_sk + AND ca_state = 'GA' + AND cs1.cs_call_center_sk = cc_call_center_sk + AND cc_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 cs_order_number) +LIMIT 100; +---- +0 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q17.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q17.slt.no new file mode 100644 index 00000000000..717ae6fcf23 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q17.slt.no @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIRRRIRRRIRRR +SELECT i_item_id, + i_item_desc, + s_state, + count(ss_quantity) AS store_sales_quantitycount, + avg(ss_quantity) AS store_sales_quantityave, + stddev_samp(ss_quantity) AS store_sales_quantitystdev, + stddev_samp(ss_quantity)/avg(ss_quantity) AS store_sales_quantitycov, + count(sr_return_quantity) AS store_returns_quantitycount, + avg(sr_return_quantity) AS store_returns_quantityave, + stddev_samp(sr_return_quantity) AS store_returns_quantitystdev, + stddev_samp(sr_return_quantity)/avg(sr_return_quantity) AS store_returns_quantitycov, + count(cs_quantity) AS catalog_sales_quantitycount, + avg(cs_quantity) AS catalog_sales_quantityave, + stddev_samp(cs_quantity) AS catalog_sales_quantitystdev, + stddev_samp(cs_quantity)/avg(cs_quantity) AS catalog_sales_quantitycov +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_quarter_name = '2001Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') +GROUP BY i_item_id, + i_item_desc, + s_state +ORDER BY i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +AAAAAAAAMPCAAAAA Defences pay mothers. Democratic, traditional tears make on a institutions; yet open ye TN 1 67 NULL NULL 1 64 NULL NULL 1 11 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q18.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q18.slt.no new file mode 100644 index 00000000000..d5001e25876 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q18.slt.no @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRRRRRR +SELECT i_item_id, + ca_country, + ca_state, + ca_county, + avg(cast(cs_quantity AS decimal(12, 2))) agg1, + avg(cast(cs_list_price AS decimal(12, 2))) agg2, + avg(cast(cs_coupon_amt AS decimal(12, 2))) agg3, + avg(cast(cs_sales_price AS decimal(12, 2))) agg4, + avg(cast(cs_net_profit AS decimal(12, 2))) agg5, + avg(cast(c_birth_year AS decimal(12, 2))) agg6, + avg(cast(cd1.cd_dep_count AS decimal(12, 2))) agg7 +FROM catalog_sales, + customer_demographics cd1, + customer_demographics cd2, + customer, + customer_address, + date_dim, + item +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Unknown' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN (1, + 6, + 8, + 9, + 12, + 2) + AND d_year = 1998 + AND ca_state IN ('MS', + 'IN', + 'ND', + 'OK', + 'NM', + 'VA', + 'MS') +GROUP BY ROLLUP (i_item_id, + ca_country, + ca_state, + ca_county) +ORDER BY ca_country NULLS FIRST, + ca_state NULLS FIRST, + ca_county NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +NULL NULL NULL NULL 49.23 94.8513 154.62715 48.39135 17.47275 1955.725 3.05 +AAAAAAAAAAFAAAAA NULL NULL NULL 75 77.19 0 69.47 2566.5 1933 2 +AAAAAAAAAAHAAAAA NULL NULL NULL 20 184.86 0 147.88 1321.6 1969 5 +AAAAAAAAABDAAAAA NULL NULL NULL 92 14.53 0 1.45 -425.96 1928 1 +AAAAAAAAAEAAAAAA NULL NULL NULL 66 7.55 0 6.34 100.98 1967 0 +AAAAAAAAAFAAAAAA NULL NULL NULL 35 145.28 0 97.33 517.3 1985 2 +AAAAAAAAAFDAAAAA NULL NULL NULL 13 116.76 33.52 19.84 -530.77 1950 0 +AAAAAAAAAGEAAAAA NULL NULL NULL 91 206.985 836.955 78.89 -1022.415 1945.5 4 +AAAAAAAAAHGAAAAA NULL NULL NULL 23 34.085 0 13.78 -159.78 1969.5 5 +AAAAAAAAAIAAAAAA NULL NULL NULL 100 113.57 0 64.73 -761 1964 1 +AAAAAAAAAIDAAAAA NULL NULL NULL 52 58.68 0 36.96 -539.24 1964 1 +AAAAAAAAAIFAAAAA NULL NULL NULL 7 54.62 77.06 39.32 -34.99 1974 1 +AAAAAAAAALCAAAAA NULL NULL NULL 61 139.03 3985.74 65.34 -3963.17 1969 5 +AAAAAAAAALFAAAAA NULL NULL NULL 19 35.47 0 35.47 125.97 1965 0 +AAAAAAAAAMCAAAAA NULL NULL NULL 78 65.03 0 50.72 1618.5 1969 5 +AAAAAAAAANAAAAAA NULL NULL NULL 22 270.85 0 108.34 383.9 1965 0 +AAAAAAAAANGAAAAA NULL NULL NULL 27 158.57 0 114.17 607.77 1979 6 +AAAAAAAAAODAAAAA NULL NULL NULL 46 31.9 0 6.38 -483 1967 0 +AAAAAAAAAPBAAAAA NULL NULL NULL 16 83.26 0 4.16 -530.88 1965 0 +AAAAAAAAAPEAAAAA NULL NULL NULL 6 53.31 0 16.52 -102.06 1927 0 +AAAAAAAABCBAAAAA NULL NULL NULL 8 200.34 0 34.05 -436.8 1935 6 +AAAAAAAABGAAAAAA NULL NULL NULL 81 153.27 0 125.68 4296.24 1965 5 +AAAAAAAABLBAAAAA NULL NULL NULL 52 106.855 716.58 80.055 -780.37 1969.5 5 +AAAAAAAABOBAAAAA NULL NULL NULL 11 92.59 0 30.55 -114.62 1935 6 +AAAAAAAABPAAAAAA NULL NULL NULL 31 43.14 0 20.7 10.85 1969 5 +AAAAAAAACAAAAAAA NULL NULL NULL 60 143.32 0 131.85 3186 1969 5 +AAAAAAAACADAAAAA NULL NULL NULL 36 90.095 0 35.43 -298.58 1945.5 4 +AAAAAAAACCGAAAAA NULL NULL NULL 7 54.16 0 18.95 -97.16 1965 0 +AAAAAAAACDDAAAAA NULL NULL NULL 18 42.44 0 15.27 -266.94 1928 1 +AAAAAAAACDGAAAAA NULL NULL NULL 81 110.22 0 84.86 2681.91 1979 6 +AAAAAAAACEFAAAAA NULL NULL NULL 30 91.01 1908.81 69.16 -876.21 1961 2 +AAAAAAAACFGAAAAA NULL NULL NULL 47 36.79 146.09 23.91 -352.42 1948 4 +AAAAAAAACHEAAAAA NULL NULL NULL 86 184.04 0 171.15 7621.32 1937 4 +AAAAAAAACIGAAAAA NULL NULL NULL 24 54.76 0 28.47 -449.76 1979 6 +AAAAAAAACJGAAAAA NULL NULL NULL 24.5 151.345 90.16 142.145 2890.74 1969.5 5 +AAAAAAAACLDAAAAA NULL NULL NULL 73 89.95 0 39.57 -3612.77 1979 6 +AAAAAAAACLEAAAAA NULL NULL NULL 58 116.25 0 47.66 -193.14 1927 0 +AAAAAAAACLGAAAAA NULL NULL NULL 8 130.54 0 91.37 127.28 1958 6 +AAAAAAAACNBAAAAA NULL NULL NULL 82 10.83 392.02 4.98 -340.36 1974 1 +AAAAAAAACOEAAAAA NULL NULL NULL 79 82.63 0 66.93 -19.75 1969 5 +AAAAAAAADAHAAAAA NULL NULL NULL 81 27.505 0 18.015 -198.76 1969.5 5 +AAAAAAAADBAAAAAA NULL NULL NULL 56 121.35 0 10.92 -3918.88 1969 5 +AAAAAAAADGEAAAAA NULL NULL NULL 46 64.84 0 9.07 -1030.86 1985 2 +AAAAAAAADHAAAAAA NULL NULL NULL 3 143.86 0 119.4 64.59 1969 5 +AAAAAAAADHGAAAAA NULL NULL NULL 6 50.52 0 32.83 -30.96 1950 0 +AAAAAAAADKDAAAAA NULL NULL NULL 69 32.1 0 25.68 -378.81 1958 6 +AAAAAAAADKGAAAAA NULL NULL NULL 98 45.2 0 21.24 -238.14 1937 3 +AAAAAAAADLFAAAAA NULL NULL NULL 25 216.71 0 67.18 -514 1979 6 +AAAAAAAADNGAAAAA NULL NULL NULL 48 46.67 0 15.4 -687.84 1985 2 +AAAAAAAADOCAAAAA NULL NULL NULL 58 51.42 0 17.99 -721.52 1958 6 +AAAAAAAAEABAAAAA NULL NULL NULL 16 27.5 0 24.2 151.84 1958 6 +AAAAAAAAEBGAAAAA NULL NULL NULL 8 71.78 0 29.42 -22.16 1928 1 +AAAAAAAAECFAAAAA NULL NULL NULL 58 116.99 0 37.43 -332.92 1974 1 +AAAAAAAAEKAAAAAA NULL NULL NULL 60 40.56 127.156666 15.6 -738.066666 1946.333333 4 +AAAAAAAAEKDAAAAA NULL NULL NULL 94 138.07 1855.51 35.89 -6253.77 1961 1 +AAAAAAAAEMDAAAAA NULL NULL NULL 53 54.86 0 32.91 599.43 1961 2 +AAAAAAAAEMEAAAAA NULL NULL NULL 23 46.85 0 10.77 -819.26 1933 2 +AAAAAAAAEOFAAAAA NULL NULL NULL 57 89.74 0 36.79 -3018.15 1964 1 +AAAAAAAAFBEAAAAA NULL NULL NULL 26 25.71 256.22 13.88 -520.12 1961 1 +AAAAAAAAFGFAAAAA NULL NULL NULL 93 79.15 0 70.44 1403.37 1969 5 +AAAAAAAAFHEAAAAA NULL NULL NULL 24 108.28 0 9.74 -1040.16 1991 6 +AAAAAAAAFIGAAAAA NULL NULL NULL 6 36.67 46.53 8.43 -97.83 1944 5 +AAAAAAAAFOAAAAAA NULL NULL NULL 13 150.89 0 72.42 -91 1961 2 +AAAAAAAAGABAAAAA NULL NULL NULL 97 276.87 0 163.35 6218.67 1965 0 +AAAAAAAAGBGAAAAA NULL NULL NULL 79 116.35 0 2.32 -3830.71 1967 0 +AAAAAAAAGCCAAAAA NULL NULL NULL 35 33.19 0 11.94 -18.9 1927 0 +AAAAAAAAGCDAAAAA NULL NULL NULL 79 169.31 0 113.43 4217.81 1979 6 +AAAAAAAAGCFAAAAA NULL NULL NULL 36 46.28 0 24.52 -704.16 1965 5 +AAAAAAAAGCGAAAAA NULL NULL NULL 12 72.74 5.74 1.45 -844.18 1937 3 +AAAAAAAAGDEAAAAA NULL NULL NULL 90 52.94 0 50.29 1022.4 1937 4 +AAAAAAAAGEAAAAAA NULL NULL NULL 56 32.93 0 2.96 -522.48 1937 4 +AAAAAAAAGFDAAAAA NULL NULL NULL 94 39.71 0 39.31 1958.96 1979 6 +AAAAAAAAGFGAAAAA NULL NULL NULL 65 51.86 2902.82 45.11 -3063.37 1979 6 +AAAAAAAAGHBAAAAA NULL NULL NULL 91 86.58 0 84.84 3781.05 1985 2 +AAAAAAAAGHGAAAAA NULL NULL NULL 11 126.26 411.58 47.97 -603.53 1937 4 +AAAAAAAAGIAAAAAA NULL NULL NULL 49 26.22 40.06 10.22 30.99 1961 1 +AAAAAAAAGKGAAAAA NULL NULL NULL 75 85.65 57.6 2.56 -3356.85 1969 5 +AAAAAAAAGLAAAAAA NULL NULL NULL 53 91.36 0 46.59 -1255.57 1950 0 +AAAAAAAAGLGAAAAA NULL NULL NULL 2 49.81 0 38.35 -16.42 1950 0 +AAAAAAAAGOCAAAAA NULL NULL NULL 71 67.77 0 23.04 -711.42 1944 5 +AAAAAAAAGOGAAAAA NULL NULL NULL 9 156.99 0 1.56 -737.55 1948 4 +AAAAAAAAGPCAAAAA NULL NULL NULL 81 76.71 813.3 13.04 -5731.62 1964 1 +AAAAAAAAHAGAAAAA NULL NULL NULL 95 116.24 0 83.69 1297.7 1961 1 +AAAAAAAAHBFAAAAA NULL NULL NULL 52 17.84 0 8.56 -227.24 1944 5 +AAAAAAAAHCEAAAAA NULL NULL NULL 82 128.99 0 69.65 -68.88 1937 4 +AAAAAAAAHDDAAAAA NULL NULL NULL 100 209.68 0 159.35 8803 1928 1 +AAAAAAAAHGDAAAAA NULL NULL NULL 31 96.35 1463.4 48.17 -2788.03 1948 4 +AAAAAAAAHHFAAAAA NULL NULL NULL 44 136.94 0 93.11 1944.8 1937 4 +AAAAAAAAHJGAAAAA NULL NULL NULL 32 202.53 0 135.69 1396.16 1967 0 +AAAAAAAAHMAAAAAA NULL NULL NULL 18 157.62 0 0 -1576.26 1961 1 +AAAAAAAAHOBAAAAA NULL NULL NULL 3 122.51 93.16 79.63 -3.07 1964 1 +AAAAAAAAHPGAAAAA NULL NULL NULL 19 106.79 0 95.04 256.88 1944 5 +AAAAAAAAIAGAAAAA NULL NULL NULL 3 3.12 0 0.46 -6.36 1927 0 +AAAAAAAAIGGAAAAA NULL NULL NULL 58 161.645 0 74.945 1760.16 1954 3 +AAAAAAAAIIDAAAAA NULL NULL NULL 51 152.41 0 39.62 -826.71 1965 0 +AAAAAAAAIKFAAAAA NULL NULL NULL 85.666666 38.373333 122.976666 14.08 -493.193333 1946.333333 4 +AAAAAAAAIMAAAAAA NULL NULL NULL 100 3.08 0 0.49 -151 1937 4 +AAAAAAAAINCAAAAA NULL NULL NULL 16 40.09 0 39.68 246.08 1933 2 +AAAAAAAAINFAAAAA NULL NULL NULL 11 45.49 0 2.27 -395.56 1948 4 +AAAAAAAAIPGAAAAA NULL NULL NULL 59 99.44 0 77.56 -709.77 1950 0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q19.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q19.slt.no new file mode 100644 index 00000000000..a5384bec4fd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q19.slt.no @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITITR +SELECT i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item, + customer, + customer_address, + store +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=8 + AND d_moy=11 + AND d_year=1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND SUBSTRING(ca_zip, 1, 5) <> SUBSTRING(s_zip, 1, 5) + AND ss_store_sk = s_store_sk +GROUP BY i_brand, + i_brand_id, + i_manufact_id, + i_manufact +ORDER BY ext_price DESC, + i_brand, + i_brand_id, + i_manufact_id, + i_manufact +LIMIT 100 ; +---- +1002002 importoamalg #2 489 n steingese 25908.9 +3001002 amalgexporti #2 448 eingeseese 19805.73 +4003001 exportiedu pack #1 659 n stantically 17669.8 +10009003 maxiunivamalg #3 389 n steingpri 15308.21 +1002002 importoamalg #2 50 baranti 15077.51 +3004001 edu packexporti #1 119 n stoughtought 14958.01 +8016009 corpmaxi #9 734 esepriation 14304.64 +6011004 amalgbrand #4 9 n st 13791.82 +3002002 importoexporti #2 597 ationn stanti 12402.87 +9002011 importomaxi #11 606 callybarcally 6591.58 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q2.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q2.slt.no new file mode 100644 index 00000000000..e31b71cf6be --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q2.slt.no @@ -0,0 +1,2597 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRRRRRRR +WITH wscs AS + (SELECT sold_date_sk, + sales_price + FROM + (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales + UNION ALL SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales) sq1), + wswscs AS + (SELECT d_week_seq, + sum(CASE + WHEN (d_day_name='Sunday') THEN sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN sales_price + ELSE NULL + END) sat_sales + FROM wscs, + date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + round(sun_sales1/sun_sales2, 2) r1, + round(mon_sales1/mon_sales2, 2) r2, + round(tue_sales1/tue_sales2, 2) r3, + round(wed_sales1/wed_sales2, 2) r4, + round(thu_sales1/thu_sales2, 2) r5, + round(fri_sales1/fri_sales2, 2) r6, + round(sat_sales1/sat_sales2, 2) +FROM + (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001+1) z +WHERE d_week_seq1 = d_week_seq2-53 +ORDER BY d_week_seq1 NULLS FIRST; +---- +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q20.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q20.slt.no new file mode 100644 index 00000000000..2e99d802a8d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q20.slt.no @@ -0,0 +1,132 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(cs_ext_sales_price) AS itemrevenue, + sum(cs_ext_sales_price)*100.0000/sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM catalog_sales , + item, + date_dim +WHERE cs_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST +LIMIT 100; +---- +AAAAAAAAOJGAAAAA NULL Books NULL NULL 227.76 100 +AAAAAAAACKEAAAAA Physical, local rates cannot explain; quickly lovely horses used to take. Quick, various subjects keep usually; please easy sources ought to thin Books arts 35.27 5748.96 44.104636657813 +AAAAAAAAKGBAAAAA Important, scientific words replace sure united friends. Important areas list fresh, gross directions. Mild services leave sadly commercial, appropriate ju Books arts 5.6 4084.33 31.333996173327 +AAAAAAAAMFFAAAAA So tiny sales obtain as ill tons. Constant others increase women. New Books arts 8.22 2374.63 18.217589502578 +AAAAAAAANIBAAAAA Open, real terms should avoid discussions. Just obvious adults will say strong, poor drawings. Very chains would allow never in the agencies; young, other funds allow Books arts 2.72 826.9 6.343777666282 +AAAAAAAAADFAAAAA Good groups steal respective chapters. Components could rely needs. Men need only wide, private courts. New, sudden forms see only. Letters will not find at the faces. Just fascinating humans s Books business 78.25 8435.35 45.301317792073 +AAAAAAAAKMAAAAAA Conservative women ought to beat positions. Agai Books business 0.19 729.3 3.916642589313 +AAAAAAAALDFAAAAA Dramatically particular charts used to boost unusually false organisers. I Books business 3.68 9455.89 50.782039618615 +AAAAAAAAFEEAAAAA Directly good effects could not complete. Implications may not investigate individually; electrical husba Books computers 3.83 1188.6 12.014458591258 +AAAAAAAALCDAAAAA Groups see legs. Systems lead hot, golden hands. Then general enquiries comply often social houses. Relentlessly annual ministers should not minimise suf Books computers 4.34 1478.2 14.941757268717 +AAAAAAAAMJEAAAAA Advantages w Books computers 1.04 4257.96 43.03978134211 +AAAAAAAAOGFAAAAA Similar months should want available, normal points; powers make. Soviet books will not enter indepe Books computers 99.41 2968.32 30.004002797915 +AAAAAAAAGOCAAAAA Frantically necess Books cooking 4.37 2732.39 21.401487708041 +AAAAAAAAJHGAAAAA Sure methods impose for instance spare feet. Special, clear problems would allow distinguished word Books cooking 20.16 8910.31 69.790143405531 +AAAAAAAAKCCAAAAA Bitter reasons may not bear cuts. Marine, normal shares make also. Trying contracts lift numerous reports. Also general feelings argue rights; still quiet techniques Books cooking 4.44 920.36 7.208734194962 +AAAAAAAALIGAAAAA Visitors will determine reluctant forms. Laws could not need fresh paths. Social, critical police must not thin Books cooking 0.88 204.23 1.599634691465 +AAAAAAAACIDAAAAA Magic, dead sports call; recently european wives o Books entertainments 3.51 1907.01 8.601328485583 +AAAAAAAAJKGAAAAA Most final departments will attempt also other customers. Severe units put increased years; flights Books entertainments 4.92 6530.82 29.456441287784 +AAAAAAAAKDEAAAAA Free activities might act on a years. Other, new fingers can claim specifically at the alternatives. Great, straightforward features come now; sure, little stand Books entertainments 6.46 7933.07 35.78111334976 +AAAAAAAAMKDAAAAA More local leaders Books entertainments 1.52 4362.16 19.674973422621 +AAAAAAAAOOEAAAAA True, sole women market far except for a depths. Dif Books entertainments 1.45 1438.05 6.486143454252 +AAAAAAAABGAAAAAA More reg Books fiction 57.09 2821.38 4.791864743929 +AAAAAAAACEFAAAAA Bottom, national fea Books fiction 4.25 13636.37 23.160170072152 +AAAAAAAADEAAAAAA Already Books fiction 1.47 12714.77 21.594913868449 +AAAAAAAAHDDAAAAA Partially great points will fulfil at least big, recent years. Solicitors ought to achieve cases. Hidden, major Books fiction 45.99 5977.78 10.152731368679 +AAAAAAAALIAAAAAA Lines shall describe explicitly northern, firm systems. Later Books fiction 2.99 16955.77 28.797877800638 +AAAAAAAAMLAAAAAA Very national teams shall not treat as important remaining details. Outdoor, good calls would not say. Various, unpleasant plants will not pass legal, final courts. Likely, Books fiction 0.47 1601.86 2.720617732709 +AAAAAAAANDDAAAAA Voters can write today dealers. Women see very other years. Able, russian barriers use systems. So young fingers would say primary, new companies. Only disabled children ought to renew fol Books fiction 2.73 2834.1 4.81346854049 +AAAAAAAAOCGAAAAA National, suitable weeks tax yet personal, subjective groups. White, likely boys drive states; de Books fiction 8.69 58.41 0.099204226192 +AAAAAAAAPMBAAAAA Unlikely, interested chemicals control likely countries. Assistant, medical museums choose horses. Far fierce waters should touch significantly publishers. At first foreign entries may unde Books fiction 8.79 2278.1 3.869151646763 +AAAAAAAAAMEAAAAA Lexical, religious days would go pregnant, natural employees; lines raise v Books history 9.64 2692.35 24.588165241676 +AAAAAAAACIBAAAAA Correct concentrations might not come questions. Economic, pure shelves should track. Only, long feet might not like much Books history 4.94 1342.91 12.264264670158 +AAAAAAAAJGEAAAAA Periods indicate regularly emotional, entire positions. Women mount originally large, religious refugees. Industrial, present wi Books history 0.65 2817.9 25.734763620822 +AAAAAAAALAFAAAAA Substantial flowers make perhaps regular negotiations. For example basic victims ought to cease below technological young troops. Citizens shall let carefully hostile, other characte Books history 5.91 3476.52 31.749678988984 +AAAAAAAAOGGAAAAA Inner friends used to love. New, european tables must not choose long, present pp.; about Books history 0.66 620.1 5.66312747836 +AAAAAAAAEIBAAAAA Legal, eligible concessions take still however conservative profits. Books home repair 0.82 292.14 1.546863384228 +AAAAAAAAFDFAAAAA Import Books home repair 7.18 4261.95 22.566763881741 +AAAAAAAAGBEAAAAA Y Books home repair 2.1 4501.76 23.836543125158 +AAAAAAAAMBGAAAAA More available quantities fit also in a interests. As foreign representations reflect darling sides Books home repair 3.33 2099.75 11.118047480774 +AAAAAAAAPNGAAAAA Ancient firms shall not show all thence emotional affairs. Ever annual revenues used to sta Books home repair 1.73 7730.36 40.931782128099 +AAAAAAAAADCAAAAA Possibly dependent prices might laugh also financial careers. Contrary, clever costs could sense; reliable, d Books mystery 1.55 3450.73 10.819021019889 +AAAAAAAACECAAAAA Crazy moves like there african, future sections. Terms shall see american, new theories. Upper, private shops will swim asleep days. Once more final terms can afford together. Still Books mystery 4.92 5900.96 18.501189683785 +AAAAAAAAMABAAAAA Children argue naturally already unable thanks. Low cars improve either light, powerful tools. Lar Books mystery 3.73 10304.93 32.308889504101 +AAAAAAAAOFBAAAAA Dependent, high weeks accept through an proposals. Ric Books mystery 3.1 12238.41 38.370899792225 +AAAAAAAAEBFAAAAA Large wings used to see particul Books parenting 99.89 261.4 2.88554413039 +AAAAAAAAEFEAAAAA Extern Books parenting 2.15 70.7 0.78044364965 +AAAAAAAAIHFAAAAA Permanent cards act again. Christian cases should not include positions. Quite multiple films should locate physical risks; by now negative leaders shall give duties. Victor Books parenting 4.64 4001.84 44.175539107733 +AAAAAAAAKHAAAAAA Well lovely hands know even Books parenting 2.62 803.28 8.867252827314 +AAAAAAAANMAAAAAA Very detailed points can mention then. Miles could not know very as a inhabitants. Still nearb Books parenting 7.3 3921.73 43.291220284912 +AAAAAAAAAODAAAAA Successful subjects might se Books reference 3.68 2567.04 10.608800083646 +AAAAAAAACLGAAAAA Failures think just eventually top factors. Animals ought to lose nearly terrible, necessary books. Public principles must not go sometimes else commercial wages. Serious oth Books reference 2.23 2726.3 11.266973505689 +AAAAAAAAEPBAAAAA Developers suggest even aspects. Most human teachers dive Books reference 6.28 4341.81 17.943387828462 +AAAAAAAAHFBAAAAA Difficult, ready masses ought to take tools. Attempts must receive immediately. Pilots s Books reference 38.26 1428.48 5.903475887982 +AAAAAAAAHMGAAAAA White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Books reference 4.95 3184.28 13.159666359056 +AAAAAAAALIDAAAAA German, ultimate personnel want even. Asian, old hospitals could not open far applicable, logical seeds. Years worry schemes. Perhaps li Books reference 1.55 5199.8 21.489201054499 +AAAAAAAANJAAAAAA Recent performances get yet other publications; current patients could not carry comparatively intense, vital times. Wide problems smooth truly. Tomorrow used years catch a Books reference 2.21 4749.56 19.628495280666 +AAAAAAAABOBAAAAA Solutions gain. Various shares create elsewhere. Specific, excellent police sa Books romance 2.38 8836.59 29.795233822683 +AAAAAAAAFCDAAAAA Bombs ensure once members. Even national effects can get quickly new extraordinary clubs. Main, occupational barriers tackle just equal ser Books romance 4.5 5339.12 18.002456695101 +AAAAAAAALLDAAAAA Officials must prevent openly local, federal elements. Expenses sleep lines; russian, young conclusions cost actually up the leaders. Regulations Books romance 90.72 998.13 3.365496954757 +AAAAAAAAMOAAAAAA Industries feel however. Domestic statements slide firms. European figures must plead now strong languages. Dangerous meetings set toda Books romance 0.75 14152.49 47.719397270121 +AAAAAAAANPDAAAAA Human, bright beaches would not buy particularly hungry wages. Often only areas get most increased blocks; there final children attempt slowly recent parties; golden, Books romance 2.9 331.4 1.117415257338 +AAAAAAAACDFAAAAA Narrow, basic investors matter together. Uniquely wide parents feel surely severe properties. Only huge arrangements will not last miles. Urban months enhance. Members might not stop personnel. Books science 4.18 8846.34 28.723179390239 +AAAAAAAACPCAAAAA Elections grow arab, domestic initiatives. Wide courses shall order involved, new services. Compulsory, concerne Books science 0.31 12163.69 39.494282371834 +AAAAAAAADAHAAAAA Similar fields run old cities. Golden, warm opportunities compare by a wives. Initial, regular libraries touch sometimes. Still unemployed stations contribute below Books science 2.33 1696.95 5.509826579836 +AAAAAAAADPEAAAAA Double effects put. Long, personal keys vote national metres; other, logical residents decide especially. Materials provide different, different families. Clearly open systems take pa Books science 0.45 2983.23 9.686248827463 +AAAAAAAAENFAAAAA Quite clean scores write well lesser, important acti Books science 1.51 1164.24 3.780170598608 +AAAAAAAAIPFAAAAA Babies might attend open problems. Just private sections should mean truly industrial alone factors. Others suggest yet terms. Able, small properties would not know moreover diff Books science 2.51 3944.16 12.80629223202 +AAAAAAAABJAAAAAA Prospects know Books self-help 59.77 4113.36 11.772035719979 +AAAAAAAAFGCAAAAA Pp. would agree thus processes. Married plans should want most in the houses. Ministers could write very foreign, level features. Ot Books self-help 1.89 13582.95 38.87308005686 +AAAAAAAAJHAAAAAA However increasing dates meet. Large, ready goals mean now blind structures. Crea Books self-help 38.79 1678.47 4.803617673851 +AAAAAAAAKGEAAAAA In order interesting ingredients get more. Young, in Books self-help 9.23 3664.14 10.486411829503 +AAAAAAAAMPBAAAAA Beautiful, short women could occur consciously women. Books self-help 2.94 11902.87 34.064854719807 +AAAAAAAADJEAAAAA Good, domestic authorities can drink only blue, old findings. Historical, Books travel 84.79 30.56 0.263217053295 +AAAAAAAALCAAAAAA Resources shall not continue thus similar, practical results. Practical words f Books travel 6.08 6396.03 55.089796118754 +AAAAAAAAMGBAAAAA White trees grow simply. Then possible banks used to get happily unhappy accused minds. Very fires should touch then particular towns. National systems watch actively victorian papers. Con Books travel 8.58 580.62 5.000951750144 +AAAAAAAAMODAAAAA Months provide firmly whole, historical characters. Relatively perfect centres find tomorrow products. Others dream linguistic, good visitor Books travel 0.23 4602.98 39.646035077807 +AAAAAAAAABDAAAAA Great, wonderful lakes must not arrange already to the rules. Easy, cultural elections need rather sensible orders. Hardly favorable prospects take at Home accent 1.06 746.9 2.812763143426 +AAAAAAAAEAGAAAAA Over other countries cannot remai Home accent 9.45 29.75 0.11203602024 +AAAAAAAAGHBAAAAA Advantages c Home accent 8.82 5303.16 19.971258524152 +AAAAAAAAGPFAAAAA Potential, late services could hide. Feet take enough arms; running degrees diagnose especially persons. Close types should not re Home accent 3.2 11988.35 45.147126831554 +AAAAAAAAOLDAAAAA So old proposals could not reconsider varieties. Sentences Home accent 0.48 8485.8 31.956815480629 +AAAAAAAAADEAAAAA International colleges shall mind large, outer hundreds. Technical, major times shall turn afterwards even medical questions. Alone members oug Home bathroom 2.57 5641.2 56.929603959197 +AAAAAAAAHBFAAAAA There young things should not compete small, relative problems. Sources find right dealers. Late authorities must find groups. Feet fall continually major courses. Now Home bathroom 7.89 4267.88 43.070396040803 +AAAAAAAAAOGAAAAA As prime legs proceed probably orange, historic experiments. Here different skills may not appease usually continental terms. Cheerful daughters take on a shops. Far Home bedding 3.51 13119.72 52.430182846172 +AAAAAAAAEKDAAAAA So general children can afford now particular characteristics. Publishers see under a exchanges; similarly wonderful Home bedding 1.78 1357.62 5.425440850538 +AAAAAAAAHHCAAAAA Trades shall become. Terms provide yesterday black investigations. Industrial lines mean. Bri Home bedding 1.65 5750.64 22.981215047464 +AAAAAAAAMDFAAAAA Really evil methods see abroad present diseases. Here good police will not sit now alternatively strong markets. Then fascinating years mean Home bedding 1.79 4.28 0.017104113699 +AAAAAAAAMPFAAAAA Issues go new banks. Significant, ordina Home bedding 79.19 4790.96 19.146057142126 +AAAAAAAACAFAAAAA Western, young groups could understand more never important police; general years emerge broad talks. Findings insure so waiting problems Home blinds/shades 29.09 2666.88 8.75881915164 +AAAAAAAADOFAAAAA New needs write as. Back drivers like but for a years. Times perform soon economic odds. Very cold windows used to know occasionally. Cases must take Home blinds/shades 2.08 3224.23 10.589320656833 +AAAAAAAAFOAAAAAA Inevitably general children must focus Home blinds/shades 3.2 546.98 1.796443371867 +AAAAAAAAGHDAAAAA Low men ought to try really. Just natural relationships shall not relate slightly other Home blinds/shades 6.97 4643.94 15.252066313846 +AAAAAAAAPOCAAAAA Top options care tomorrow dangerous emotions. Cool deputies establish t Home blinds/shades 3.71 19365.91 63.603350505814 +AAAAAAAAACAAAAAA Ce Home curtains/drapes 1.77 4527.71 16.055350536495 +AAAAAAAAAIAAAAAA Great, tiny animals adopt then outcomes. Terms sweep less dry, physical signs. National, black terms adapt for a reasons; groups shall Home curtains/drapes 4.06 378.72 1.342948721358 +AAAAAAAACMFAAAAA Literally available ages stand never unusual bo Home curtains/drapes 42.98 3180.77 11.279074261816 +AAAAAAAAGKDAAAAA Once again real differences can make black offenders. Consequen Home curtains/drapes 0.46 8349.87 29.608806611767 +AAAAAAAAIAGAAAAA Full, japanese pages must admit; fixed farms Home curtains/drapes 0.79 8336.28 29.560616199 +AAAAAAAAINFAAAAA Happy products provide mediterranean figures. Home curtains/drapes 5.48 1911.68 6.778855649679 +AAAAAAAAMMBAAAAA Recent flowers should trace alike hard questions. Small areas could not give easy, enthusiastic ends. Obvious concessions shall relate never reasons. Italian, acute officers c Home curtains/drapes 8.88 1244.88 4.414369466214 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q21.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q21.slt.no new file mode 100644 index 00000000000..62eef546227 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q21.slt.no @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTII +SELECT * +FROM + (SELECT w_warehouse_name, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_after + FROM inventory, + warehouse, + item, + date_dim + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) + GROUP BY w_warehouse_name, + i_item_id) x +WHERE (CASE + WHEN inv_before > 0 THEN (inv_after*1.000) / inv_before + ELSE NULL + END) BETWEEN 2.000/3.000 AND 3.000/2.000 +ORDER BY w_warehouse_name NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +Conventional childr AAAAAAAAABDAAAAA 1660 1398 +Conventional childr AAAAAAAABKFAAAAA 1524 2237 +Conventional childr AAAAAAAACAAAAAAA 2135 2684 +Conventional childr AAAAAAAACBFAAAAA 2850 2630 +Conventional childr AAAAAAAACFEAAAAA 2423 2185 +Conventional childr AAAAAAAACLGAAAAA 2671 2070 +Conventional childr AAAAAAAADEAAAAAA 3180 2181 +Conventional childr AAAAAAAAEFFAAAAA 2078 2093 +Conventional childr AAAAAAAAEKCAAAAA 3299 2487 +Conventional childr AAAAAAAAEMEAAAAA 2670 2548 +Conventional childr AAAAAAAAENDAAAAA 2068 1872 +Conventional childr AAAAAAAAFCGAAAAA 3133 2172 +Conventional childr AAAAAAAAFJFAAAAA 2601 1835 +Conventional childr AAAAAAAAGIGAAAAA 1258 1400 +Conventional childr AAAAAAAAGMBAAAAA 2761 2460 +Conventional childr AAAAAAAAGNBAAAAA 3025 2683 +Conventional childr AAAAAAAAHDAAAAAA 1441 1728 +Conventional childr AAAAAAAAHGDAAAAA 2187 2314 +Conventional childr AAAAAAAAKJAAAAAA 1358 1516 +Conventional childr AAAAAAAAMBAAAAAA 3883 2616 +Conventional childr AAAAAAAAMJCAAAAA 2269 1700 +Conventional childr AAAAAAAAMJEAAAAA 2140 1813 +Conventional childr AAAAAAAANEFAAAAA 2230 2362 +Conventional childr AAAAAAAANGDAAAAA 1629 1614 +Conventional childr AAAAAAAANNCAAAAA 2314 1730 +Conventional childr AAAAAAAAOEBAAAAA 2037 2167 +Conventional childr AAAAAAAAOFDAAAAA 2563 2055 +Conventional childr AAAAAAAAOGAAAAAA 2453 2121 +Conventional childr AAAAAAAAOOEAAAAA 2786 1880 +Conventional childr AAAAAAAAPAEAAAAA 2111 1555 +Conventional childr AAAAAAAAPHDAAAAA 2899 3268 +Conventional childr AAAAAAAAPKAAAAAA 2900 2530 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q22.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q22.slt.no new file mode 100644 index 00000000000..5d7c4980eaa --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q22.slt.no @@ -0,0 +1,123 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTR +SELECT i_product_name , + i_brand , + i_class , + i_category , + avg(inv_quantity_on_hand) qoh +FROM inventory , + date_dim , + item +WHERE inv_date_sk=d_date_sk + AND inv_item_sk=i_item_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 +GROUP BY rollup(i_product_name ,i_brand ,i_class ,i_category) +ORDER BY qoh NULLS FIRST, + i_product_name NULLS FIRST, + i_brand NULLS FIRST, + i_class NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +oughtableought NULL NULL NULL 387.102040816326 +oughtableought exportiunivamalg #2 NULL NULL 387.102040816326 +oughtableought exportiunivamalg #2 self-help NULL 387.102040816326 +oughtableought exportiunivamalg #2 self-help Books 387.102040816326 +anticallyantiought NULL NULL NULL 387.2 +anticallyantiought exportimaxi #6 NULL NULL 387.2 +anticallyantiought exportimaxi #6 sailing NULL 387.2 +anticallyantiought exportimaxi #6 sailing Sports 387.2 +oughteingeing NULL NULL NULL 387.576923076923 +oughteingeing univunivamalg #6 NULL NULL 387.576923076923 +oughteingeing univunivamalg #6 travel NULL 387.576923076923 +oughteingeing univunivamalg #6 travel Books 387.576923076923 +callyeingantiought NULL NULL NULL 392.551020408163 +callyeingantiought importoscholar #1 NULL NULL 392.551020408163 +callyeingantiought importoscholar #1 country NULL 392.551020408163 +callyeingantiought importoscholar #1 country Music 392.551020408163 +antieingcallyought NULL NULL NULL 393.468085106383 +antieingcallyought importonameless #6 NULL NULL 393.468085106383 +antieingcallyought importonameless #6 paint NULL 393.468085106383 +antieingcallyought importonameless #6 paint Home 393.468085106383 +ationantiese NULL NULL NULL 402.884615384615 +ationantiese scholaramalgamalg #16 NULL NULL 402.884615384615 +ationantiese scholaramalgamalg #16 portable NULL 402.884615384615 +ationantiese scholaramalgamalg #16 portable Electronics 402.884615384615 +eseableeing NULL NULL NULL 407.040816326531 +eseableeing importoamalg #1 NULL NULL 407.040816326531 +eseableeing importoamalg #1 fragrances NULL 407.040816326531 +eseableeing importoamalg #1 fragrances Women 407.040816326531 +ablen stn st NULL NULL NULL 407.607843137255 +ablen stn st brandmaxi #9 NULL NULL 407.607843137255 +ablen stn st brandmaxi #9 reference NULL 407.607843137255 +ablen stn st brandmaxi #9 reference Books 407.607843137255 +eseeseableought NULL NULL NULL 411.30612244898 +eseeseableought amalgexporti #1 NULL NULL 411.30612244898 +eseeseableought amalgexporti #1 newborn NULL 411.30612244898 +eseeseableought amalgexporti #1 newborn Children 411.30612244898 +priationought NULL NULL NULL 411.78 +priationought amalgimporto #2 NULL NULL 411.78 +priationought amalgimporto #2 accessories NULL 411.78 +priationought amalgimporto #2 accessories Men 411.78 +eseantioughtought NULL NULL NULL 412.16 +eseantioughtought exportiamalgamalg #16 NULL NULL 412.16 +eseantioughtought exportiamalgamalg #16 stereo NULL 412.16 +eseantioughtought exportiamalgamalg #16 stereo Electronics 412.16 +ationn station NULL NULL NULL 413.382978723404 +ationn station importoamalg #2 NULL NULL 413.382978723404 +ationn station importoamalg #2 fragrances NULL 413.382978723404 +ationn station importoamalg #2 fragrances Women 413.382978723404 +callycallyoughtought NULL NULL NULL 413.387755102041 +callycallyoughtought importoimporto #1 NULL NULL 413.387755102041 +callycallyoughtought importoimporto #1 shirts NULL 413.387755102041 +callycallyoughtought importoimporto #1 shirts Men 413.387755102041 +prieingcally NULL NULL NULL 415.159090909091 +prieingcally namelessbrand #4 NULL NULL 415.159090909091 +prieingcally namelessbrand #4 lighting NULL 415.159090909091 +prieingcally namelessbrand #4 lighting Home 415.159090909091 +priationcally NULL NULL NULL 416.38 +priationcally maxinameless #4 NULL NULL 416.38 +priationcally maxinameless #4 optics NULL 416.38 +priationcally maxinameless #4 optics Sports 416.38 +oughtationpri NULL NULL NULL 417.020833333333 +oughtationpri univnameless #2 NULL NULL 417.020833333333 +oughtationpri univnameless #2 flatware NULL 417.020833333333 +oughtationpri univnameless #2 flatware Home 417.020833333333 +ableationable NULL NULL NULL 417.634615384615 +ableationable corpnameless #3 NULL NULL 417.634615384615 +ableationable corpnameless #3 furniture NULL 417.634615384615 +ableationable corpnameless #3 furniture Home 417.634615384615 +callyn stationought NULL NULL NULL 417.918367346939 +callyn stationought importoscholar #1 NULL NULL 417.918367346939 +callyn stationought importoscholar #1 country NULL 417.918367346939 +callyn stationought importoscholar #1 country Music 417.918367346939 +n steingeing NULL NULL NULL 417.960784313725 +n steingeing exportischolar #2 NULL NULL 417.960784313725 +n steingeing exportischolar #2 pop NULL 417.960784313725 +n steingeing exportischolar #2 pop Music 417.960784313725 +ationn stn st NULL NULL NULL 421.085106382979 +ationn stn st exportiimporto #2 NULL NULL 421.085106382979 +ationn stn st exportiimporto #2 pants NULL 421.085106382979 +ationn stn st exportiimporto #2 pants Men 421.085106382979 +n stpricallyought NULL NULL NULL 421.367346938776 +n stpricallyought scholarcorp #8 NULL NULL 421.367346938776 +n stpricallyought scholarcorp #8 earings NULL 421.367346938776 +n stpricallyought scholarcorp #8 earings Jewelry 421.367346938776 +baresepriought NULL NULL NULL 422.875 +baresepriought importobrand #1 NULL NULL 422.875 +baresepriought importobrand #1 bedding NULL 422.875 +baresepriought importobrand #1 bedding Home 422.875 +ationcallypriought NULL NULL NULL 422.877551020408 +ationcallypriought edu packunivamalg #12 NULL NULL 422.877551020408 +ationcallypriought edu packunivamalg #12 sports NULL 422.877551020408 +ationcallypriought edu packunivamalg #12 sports Books 422.877551020408 +eingeingpriought NULL NULL NULL 422.957446808511 +eingeingpriought importonameless #9 NULL NULL 422.957446808511 +eingeingpriought importonameless #9 paint NULL 422.957446808511 +eingeingpriought importonameless #9 paint Home 422.957446808511 +esepricallyought NULL NULL NULL 423.1 +esepricallyought scholarunivamalg #3 NULL NULL 423.1 +esepricallyought scholarunivamalg #3 karoke NULL 423.1 +esepricallyought scholarunivamalg #3 karoke Electronics 423.1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q23.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q23.slt.no new file mode 100644 index 00000000000..ddd4afbdcbc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q23.slt.no @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +WITH frequent_ss_items AS + (SELECT itemdesc, + i_item_sk item_sk, + d_date solddate, + count(*) cnt + FROM store_sales, + date_dim, + (SELECT SUBSTRING(i_item_desc, 1, 30) itemdesc, + * + FROM item) sq1 + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY itemdesc, + i_item_sk, + d_date + HAVING count(*) >4), + max_store_sales AS + (SELECT max(csales) tpcds_cmax + FROM + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) csales + FROM store_sales, + customer, + date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY c_customer_sk) sq2), + best_ss_customer AS + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) ssales + FROM store_sales, + customer, + max_store_sales + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING sum(ss_quantity*ss_sales_price) > (50/100.0) * max(tpcds_cmax)) +SELECT c_last_name, + c_first_name, + sales +FROM + (SELECT c_last_name, + c_first_name, + sum(cs_quantity*cs_list_price) sales + FROM catalog_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = item_sk + AND cs_bill_customer_sk = best_ss_customer.c_customer_sk + AND cs_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name + UNION ALL SELECT c_last_name, + c_first_name, + sum(ws_quantity*ws_list_price) sales + FROM web_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = item_sk + AND ws_bill_customer_sk = best_ss_customer.c_customer_sk + AND ws_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name) sq3 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + sales NULLS FIRST +LIMIT 100; +---- +Kiser Teresa 10345.95 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q24.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q24.slt.no new file mode 100644 index 00000000000..784e15983be --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q24.slt.no @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTR +WITH ssales AS + (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_country <> upper(ca_country) + AND s_zip = ca_zip + AND s_market_id=8 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'peach' +GROUP BY c_last_name, + c_first_name, + s_store_name +HAVING sum(netpaid) > + (SELECT 0.05*avg(netpaid) + FROM ssales) +ORDER BY c_last_name, + c_first_name, + s_store_name ; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q25.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q25.slt.no new file mode 100644 index 00000000000..901d462b688 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q25.slt.no @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id , + i_item_desc , + s_store_id , + s_store_name , + sum(ss_net_profit) AS store_sales_profit , + sum(sr_net_loss) AS store_returns_loss , + sum(cs_net_profit) AS catalog_sales_profit +FROM store_sales , + store_returns , + catalog_sales , + date_dim d1 , + date_dim d2 , + date_dim d3 , + store , + item +WHERE d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +ORDER BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q26.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q26.slt.no new file mode 100644 index 00000000000..76e5ad428cb --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q26.slt.no @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRRR +SELECT i_item_id, + avg(cs_quantity) agg1, + avg(cs_list_price) agg2, + avg(cs_coupon_amt) agg3, + avg(cs_sales_price) agg4 +FROM catalog_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +AAAAAAAAAABAAAAA 54 25.36 0 13.94 +AAAAAAAAAAFAAAAA 11 36.71 0 1.46 +AAAAAAAAABGAAAAA 89 66.46 234.21 14.62 +AAAAAAAAACFAAAAA 22 82.72 0 29.77 +AAAAAAAAACGAAAAA 43 140.34 0 112.27 +AAAAAAAAAEAAAAAA 18 45.92 0 16.07 +AAAAAAAAAEDAAAAA 47 205.23 4699.3 119.03 +AAAAAAAAAEEAAAAA 68 61.1 0 2.44 +AAAAAAAAAEGAAAAA 62 104.6 0 82.63 +AAAAAAAAAFFAAAAA 86 101.97 0 76.47 +AAAAAAAAAGEAAAAA 27 41.89 0 17.59 +AAAAAAAAAHDAAAAA 67 39.98 0 39.98 +AAAAAAAAAHGAAAAA 81 97.035 36.645 77.565 +AAAAAAAAAIDAAAAA 55 81.54 0 51.37 +AAAAAAAAAIFAAAAA 27.5 121.975 0 36.885 +AAAAAAAAAMEAAAAA 83 33.4 0 9.68 +AAAAAAAAAOCAAAAA 3 31.04 0 22.03 +AAAAAAAAAODAAAAA 78 145.2 0 47.91 +AAAAAAAAAPCAAAAA 44.5 204.765 0 134.585 +AAAAAAAABAGAAAAA 24 240.38 1047.02 79.32 +AAAAAAAABCEAAAAA 16 37.15 0 17.08 +AAAAAAAABDAAAAAA 20 205.62 0 45.23 +AAAAAAAABECAAAAA 33 56.44 0 38.37 +AAAAAAAABFBAAAAA 4 38.1 0 5.33 +AAAAAAAABGDAAAAA 73 170.7 0 110.95 +AAAAAAAABGGAAAAA 28 43.92 168.71 43.04 +AAAAAAAABIBAAAAA 90 80.46 130.24 4.02 +AAAAAAAABLBAAAAA 75 48.125 0 4.245 +AAAAAAAABNCAAAAA 19 43.54 0 19.59 +AAAAAAAACADAAAAA 40 38.62 0 24.71 +AAAAAAAACAGAAAAA 45 174.08 0 80.07 +AAAAAAAACBEAAAAA 28 156.26 0 101.56 +AAAAAAAACBFAAAAA 15 61.865 0 23.74 +AAAAAAAACCDAAAAA 97 2.3 0 2.23 +AAAAAAAACEBAAAAA 92 10.88 0 9.13 +AAAAAAAACFGAAAAA 65 188.16 0 171.22 +AAAAAAAACGDAAAAA 65 114.12 3429.23 76.46 +AAAAAAAACHEAAAAA 90 136.25 0 114.45 +AAAAAAAACJCAAAAA 92 209.94 0 197.34 +AAAAAAAACJDAAAAA 12 35.57 54.62 28.45 +AAAAAAAACJGAAAAA 20.666666666667 167.803333 0 84.006666 +AAAAAAAACKBAAAAA 8 40.28 78.34 25.77 +AAAAAAAACKFAAAAA 37.5 138.32 0 56.61 +AAAAAAAACLBAAAAA 80 57.18 0 53.17 +AAAAAAAACLGAAAAA 69 212.81 0 29.79 +AAAAAAAACMCAAAAA 9 220.33 0 134.4 +AAAAAAAACMDAAAAA 58 111.03 0 18.87 +AAAAAAAACMFAAAAA 87 114.81 0 104.47 +AAAAAAAACNBAAAAA 43 232.62 4876.95 123.28 +AAAAAAAACOGAAAAA 53.5 143.66 0 91.275 +AAAAAAAACPAAAAAA 95 147.36 0 63.36 +AAAAAAAACPDAAAAA 88 162.8 0 42.32 +AAAAAAAADAEAAAAA 97 152.99 1941.94 26 +AAAAAAAADAHAAAAA 76.5 106.67 0 73.925 +AAAAAAAADBDAAAAA 47 204.9 0 69.66 +AAAAAAAADEDAAAAA 80 183.9 0 1.83 +AAAAAAAADGBAAAAA 77 29.44 0 0.88 +AAAAAAAADICAAAAA 68 230.38 0 168.17 +AAAAAAAADKAAAAAA 43 237.65 0 14.25 +AAAAAAAADMEAAAAA 86 184.57 8047.36 143.96 +AAAAAAAADOCAAAAA 61 215.67 0 107.83 +AAAAAAAADPBAAAAA 100 135.16 527.1 35.14 +AAAAAAAAEBCAAAAA 27 166.3 0 69.84 +AAAAAAAAECFAAAAA 5 120.67 0 44.64 +AAAAAAAAEDEAAAAA 96 152.42 0 76.21 +AAAAAAAAEDGAAAAA 38 172.1 0 15.48 +AAAAAAAAEGDAAAAA 75 108.23 0 24.89 +AAAAAAAAEICAAAAA 84 178.4 0 144.5 +AAAAAAAAEIFAAAAA 90 41.27 0 6.6 +AAAAAAAAEJBAAAAA 56 66.66 0 41.17 +AAAAAAAAEJDAAAAA 99 218.15 0 159.24 +AAAAAAAAEJEAAAAA 28 124.1 0 60.8 +AAAAAAAAEKGAAAAA 52 189.49 0 58.74 +AAAAAAAAEMDAAAAA 86 62.3 0 59.8 +AAAAAAAAEMEAAAAA 42 14.63 0 7.31 +AAAAAAAAENDAAAAA 93 249.63 0 32.45 +AAAAAAAAENFAAAAA 47 76.99 0 36.2 +AAAAAAAAEOBAAAAA 10 119.27 0 98.99 +AAAAAAAAEOFAAAAA 34 3.46 0 3.18 +AAAAAAAAFACAAAAA 71 18.1 0 5.79 +AAAAAAAAFAFAAAAA 45 28.45 0 25.32 +AAAAAAAAFCAAAAAA 66 72.87 0 43.72 +AAAAAAAAFCGAAAAA 26 77.69 0 9.32 +AAAAAAAAFDCAAAAA 77.5 39.83 0 10.285 +AAAAAAAAFEEAAAAA 19.5 96.145 638.385 44.68 +AAAAAAAAFFDAAAAA 43 106.67 0 2.13 +AAAAAAAAFFGAAAAA 85 55.99 119.91 35.27 +AAAAAAAAFGCAAAAA 63 112.015 5.26 93.905 +AAAAAAAAFHBAAAAA 45 42.79 0 40.65 +AAAAAAAAFHEAAAAA 81 131.99 0 50.15 +AAAAAAAAFIGAAAAA 37 62.35 0 1.24 +AAAAAAAAFKBAAAAA 99 160.19 0 8 +AAAAAAAAFLGAAAAA 88 3.09 0 1.2 +AAAAAAAAFNBAAAAA 3 109.15 66.4 85.13 +AAAAAAAAFODAAAAA 64 116.48 0 81.53 +AAAAAAAAGAFAAAAA 57 169.09 0 65.94 +AAAAAAAAGBEAAAAA 33 67.33 0 18.85 +AAAAAAAAGBGAAAAA 79 110.44 586.24 61.84 +AAAAAAAAGDCAAAAA 45 96.55 129.89 12.55 +AAAAAAAAGDEAAAAA 65 39.35 0 33.05 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q27.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q27.slt.no new file mode 100644 index 00000000000..c247068b8e9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q27.slt.no @@ -0,0 +1,165 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIRRRR +WITH results AS + (SELECT i_item_id, + s_state, + 0 AS g_state, + ss_quantity agg1, + ss_list_price agg2, + ss_coupon_amt agg3, + ss_sales_price agg4 + FROM store_sales, + customer_demographics, + date_dim, + store, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND d_year = 2002 + AND s_state = 'TN' ) +SELECT i_item_id, + s_state, + g_state, + agg1, + agg2, + agg3, + agg4 +FROM + ( SELECT i_item_id, + s_state, + 0 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id , + s_state + UNION ALL SELECT i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id + UNION ALL SELECT NULL AS i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results ) foo +ORDER BY i_item_id NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +NULL NULL 1 50.996183206107 77.562038 179.138826 39.329783 +AAAAAAAAAAEAAAAA NULL 1 38 96.47 0 92.61 +AAAAAAAAAAEAAAAA TN 0 38 96.47 0 92.61 +AAAAAAAAAAFAAAAA NULL 1 7 126.82 0 22.82 +AAAAAAAAAAFAAAAA TN 0 7 126.82 0 22.82 +AAAAAAAAAAHAAAAA NULL 1 53.5 14.415 2.93 6.395 +AAAAAAAAAAHAAAAA TN 0 53.5 14.415 2.93 6.395 +AAAAAAAAABAAAAAA NULL 1 88 64.14 0 59.65 +AAAAAAAAABAAAAAA TN 0 88 64.14 0 59.65 +AAAAAAAAABEAAAAA NULL 1 29 92.04 0 61.66 +AAAAAAAAABEAAAAA TN 0 29 92.04 0 61.66 +AAAAAAAAACCAAAAA NULL 1 68 98.19 0 68.1 +AAAAAAAAACCAAAAA TN 0 68 98.19 0 68.1 +AAAAAAAAACDAAAAA NULL 1 77 152.46 0 18.29 +AAAAAAAAACDAAAAA TN 0 77 152.46 0 18.29 +AAAAAAAAACFAAAAA NULL 1 42 76.37 385.815 11.125 +AAAAAAAAACFAAAAA TN 0 42 76.37 385.815 11.125 +AAAAAAAAADBAAAAA NULL 1 75 65.33 3073.03 41.81 +AAAAAAAAADBAAAAA TN 0 75 65.33 3073.03 41.81 +AAAAAAAAADCAAAAA NULL 1 43 80.82 0 68.69 +AAAAAAAAADCAAAAA TN 0 43 80.82 0 68.69 +AAAAAAAAADEAAAAA NULL 1 73 108.55 0 59.7 +AAAAAAAAADEAAAAA TN 0 73 108.55 0 59.7 +AAAAAAAAADFAAAAA NULL 1 13 103.18 0 87.7 +AAAAAAAAADFAAAAA TN 0 13 103.18 0 87.7 +AAAAAAAAAEAAAAAA NULL 1 65.5 84.265 1414.25 66.03 +AAAAAAAAAEAAAAAA TN 0 65.5 84.265 1414.25 66.03 +AAAAAAAAAEBAAAAA NULL 1 13 111.82 0 16.77 +AAAAAAAAAEBAAAAA TN 0 13 111.82 0 16.77 +AAAAAAAAAEDAAAAA NULL 1 42 116.9 0 13.895 +AAAAAAAAAEDAAAAA TN 0 42 116.9 0 13.895 +AAAAAAAAAEGAAAAA NULL 1 20.5 42.36 0 23.075 +AAAAAAAAAEGAAAAA TN 0 20.5 42.36 0 23.075 +AAAAAAAAAFCAAAAA NULL 1 53.5 74.87 0 37.965 +AAAAAAAAAFCAAAAA TN 0 53.5 74.87 0 37.965 +AAAAAAAAAFFAAAAA NULL 1 43.666666666667 39.46 0 26.31 +AAAAAAAAAFFAAAAA TN 0 43.666666666667 39.46 0 26.31 +AAAAAAAAAFGAAAAA NULL 1 69 100.133333 1050.94 57.703333 +AAAAAAAAAFGAAAAA TN 0 69 100.133333 1050.94 57.703333 +AAAAAAAAAGBAAAAA NULL 1 29 146.75 0 36.68 +AAAAAAAAAGBAAAAA TN 0 29 146.75 0 36.68 +AAAAAAAAAHAAAAAA NULL 1 69 82.58 0 80.92 +AAAAAAAAAHAAAAAA TN 0 69 82.58 0 80.92 +AAAAAAAAAHBAAAAA NULL 1 100 66.33 0 5.96 +AAAAAAAAAHBAAAAA TN 0 100 66.33 0 5.96 +AAAAAAAAAHDAAAAA NULL 1 58 94.02 0 49.83 +AAAAAAAAAHDAAAAA TN 0 58 94.02 0 49.83 +AAAAAAAAAHEAAAAA NULL 1 58 120.87 0 26.59 +AAAAAAAAAHEAAAAA TN 0 58 120.87 0 26.59 +AAAAAAAAAIAAAAAA NULL 1 21 147.66 91.68 5.9 +AAAAAAAAAIAAAAAA TN 0 21 147.66 91.68 5.9 +AAAAAAAAAICAAAAA NULL 1 49 66.64 0 16.66 +AAAAAAAAAICAAAAA TN 0 49 66.64 0 16.66 +AAAAAAAAAIDAAAAA NULL 1 68 44.81 0 22.85 +AAAAAAAAAIDAAAAA TN 0 68 44.81 0 22.85 +AAAAAAAAAIFAAAAA NULL 1 57 58.93 0 27.425 +AAAAAAAAAIFAAAAA TN 0 57 58.93 0 27.425 +AAAAAAAAAIGAAAAA NULL 1 15.5 27.885 0 21.15 +AAAAAAAAAIGAAAAA TN 0 15.5 27.885 0 21.15 +AAAAAAAAAJBAAAAA NULL 1 13 100.39 0 8.03 +AAAAAAAAAJBAAAAA TN 0 13 100.39 0 8.03 +AAAAAAAAAJFAAAAA NULL 1 62 95.735 0 28.475 +AAAAAAAAAJFAAAAA TN 0 62 95.735 0 28.475 +AAAAAAAAAKDAAAAA NULL 1 53 102.46 0 29.71 +AAAAAAAAAKDAAAAA TN 0 53 102.46 0 29.71 +AAAAAAAAALCAAAAA NULL 1 30 112.48 0 62.98 +AAAAAAAAALCAAAAA TN 0 30 112.48 0 62.98 +AAAAAAAAALDAAAAA NULL 1 6 55.88 0 22.35 +AAAAAAAAALDAAAAA TN 0 6 55.88 0 22.35 +AAAAAAAAALFAAAAA NULL 1 75.5 62.615 0 41.77 +AAAAAAAAALFAAAAA TN 0 75.5 62.615 0 41.77 +AAAAAAAAAMCAAAAA NULL 1 34 67.285 1065.62 41.345 +AAAAAAAAAMCAAAAA TN 0 34 67.285 1065.62 41.345 +AAAAAAAAANAAAAAA NULL 1 72 138.955 0 50.78 +AAAAAAAAANAAAAAA TN 0 72 138.955 0 50.78 +AAAAAAAAANDAAAAA NULL 1 16 3.46 0 0.93 +AAAAAAAAANDAAAAA TN 0 16 3.46 0 0.93 +AAAAAAAAANGAAAAA NULL 1 56 108.79 0 65.515 +AAAAAAAAANGAAAAA TN 0 56 108.79 0 65.515 +AAAAAAAAAOAAAAAA NULL 1 65 57.58 0 22.45 +AAAAAAAAAOAAAAAA TN 0 65 57.58 0 22.45 +AAAAAAAAAOGAAAAA NULL 1 72 37.55 285.43 36.04 +AAAAAAAAAOGAAAAA TN 0 72 37.55 285.43 36.04 +AAAAAAAAAPCAAAAA NULL 1 26 164.13 788.56 54.16 +AAAAAAAAAPCAAAAA TN 0 26 164.13 788.56 54.16 +AAAAAAAAAPFAAAAA NULL 1 58.333333333333 69.806666 0 32.63 +AAAAAAAAAPFAAAAA TN 0 58.333333333333 69.806666 0 32.63 +AAAAAAAABADAAAAA NULL 1 13 41.28 1.87 2.06 +AAAAAAAABADAAAAA TN 0 13 41.28 1.87 2.06 +AAAAAAAABDDAAAAA NULL 1 66 42.78 0 32.945 +AAAAAAAABDDAAAAA TN 0 66 42.78 0 32.945 +AAAAAAAABECAAAAA NULL 1 60.5 52.7 0 24.3 +AAAAAAAABECAAAAA TN 0 60.5 52.7 0 24.3 +AAAAAAAABFEAAAAA NULL 1 99 93.01 0 0 +AAAAAAAABFEAAAAA TN 0 99 93.01 0 0 +AAAAAAAABGAAAAAA NULL 1 16 183.78 0 23.89 +AAAAAAAABGAAAAAA TN 0 16 183.78 0 23.89 +AAAAAAAABGDAAAAA NULL 1 64 49.39 0 8.89 +AAAAAAAABGDAAAAA TN 0 64 49.39 0 8.89 +AAAAAAAABGGAAAAA NULL 1 26 4.05 0 0.52 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q28.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q28.slt.no new file mode 100644 index 00000000000..f1aa4f3e455 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q28.slt.no @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RIIRIIRIIRIIRIIRII +SELECT * +FROM + (SELECT avg(ss_list_price) B1_LP, + count(ss_list_price) B1_CNT, + count(DISTINCT ss_list_price) B1_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 0 AND 5 + AND (ss_list_price BETWEEN 8 AND 8+10 + OR ss_coupon_amt BETWEEN 459 AND 459+1000 + OR ss_wholesale_cost BETWEEN 57 AND 57+20)) B1, + (SELECT avg(ss_list_price) B2_LP, + count(ss_list_price) B2_CNT, + count(DISTINCT ss_list_price) B2_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 6 AND 10 + AND (ss_list_price BETWEEN 90 AND 90+10 + OR ss_coupon_amt BETWEEN 2323 AND 2323+1000 + OR ss_wholesale_cost BETWEEN 31 AND 31+20)) B2, + (SELECT avg(ss_list_price) B3_LP, + count(ss_list_price) B3_CNT, + count(DISTINCT ss_list_price) B3_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 11 AND 15 + AND (ss_list_price BETWEEN 142 AND 142+10 + OR ss_coupon_amt BETWEEN 12214 AND 12214+1000 + OR ss_wholesale_cost BETWEEN 79 AND 79+20)) B3, + (SELECT avg(ss_list_price) B4_LP, + count(ss_list_price) B4_CNT, + count(DISTINCT ss_list_price) B4_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 16 AND 20 + AND (ss_list_price BETWEEN 135 AND 135+10 + OR ss_coupon_amt BETWEEN 6071 AND 6071+1000 + OR ss_wholesale_cost BETWEEN 38 AND 38+20)) B4, + (SELECT avg(ss_list_price) B5_LP, + count(ss_list_price) B5_CNT, + count(DISTINCT ss_list_price) B5_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 25 + AND (ss_list_price BETWEEN 122 AND 122+10 + OR ss_coupon_amt BETWEEN 836 AND 836+1000 + OR ss_wholesale_cost BETWEEN 17 AND 17+20)) B5, + (SELECT avg(ss_list_price) B6_LP, + count(ss_list_price) B6_CNT, + count(DISTINCT ss_list_price) B6_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 26 AND 30 + AND (ss_list_price BETWEEN 154 AND 154+10 + OR ss_coupon_amt BETWEEN 7326 AND 7326+1000 + OR ss_wholesale_cost BETWEEN 7 AND 7+20)) B6 +LIMIT 100; +---- +78.051324 3512 2840 69.589553 3580 2677 134.091937 2849 2465 82.692868 3137 2543 61.341167 3631 2778 39.378027 3036 2203 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q29.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q29.slt.no new file mode 100644 index 00000000000..68d32f7dec2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q29.slt.no @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIII +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_quantity) AS store_sales_quantity, + sum(sr_return_quantity) AS store_returns_quantity, + sum(cs_quantity) AS catalog_sales_quantity +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_moy = 9 + AND d1.d_year = 1999 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 9 AND 9 + 3 + AND d2.d_year = 1999 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN (1999, + 1999+1, + 1999+2) +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q3.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q3.slt.no new file mode 100644 index 00000000000..75e063ccba1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q3.slt.no @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IITR +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) sum_agg +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 128 + AND dt.d_moy=11 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + sum_agg DESC, + brand_id +LIMIT 100; +---- +1998 3001001 amalgexporti #1 35091.22 +1998 6004008 edu packcorp #8 7815.69 +1998 1004001 edu packamalg #1 4804.39 +1999 1004001 edu packamalg #1 21945.56 +1999 3001001 amalgexporti #1 15640.06 +1999 6004008 edu packcorp #8 3158.28 +2000 1004001 edu packamalg #1 19485.89 +2000 6004008 edu packcorp #8 16982.85 +2000 3001001 amalgexporti #1 16927.9 +2001 3001001 importoscholar #2 31223.1 +2001 1004001 exportiexporti #2 29816.3 +2001 6004008 edu packcorp #8 24093.07 +2002 6004008 edu packcorp #8 20111.76 +2002 3001001 importoscholar #2 13535.81 +2002 1004001 exportiexporti #2 11338.71 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q30.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q30.slt.no new file mode 100644 index 00000000000..50ee4c7a1fd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q30.slt.no @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTIIITTTIR +WITH customer_total_return AS + (SELECT wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(wr_return_amt) AS ctr_total_return + FROM web_returns, + date_dim, + customer_address + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2002 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +FROM customer_total_return ctr1, + customer_address, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id NULLS FIRST, + c_salutation NULLS FIRST, + c_first_name NULLS FIRST, + c_last_name NULLS FIRST, + c_preferred_cust_flag NULLS FIRST, + c_birth_day NULLS FIRST, + c_birth_month NULLS FIRST, + c_birth_year NULLS FIRST, + c_birth_country NULLS FIRST, + c_login NULLS FIRST, + c_email_address NULLS FIRST, + c_last_review_date_sk NULLS FIRST, + ctr_total_return NULLS FIRST +LIMIT 100; +---- +AAAAAAAAACJAAAAA Sir Roger Gonzalez Y 8 1 1980 TUVALU (empty) Roger.Gonzalez@Qbki8Z3ti6ttqLr.com 2452380 3439.08 +AAAAAAAABDACAAAA Dr. Wesley Lee N 18 8 1944 UZBEKISTAN (empty) Wesley.Lee@XFQyCJ38Yy9.com 2452335 2839.5 +AAAAAAAABJDAAAAA Mr. Rob Blanco N 9 2 1977 UKRAINE (empty) Rob.Blanco@6GhI1MtoAQPsIc.edu 2452526 10181.31 +AAAAAAAABMPAAAAA Dr. Eileen Reid Y 9 12 1978 LUXEMBOURG (empty) Eileen.Reid@J.org 2452645 1968.81 +AAAAAAAACJEBAAAA Dr. Karen Simon Y 1 2 1951 AMERICAN SAMOA (empty) Karen.Simon@yZQoc43BFY.org 2452648 2568.07 +AAAAAAAACMBBAAAA Dr. Michael Alvarado Y 27 12 1990 LIBERIA (empty) Michael.Alvarado@A63BvnOldkTj.org 2452320 1474.41 +AAAAAAAADKDCAAAA Miss Karen Proffitt N 25 12 1941 MOLDOVA, REPUBLIC OF (empty) Karen.Proffitt@3arqUjeF377f.com 2452510 11218.48 +AAAAAAAAEFDBAAAA Mrs. Helen Cartwright N 3 9 1925 AZERBAIJAN (empty) Helen.Cartwright@3xjU6uUD8h.com 2452502 1957.21 +AAAAAAAAEGCAAAAA Dr. Dana Nelson N 14 1 1975 PUERTO RICO (empty) Dana.Nelson@KiomOfY85E.org 2452337 1387 +AAAAAAAAGFIAAAAA Mr. James Bravo N 19 5 1987 CAPE VERDE (empty) James.Bravo@XByPHVTRdD.com 2452418 2797.6 +AAAAAAAAGJDCAAAA Ms. Araceli Young Y 16 10 1947 LUXEMBOURG (empty) Araceli.Young@lRbh.com 2452472 2495.76 +AAAAAAAAGJDCAAAA Ms. Araceli Young Y 16 10 1947 LUXEMBOURG (empty) Araceli.Young@lRbh.com 2452472 5196.12 +AAAAAAAAHKBBAAAA Ms. Linda Crawford N 13 2 1924 KIRIBATI (empty) Linda.Crawford@xOf5kYDZapQmj.org 2452598 5318.88 +AAAAAAAAJBJAAAAA Ms. Gladys Hinojosa N 11 9 1983 YEMEN (empty) Gladys.Hinojosa@cRUiSNOt2L.edu 2452418 2410.24 +AAAAAAAAJFMBAAAA Dr. Donna Chaney Y 16 5 1984 FIJI (empty) Donna.Chaney@uIuv0.org 2452530 2227.16 +AAAAAAAAJJDBAAAA Miss Tamara Hadden Y 14 2 1961 ZAMBIA (empty) Tamara.Hadden@HhOfCtB3Uz3mZC0If.com 2452522 1730.08 +AAAAAAAANHBAAAAA Dr. Colby Robinson N 12 6 1973 PAPUA NEW GUINEA (empty) Colby.Robinson@51vtQ.edu 2452357 7125 +AAAAAAAAOEFAAAAA Ms. Sandra Maynard N 28 10 1946 MALI (empty) Sandra.Maynard@kKFv9OSHkFUc1Xbj.edu 2452331 4316.4 +AAAAAAAAOKIBAAAA Miss Marie Deal N 30 9 1949 ECUADOR (empty) Marie.Deal@8MaBO.edu 2452382 1004.34 +AAAAAAAAOPDBAAAA Dr. Ivy Melton N 22 7 1943 ETHIOPIA (empty) Ivy.Melton@AKZ5R4DBRUL86.edu 2452494 3753.75 +AAAAAAAAPJHBAAAA Sir Philip Hall N 19 9 1950 SYRIAN ARAB REPUBLIC (empty) Philip.Hall@kacXUR.com 2452637 11431.35 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q31.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q31.slt.no new file mode 100644 index 00000000000..e02259a6ac3 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q31.slt.no @@ -0,0 +1,76 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRRRR +WITH ss AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ss_ext_sales_price) AS store_sales + FROM store_sales, + date_dim, + customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year), + ws AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ws_ext_sales_price) AS web_sales + FROM web_sales, + date_dim, + customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year) +SELECT ss1.ca_county , + ss1.d_year , + (ws2.web_sales*1.0000)/ws1.web_sales web_q1_q2_increase , + (ss2.store_sales*1.0000)/ss1.store_sales store_q1_q2_increase , + (ws3.web_sales*1.0000)/ws2.web_sales web_q2_q3_increase , + (ss3.store_sales*1.0000)/ss2.store_sales store_q2_q3_increase +FROM ss ss1 , + ss ss2 , + ss ss3 , + ws ws1 , + ws ws2 , + ws ws3 +WHERE ss1.d_qoy = 1 + AND ss1.d_year = 2000 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2000 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2000 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2000 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2000 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2000 + AND CASE + WHEN ws1.web_sales > 0 THEN (ws2.web_sales*1.0000)/ws1.web_sales + ELSE NULL + END > CASE + WHEN ss1.store_sales > 0 THEN (ss2.store_sales*1.0000)/ss1.store_sales + ELSE NULL + END + AND CASE + WHEN ws2.web_sales > 0 THEN (ws3.web_sales*1.0000)/ws2.web_sales + ELSE NULL + END > CASE + WHEN ss2.store_sales > 0 THEN (ss3.store_sales*1.0000)/ss2.store_sales + ELSE NULL + END +ORDER BY ss1.ca_county; +---- +Cumberland County 2000 1.201799508929 0.813932308885 1.484872872557 1.228181791735 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q32.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q32.slt.no new file mode 100644 index 00000000000..f05313c0011 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q32.slt.no @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query R +SELECT sum(cs_ext_discount_amt) AS "excess discount amount" +FROM catalog_sales , + item , + date_dim +WHERE i_manufact_id = 977 + AND i_item_sk = cs_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk + AND cs_ext_discount_amt > + ( SELECT 1.3 * avg(cs_ext_discount_amt) + FROM catalog_sales , + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk ) +LIMIT 100; +---- +NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q33.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q33.slt.no new file mode 100644 index 00000000000..a6b1b8cf77b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q33.slt.no @@ -0,0 +1,171 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IR +WITH ss AS + ( SELECT i_manufact_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + cs AS + ( SELECT i_manufact_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws AS + ( SELECT i_manufact_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT i_manufact_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100; +---- +21 44.46 +778 65.72 +477 93.92 +192 99.4 +287 130.68 +32 132.32 +702 139.4 +176 251.91 +579 343.61 +82 692.19 +263 693.41 +7 873.9 +118 894.4 +74 948.6 +113 1040.25 +638 1290.76 +55 1389.3 +705 1512.87 +534 1626.92 +394 1764.29 +89 1806.88 +504 1828.2 +578 1918.11 +461 2030.8 +785 2100.64 +224 2207.4 +470 2454.32 +306 2483.98 +191 2570.84 +286 2708.08 +576 2757.12 +590 2781.39 +110 2998.46 +41 3018.6 +385 3101.44 +313 3173.05 +124 3217.32 +747 3395.66 +865 3430.94 +215 3583.36 +392 3613.86 +64 3679.12 +133 3687.48 +25 3835.89 +267 3938.18 +17 4326.52 +331 4533.96 +207 4619.77 +480 4631.28 +740 4700.4 +389 4738.41 +285 4797.58 +36 4797.75 +431 4854.5 +171 5028.4 +594 5040.74 +391 5048.97 +316 5080.36 +182 5479.06 +223 5557.41 +954 5687.59 +553 5694.38 +813 5840.16 +159 5996.42 +100 6198.97 +147 6322.98 +621 6418.44 +105 6976.7 +253 7182.8 +566 7850.59 +886 8270.28 +57 8625.72 +334 8773.06 +185 8860.91 +28 8877.02 +79 9147.83 +289 9233.96 +269 9587.29 +143 9734.86 +227 9736.76 +369 9964.8 +220 10192.12 +251 10198.39 +729 10637.7 +77 10644.62 +255 10672.1 +107 10752.3 +169 10884.81 +503 11030.98 +303 11139.75 +609 11352.32 +154 11375.11 +24 11420.17 +466 11541.13 +559 11641.15 +545 11737.34 +173 11850.25 +9 11857.37 +438 12075.41 +718 12086.07 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q34.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q34.slt.no new file mode 100644 index 00000000000..1e6629b4941 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q34.slt.no @@ -0,0 +1,98 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTII +SELECT c_last_name , + c_first_name , + c_salutation , + c_preferred_cust_flag , + ss_ticket_number , + cnt +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (date_dim.d_dom BETWEEN 1 AND 3 + OR date_dim.d_dom BETWEEN 25 AND 28) + AND (household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'Unknown') + AND household_demographics.hd_vehicle_count > 0 + AND (CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END) > 1.2 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county = 'Williamson County' + GROUP BY ss_ticket_number, + ss_customer_sk) dn, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + c_salutation NULLS FIRST, + c_preferred_cust_flag DESC NULLS FIRST, + ss_ticket_number NULLS FIRST; +---- +NULL NULL NULL Y 13629 15 +NULL Ernestina NULL NULL 224 15 +NULL Steven NULL Y 7453 16 +Austin Isela Dr. N 8049 15 +Barr Kyle Mr. Y 1281 16 +Bennett Gary Mr. N 3324 16 +Boston John Mr. N 8949 16 +Conner Betty Dr. Y 20319 15 +Dabbs Elizabeth Ms. Y 17220 15 +Davis William Sir N 6311 16 +Desjardins Joyce Miss N 20342 15 +Espinoza Michael Sir N 23084 15 +Foster Crystal Miss Y 17471 15 +Garrison Kevin Sir Y 11753 16 +Glover Valerie Miss N 13944 15 +Gonzalez David Dr. Y 14075 15 +Good William Dr. Y 6580 15 +Grant Stephen Mr. Y 60 15 +Hagen Catherine Mrs. Y 18961 15 +Hendrix Nicole Dr. Y 9979 15 +Jensen Ana Ms. N 2490 15 +Johnson Beverly Dr. N 7637 15 +Johnson David Sir N 9370 16 +Johnson Olen Mr. N 12862 16 +Jordan Christopher Mr. N 6941 15 +Lawhorn James Sir Y 5723 15 +Mcgregor Brandon Sir Y 2698 16 +Mcmurray Vincent Dr. Y 17565 15 +Mcpherson Doris Ms. Y 22999 15 +Neal Dave Sir N 18103 15 +Norfleet Ethel Miss N 14366 15 +Pappas Abigail Mrs. N 6954 15 +Paris Danette Mrs. Y 10488 15 +Phifer Karen Ms. N 10643 15 +Reis Graham Dr. N 17491 15 +Robinson Laura Miss Y 11712 15 +Roth Elizabeth Ms. N 7856 16 +Sanchez Cortez Mr. N 11423 15 +Sanchez Edward Dr. Y 12536 15 +Schaefer James Sir Y 10819 16 +Scott Lawrence Dr. N 2730 15 +Smith Terry Dr. N 16945 16 +Snodgrass Andy Mr. N 5587 15 +Spencer Kent Dr. Y 23881 16 +Stanford Kathleen Dr. N 21865 15 +Stinson Rebecca Miss N 5917 16 +Teague Julie Dr. N 11061 15 +Terrell Deborah Mrs. N 15877 15 +Vega Henry Dr. Y 932 16 +Villarreal Gerald Mr. Y 22490 16 +Walker Brandon Dr. Y 16544 15 +Williamson Xiomara Ms. N 15209 16 +Young Robert Sir Y 3829 16 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q35.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q35.slt.no new file mode 100644 index 00000000000..f2ff6e7a300 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q35.slt.no @@ -0,0 +1,165 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIIIRIIIIRIIIIR +SELECT ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + count(*) cnt1, + min(cd_dep_count) min1, + max(cd_dep_count) max1, + avg(cd_dep_count) avg1, + cd_dep_employed_count, + count(*) cnt2, + min(cd_dep_employed_count) min2, + max(cd_dep_employed_count) max2, + avg(cd_dep_employed_count) avg2, + cd_dep_college_count, + count(*) cnt3, + min(cd_dep_college_count), + max(cd_dep_college_count), + avg(cd_dep_college_count) +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4)) +GROUP BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY ca_state NULLS FIRST, + cd_gender NULLS FIRST, + cd_marital_status NULLS FIRST, + cd_dep_count NULLS FIRST, + cd_dep_employed_count NULLS FIRST, + cd_dep_college_count NULLS FIRST +LIMIT 100; +---- +NULL F D 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +NULL F S 5 1 5 5 5 3 1 3 3 3 0 1 0 0 0 +NULL F U 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +NULL F U 3 1 3 3 3 0 1 0 0 0 0 1 0 0 0 +NULL F W 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +NULL F W 0 1 0 0 0 4 1 4 4 4 0 1 0 0 0 +NULL M D 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +NULL M M 5 1 5 5 5 0 1 0 0 0 0 1 0 0 0 +NULL M M 5 1 5 5 5 4 1 4 4 4 0 1 0 0 0 +NULL M U 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +NULL M W 1 1 1 1 1 3 1 3 3 3 0 1 0 0 0 +AK F M 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +AK F S 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +AK F S 2 1 2 2 2 0 1 0 0 0 0 1 0 0 0 +AK F W 5 1 5 5 5 4 1 4 4 4 0 1 0 0 0 +AK M M 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +AK M U 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +AK M W 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +AL F M 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 +AL F S 0 1 0 0 0 4 1 4 4 4 0 1 0 0 0 +AL M U 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +AL M U 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +AR F M 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +AR F S 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +AR F W 1 1 1 1 1 2 1 2 2 2 0 1 0 0 0 +AR M D 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 +AR M M 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +AR M S 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +AR M U 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +AZ F S 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +CA F M 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 +CA F M 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +CA F S 4 1 4 4 4 4 1 4 4 4 0 1 0 0 0 +CA F W 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +CA M D 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 +CA M M 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +CA M S 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +CA M S 5 1 5 5 5 2 1 2 2 2 0 1 0 0 0 +CA M W 2 1 2 2 2 2 1 2 2 2 0 1 0 0 0 +CO F S 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +CO F U 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +CO M S 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +CO M W 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +CO M W 2 1 2 2 2 4 1 4 4 4 0 1 0 0 0 +CT F D 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +DE M U 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +FL F M 5 1 5 5 5 4 1 4 4 4 0 1 0 0 0 +FL F M 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +FL F S 0 1 0 0 0 4 1 4 4 4 0 1 0 0 0 +FL F S 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +FL F U 1 1 1 1 1 2 1 2 2 2 0 1 0 0 0 +FL F W 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +FL M M 1 1 1 1 1 2 1 2 2 2 0 1 0 0 0 +FL M S 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +FL M W 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +GA F D 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +GA F D 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 +GA F D 6 1 6 6 6 2 1 2 2 2 0 1 0 0 0 +GA F M 1 1 1 1 1 3 1 3 3 3 0 1 0 0 0 +GA F M 2 1 2 2 2 4 1 4 4 4 0 1 0 0 0 +GA F M 6 1 6 6 6 2 1 2 2 2 0 1 0 0 0 +GA F S 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 +GA F S 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +GA F S 5 1 5 5 5 0 1 0 0 0 0 1 0 0 0 +GA F U 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +GA F U 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +GA F W 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +GA M D 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +GA M D 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +GA M D 3 1 3 3 3 1 1 1 1 1 0 1 0 0 0 +GA M D 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +GA M D 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +GA M D 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 +GA M M 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +GA M M 2 1 2 2 2 0 1 0 0 0 0 1 0 0 0 +GA M M 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +GA M M 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +GA M M 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +GA M S 1 1 1 1 1 4 1 4 4 4 0 1 0 0 0 +GA M S 3 1 3 3 3 4 1 4 4 4 0 1 0 0 0 +GA M S 5 2 5 5 5 2 2 2 2 2 0 2 0 0 0 +GA M S 5 2 5 5 5 4 2 4 4 4 0 2 0 0 0 +GA M U 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +GA M U 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +GA M U 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +GA M U 4 1 4 4 4 4 1 4 4 4 0 1 0 0 0 +IA F D 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +IA F D 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +IA F M 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +IA F U 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +IA F W 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +IA M D 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +IA M M 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +IA M S 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +IA M S 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +IA M W 6 1 6 6 6 3 1 3 3 3 0 1 0 0 0 +ID F D 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +ID F U 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +ID M D 5 1 5 5 5 0 1 0 0 0 0 1 0 0 0 +ID M U 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q36.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q36.slt.no new file mode 100644 index 00000000000..3819d08677b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q36.slt.no @@ -0,0 +1,163 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RTTII +WITH results AS + (SELECT sum(ss_net_profit) AS ss_net_profit, + sum(ss_ext_sales_price) AS ss_ext_sales_price, + (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin , + i_category , + i_class , + 0 AS g_category, + 0 AS g_class + FROM store_sales , + date_dim d1 , + item , + store + WHERE d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state ='TN' + GROUP BY i_category, + i_class) , + results_rollup AS + (SELECT gross_margin, + i_category, + i_class, + 0 AS t_category, + 0 AS t_class, + 0 AS lochierarchy + FROM results + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + i_category, + NULL AS i_class, + 0 AS t_category, + 1 AS t_class, + 1 AS lochierarchy + FROM results + GROUP BY i_category + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + NULL AS i_category, + NULL AS i_class, + 1 AS t_category, + 1 AS t_class, + 2 AS lochierarchy + FROM results) +SELECT gross_margin, + i_category, + i_class, + lochierarchy, + rank() OVER ( PARTITION BY lochierarchy, + CASE + WHEN t_class = 0 THEN i_category + END + ORDER BY gross_margin ASC) AS rank_within_parent +FROM results_rollup +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN lochierarchy = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +-0.434469026475 NULL NULL 2 1 +-0.475828776562 Women NULL 1 1 +-0.458246876147 Sports NULL 1 2 +-0.455805975339 Jewelry NULL 1 3 +-0.447961782105 Men NULL 1 4 +-0.438980810635 Children NULL 1 5 +-0.435651605411 Home NULL 1 6 +-0.430991667654 Books NULL 1 7 +-0.428809266906 Music NULL 1 8 +-0.41732137988 Shoes NULL 1 9 +-0.367338311814 Electronics NULL 1 10 +-0.232556089253 NULL NULL 1 11 +-0.232556089253 NULL NULL 0 1 +-0.598983790981 Books science 0 1 +-0.565768202116 Books mystery 0 2 +-0.55606221827 Books business 0 3 +-0.531100675491 Books computers 0 4 +-0.463936185539 Books arts 0 5 +-0.455202147234 Books self-help 0 6 +-0.449555663998 Books sports 0 7 +-0.44901805972 Books romance 0 8 +-0.437501500312 Books travel 0 9 +-0.417307725742 Books fiction 0 10 +-0.408355965136 Books reference 0 11 +-0.396665857853 Books cooking 0 12 +-0.388180990665 Books history 0 13 +-0.372703714356 Books home repair 0 14 +-0.364335253755 Books parenting 0 15 +-0.288643090048 Books entertainments 0 16 +-0.510240387418 Children infants 0 1 +-0.46055888886 Children toddlers 0 2 +-0.420076241083 Children newborn 0 3 +-0.380345870298 Children school-uniforms 0 4 +-0.499309653213 Electronics disk drives 0 1 +-0.430748854113 Electronics memory 0 2 +-0.418649293684 Electronics musical 0 3 +-0.406848299097 Electronics monitors 0 4 +-0.406774006758 Electronics dvd/vcr players 0 5 +-0.37872053459 Electronics personal 0 6 +-0.374197836932 Electronics stereo 0 7 +-0.374080848919 Electronics automotive 0 8 +-0.368042870728 Electronics karoke 0 9 +-0.346065633962 Electronics cameras 0 10 +-0.339358077517 Electronics televisions 0 11 +-0.328190385663 Electronics wireless 0 12 +-0.302203829917 Electronics audio 0 13 +-0.294598804446 Electronics camcorders 0 14 +-0.268500518927 Electronics portable 0 15 +-0.200570994472 Electronics scanners 0 16 +-0.635939809062 Home accent 0 1 +-0.500967558081 Home curtains/drapes 0 2 +-0.495468665737 Home mattresses 0 3 +-0.467592363828 Home decor 0 4 +-0.461856127244 Home blinds/shades 0 5 +-0.457653343986 Home glassware 0 6 +-0.447079950686 Home rugs 0 7 +-0.445959061621 Home bedding 0 8 +-0.438498435047 Home lighting 0 9 +-0.408459505463 Home bathroom 0 10 +-0.397691142383 Home wallpaper 0 11 +-0.397322775456 Home tables 0 12 +-0.394587808821 Home kids 0 13 +-0.387894694533 Home flatware 0 14 +-0.387720358857 Home paint 0 15 +-0.363645743026 Home furniture 0 16 +-0.664929567694 Jewelry birdal 0 1 +-0.569887206197 Jewelry earings 0 2 +-0.543894322193 Jewelry rings 0 3 +-0.520182529287 Jewelry custom 0 4 +-0.516388958597 Jewelry semi-precious 0 5 +-0.510318468007 Jewelry estate 0 6 +-0.48257117258 Jewelry consignment 0 7 +-0.481772245218 Jewelry jewelry boxes 0 8 +-0.471554795515 Jewelry womens watch 0 9 +-0.425710554413 Jewelry gold 0 10 +-0.417958838464 Jewelry pendants 0 11 +-0.415190727791 Jewelry costume 0 12 +-0.39096478414 Jewelry diamonds 0 13 +-0.375997361735 Jewelry bracelets 0 14 +-0.357185834414 Jewelry mens watch 0 15 +-0.331918970311 Jewelry loose stones 0 16 +-0.493047364047 Men accessories 0 1 +-0.451488609158 Men sports-apparel 0 2 +-0.443679684076 Men shirts 0 3 +-0.401989316867 Men pants 0 4 +-0.447053682345 Music classical 0 1 +-0.438733197545 Music country 0 2 +-0.436076225056 Music pop 0 3 +-0.399577488076 Music rock 0 4 +-0.455694927992 Shoes womens 0 1 +-0.411889246703 Shoes mens 0 2 +-0.41159860537 Shoes athletic 0 3 +-0.38601251483 Shoes kids 0 4 +-0.579545625622 Sports football 0 1 +-0.553853107998 Sports baseball 0 2 +-0.512010921579 Sports pools 0 3 +-0.492748641754 Sports hockey 0 4 +-0.469098534315 Sports guns 0 5 +-0.467322037629 Sports archery 0 6 +-0.461264696393 Sports sailing 0 7 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q37.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q37.slt.no new file mode 100644 index 00000000000..c21721e1f89 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q37.slt.no @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +SELECT i_item_id, + i_item_desc, + i_current_price +FROM item, + inventory, + date_dim, + catalog_sales +WHERE i_current_price BETWEEN 68 AND 68 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-02-01' AS date) AND cast('2000-04-01' AS date) + AND i_manufact_id IN (677, + 940, + 694, + 808) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND cs_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q38.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q38.slt.no new file mode 100644 index 00000000000..450c7cfd023 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q38.slt.no @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT count(*) +FROM + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 ) hot_cust +LIMIT 100; +---- +1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q39.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q39.slt.no new file mode 100644 index 00000000000..1d8f9e59257 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q39.slt.no @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIRRIIIRR +WITH inv AS + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 THEN NULL + ELSE stdev/mean + END cov + FROM + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand)*1.000 stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year =2001 + GROUP BY w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy) foo + WHERE CASE mean + WHEN 0 THEN 0 + ELSE stdev/mean + END > 1) +SELECT inv1.w_warehouse_sk wsk1, + inv1.i_item_sk isk1, + inv1.d_moy dmoy1, + inv1.mean mean1, + inv1.cov cov1, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy=1 + AND inv2.d_moy=1+1 +ORDER BY inv1.w_warehouse_sk NULLS FIRST, + inv1.i_item_sk NULLS FIRST, + inv1.d_moy NULLS FIRST, + inv1.mean NULLS FIRST, + inv1.cov NULLS FIRST, + inv2.d_moy NULLS FIRST, + inv2.mean NULLS FIRST, + inv2.cov NULLS FIRST; +---- +1 65 1 329.25 1.292295365092 1 65 2 186 1.382894916645 +1 695 1 214 1.019427268721 1 695 2 333 1.336402693182 +1 765 1 289.75 1.212987105095 1 765 2 429 1.176863034422 +1 945 1 304 1.072576935922 1 945 2 364 1.309313105823 +1 1025 1 242.333333333333 1.20525094741 1 1025 2 269.75 1.308783172127 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q4.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q4.slt.no new file mode 100644 index 00000000000..f1d3845121a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q4.slt.no @@ -0,0 +1,124 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTT +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2)) year_total, + 'c' sale_type + FROM customer, + catalog_sales, + date_dim + WHERE c_customer_sk = cs_bill_customer_sk + AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2)) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q40.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q40.slt.no new file mode 100644 index 00000000000..7af8e2a7f88 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q40.slt.no @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRR +SELECT w_state, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_after +FROM catalog_sales +LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) ,warehouse, + item, + date_dim +WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = cs_item_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) +GROUP BY w_state, + i_item_id +ORDER BY w_state, + i_item_id +LIMIT 100; +---- +TN AAAAAAAAABDAAAAA 12.28 23.9 +TN AAAAAAAAAJCAAAAA 0 121.19 +TN AAAAAAAAAPBAAAAA 0 44.76 +TN AAAAAAAABKFAAAAA 238.3 20.22 +TN AAAAAAAACAAAAAAA 7.78 17.73 +TN AAAAAAAACBFAAAAA 17.27 220.95 +TN AAAAAAAACEEAAAAA 12.86 113.03 +TN AAAAAAAACFEAAAAA -3163.09 13.2 +TN AAAAAAAACLGAAAAA 0 66.56 +TN AAAAAAAACNFAAAAA 30.24 99.47 +TN AAAAAAAADEAAAAAA 357 0 +TN AAAAAAAADMBAAAAA 68.63 -13.91 +TN AAAAAAAAEFFAAAAA -73.34 -2738.43 +TN AAAAAAAAEKCAAAAA -75.59 84.82 +TN AAAAAAAAEMEAAAAA 0 108.2 +TN AAAAAAAAENDAAAAA -339.8 0 +TN AAAAAAAAEPDAAAAA -34.52 28.56 +TN AAAAAAAAFCGAAAAA 221.86 0 +TN AAAAAAAAFJFAAAAA 154.77 0 +TN AAAAAAAAGIGAAAAA 27.5 24.07 +TN AAAAAAAAGJFAAAAA 30.52 406.3 +TN AAAAAAAAGKGAAAAA 0 154.51 +TN AAAAAAAAGMBAAAAA 0 326.69 +TN AAAAAAAAGNBAAAAA 138.48 53.25 +TN AAAAAAAAHDAAAAAA 0 220.95 +TN AAAAAAAAHGDAAAAA 44.97 0 +TN AAAAAAAAHOEAAAAA 92.18 21.32 +TN AAAAAAAAJAEAAAAA 53.62 339.8 +TN AAAAAAAAKJAAAAAA 80.5 0 +TN AAAAAAAAMBAAAAAA 9.48 137.1 +TN AAAAAAAAMJCAAAAA 0 102.23 +TN AAAAAAAAMJEAAAAA 235.46 214.73 +TN AAAAAAAANEFAAAAA 0 -239.07 +TN AAAAAAAANGDAAAAA 240.25 43.14 +TN AAAAAAAANJGAAAAA 0 30.96 +TN AAAAAAAANNCAAAAA 195.54 47.16 +TN AAAAAAAAOEBAAAAA 129.5 -5001.15 +TN AAAAAAAAOFDAAAAA 37.64 46.01 +TN AAAAAAAAOGAAAAAA 0 -146.42 +TN AAAAAAAAOHEAAAAA 32.86 246.19 +TN AAAAAAAAOOEAAAAA 115.99 1.02 +TN AAAAAAAAPAEAAAAA 0 5.88 +TN AAAAAAAAPHDAAAAA 0 -173.75 +TN AAAAAAAAPKAAAAAA 13 -102.11 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q41.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q41.slt.no new file mode 100644 index 00000000000..1327f42da2a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q41.slt.no @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query T +SELECT distinct(i_product_name) +FROM item i1 +WHERE i_manufact_id BETWEEN 738 AND 738+40 + AND + (SELECT count(*) AS item_cnt + FROM item + WHERE (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'powder' + OR i_color = 'khaki') + AND (i_units = 'Ounce' + OR i_units = 'Oz') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'brown' + OR i_color = 'honeydew') + AND (i_units = 'Bunch' + OR i_units = 'Ton') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'floral' + OR i_color = 'deep') + AND (i_units = 'N/A' + OR i_units = 'Dozen') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'light' + OR i_color = 'cornflower') + AND (i_units = 'Box' + OR i_units = 'Pound') + AND (i_size = 'medium' + OR i_size = 'extra large')))) + OR (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'midnight' + OR i_color = 'snow') + AND (i_units = 'Pallet' + OR i_units = 'Gross') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'cyan' + OR i_color = 'papaya') + AND (i_units = 'Cup' + OR i_units = 'Dram') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'orange' + OR i_color = 'frosted') + AND (i_units = 'Each' + OR i_units = 'Tbl') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'forest' + OR i_color = 'ghost') + AND (i_units = 'Lb' + OR i_units = 'Bundle') + AND (i_size = 'medium' + OR i_size = 'extra large'))))) > 0 +ORDER BY i_product_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q42.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q42.slt.no new file mode 100644 index 00000000000..600a41f3aca --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q42.slt.no @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IITR +SELECT dt.d_year, + item.i_category_id, + item.i_category, + sum(ss_ext_sales_price) +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_category_id, + item.i_category +ORDER BY sum(ss_ext_sales_price) DESC,dt.d_year, + item.i_category_id, + item.i_category +LIMIT 100 ; +---- +2000 1 Women 63812.81 +2000 7 Home 62722.51 +2000 10 Electronics 50665.69 +2000 4 Shoes 22016.68 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q43.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q43.slt.no new file mode 100644 index 00000000000..dc1420d62aa --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q43.slt.no @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRRRRRR +SELECT s_store_name, + s_store_id, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales +FROM date_dim, + store_sales, + store +WHERE d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2000 +GROUP BY s_store_name, + s_store_id +ORDER BY s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +LIMIT 100; +---- +ought AAAAAAAABAAAAAAA 319804.54 296307.06 259842.94 273019.09 280288.93 307104.57 302928.29 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q44.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q44.slt.no new file mode 100644 index 00000000000..c3ca1bd34ab --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q44.slt.no @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITT +SELECT asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col ASC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V1)V11 + WHERE rnk < 11) asceding, + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col DESC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V2)V21 + WHERE rnk < 11) descending, + item i1, + item i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk=asceding.item_sk + AND i2.i_item_sk=descending.item_sk +ORDER BY asceding.rnk +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q45.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q45.slt.no new file mode 100644 index 00000000000..9691bd13a1c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q45.slt.no @@ -0,0 +1,70 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +SELECT ca_zip, + ca_city, + sum(ws_sales_price) +FROM web_sales, + customer, + customer_address, + date_dim, + item +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND (SUBSTRING(ca_zip,1,5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_item_sk IN (2, + 3, + 5, + 7, + 11, + 13, + 17, + 19, + 23, + 29) )) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip, + ca_city +ORDER BY ca_zip, + ca_city +LIMIT 100; +---- +23394 Florence 4.18 +23683 Plainview 203.23 +25752 Buena Vista 46.23 +26871 Wildwood 24.38 +26971 Wilson 6.48 +29843 Oakland 37.73 +31087 Macedonia 42.77 +41711 Unionville 39.36 +49843 Oakland 26.87 +51904 Midway 14.6 +54098 Woodlawn 3.85 +55124 Valley View 20.92 +56098 Five Points 93.57 +59858 Springtown 9.93 +60150 Bunker Hill 92.31 +62297 Freeman 10.94 +62808 Hamilton 70.32 +64107 Concord 1.91 +68339 Whitney 38.48 +69454 Highland 117.73 +71904 Midway 13.34 +76614 Providence 43.1 +NULL Waterloo 139.85 +NULL NULL 57.21 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q46.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q46.slt.no new file mode 100644 index 00000000000..18c78bd6435 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q46.slt.no @@ -0,0 +1,151 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIRR +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_dow IN (6, + 0) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + ca_city NULLS FIRST, + bought_city NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +NULL NULL Buena Vista Glenwood 12284 2163.44 -3739.04 +NULL NULL Centerville Forest Hills 3520 0 -1631.59 +NULL NULL Crossroads Farmington 18934 0 -6281.06 +NULL NULL Five Forks Pleasant Valley 23455 6847.18 -1936.07 +NULL NULL Forest Hills Calhoun 22575 629.49 -1503.21 +NULL NULL Green Acres Newport 18435 0 -1666.8 +NULL NULL Hillcrest Mount Zion 7114 910.74 -9461.37 +NULL NULL La Grange Spring Hill 11043 930.4 -10220.99 +NULL NULL Lincoln Highland 634 2760.16 -16172.15 +NULL NULL New Hope Centerville 18350 1744.71 -435.66 +NULL NULL Newtown Fairfield 1911 607.52 -8326.91 +NULL NULL Red Hill Church Hill 8226 3762.91 -15562.55 +NULL NULL Red Hill Pine Grove 3820 570.14 -17150.79 +NULL NULL Richville Spring Hill 21507 490.1 -17662.54 +NULL NULL Riverview Glenwood 22782 14674.06 -9106.01 +NULL NULL Roy Oak Ridge 5622 2451.45 -4929.45 +NULL NULL Springdale Harmony 8257 3136.43 -10364.95 +NULL NULL Summerfield Glendale 16640 4954.16 -754.09 +NULL NULL Valley View Ashland 5867 68.91 -3174.13 +NULL Ada Pine Grove Omega 20115 1910.76 -7899.03 +NULL Amber Ellisville Mount Pleasant 13631 11191.03 -6131.58 +NULL Brenda Wildwood Lakewood 1459 2905.56 -610.21 +NULL Debbie Red Hill Franklin 214 1950.49 -9630.83 +NULL Fernando Union Hill Salem 14552 9876.31 -15483.65 +NULL James Georgetown Marion 23389 5862.88 -16131.8 +NULL Janet Springfield Brownsville 6476 201.12 425.51 +NULL Julia Wilson Oakland 6149 3014.08 -11906.59 +NULL Omar Forest Hills Springdale 8907 3059.08 -14898.65 +NULL Steven Millwood Jamestown 7076 0 -5335.22 +NULL Susanne Marion Jones 6196 1240.86 -20625.41 +NULL Timothy Five Points Cedar Grove 10707 1724.86 -6095.1 +NULL Timothy Woodland Mountain View 10813 1500.3 -5139.84 +NULL William Summit New Hope 14928 0 -18318.3 +Abbott Frederick Highland Enterprise 7247 7023.24 -10956.48 +Ackerman Ruth Brownsville Unionville 21518 4231.54 -10848.22 +Acosta Albert Kingston Bunker Hill 10218 1306.1 -8877.65 +Adair Kimberly Ferguson Newtown 6887 6230.72 -3373.41 +Adair Martin Highland Pine Grove 11922 2192.73 -7876.17 +Adams Bryan Waterloo Newtown 20839 12675 -18599.52 +Adkins Christopher Maple Grove Marion 23357 66.01 147.71 +Agee Susanne Roxbury Springfield 16207 566.53 -13045.38 +Aguilar Lorena Warwick Oak Grove 17579 0 -11029.4 +Ahmed David Sunnyside Shiloh 13064 413.19 -8728.65 +Akers James Lakeside Pleasant Hill 6418 0 -8187.62 +Albright Susan Lone Pine Jamestown 6815 508.72 -13905.25 +Albright Vincent Wright Newport 7278 1318.49 -3740.79 +Alexander Harry Liberty Bethel 491 831.42 6462.24 +Allen Mark Jamestown Crossroads 2988 3977.68 -11662.4 +Allred Jacob Springfield Pleasant Grove 19937 1719.34 -17046.91 +Alvarado Richard Lincoln Wilson 13536 1841.63 -5299 +Alvarez William Oakwood Union Hill 14638 499.81 -357.03 +Andrews Betty Oakwood Clifton 2955 172.17 -8043.76 +Andrews Jason New Hope Pleasant Grove 11684 1057.37 -7631.03 +Andrews Judith Mount Zion Springdale 7769 224.45 -8810.09 +Angel Flora Newport Oakland 22029 192.51 -4401.51 +Armstrong Kraig Pleasant Hill Newport 18363 188.32 -6656.84 +Arnold Xiomara Lakeview Enterprise 22713 3371.3 -18443.42 +Arthur Nancy Spring Valley Pleasant Valley 1023 2010.2 -9959.13 +Bailey Margie Lakeside Fox 8684 114.97 -17117.78 +Bailey Monica Jackson Pleasant Grove 17159 2721.44 -4088.51 +Baird Maryellen Highland Park Forest Hills 10556 3456.31 -20467.73 +Baker Micheal Springdale Midway 6000 2042.61 -3990.39 +Baldwin Laura Red Hill Arlington 18402 2022 -13553.2 +Banks Raul Lakeview Hamilton 16201 232.65 -3575.46 +Banks Sean Maple Grove Brookwood 13592 5045.77 -6741.75 +Barba William Providence Valley View 113 851.2 -10378.29 +Barnes Janie Fairfield Sulphur Springs 2717 673.94 -9185.13 +Barnes Joseph Crossroads Newtown 1346 0 -274.31 +Barnes June Sulphur Springs Bunker Hill 14593 3248.21 -5962.1 +Barrett Amy Lakeview Pleasant Hill 142 1055.09 -16700.22 +Barrett Bree Brownsville Fairview 23279 0 -9152.08 +Barrett Bree Brownsville White Oak 20932 528.31 -14848.87 +Barrett Manuel Walnut Grove Oak Grove 820 570.84 -11833.63 +Barton Sharon Oak Ridge Greenwood 12022 909.08 -14795.03 +Bassett Rhonda Oakwood Greenwood 10931 1797.99 -24692.83 +Battles Leon Midway Woodlawn 6589 1200.28 -6963.48 +Beatty Margie Five Forks Mount Vernon 13799 367.9 -8157.69 +Beatty Michael Green Acres Mount Vernon 3941 1916.94 -9487.78 +Beaulieu Randy Bridgeport Jamestown 20245 2618.65 -10946.51 +Beck Charles Oakdale Fairfield 3561 445.34 -22623.89 +Becker Freda Brownsville Kingston 12264 4369.86 -6501.12 +Bell Lorrie Union Stringtown 1399 733.85 -10333.35 +Bell Walter Langdon Liberty 16574 3553.28 -8663.36 +Belt NULL Unionville Pleasant Hill 12303 0 -5524 +Bennett Grant Newport Ellsworth 20005 5586.25 -9452.98 +Bennett Zack Wilson Liberty 16030 99.46 -2187.16 +Berg William Pleasant Hill Harmony 3728 3725.08 -9496.92 +Bernhardt Sanford Green Acres Fairfield 21871 974.9 -8991.77 +Berry Gary Jackson Cedar Grove 20851 2698.25 -16539.56 +Bess Leah Maple Grove Arlington 21092 1309.71 -9879 +Betz Adriene Union Welcome 8185 328.05 -9963.52 +Billings Dorothy Brownsville Green Acres 6074 551.62 -10045.52 +Billings Dorothy Brownsville Wilson 9167 1987.15 -3076.21 +Billingsley Robert Belmont Arlington 23527 1487.14 -3309.37 +Bills Robert Bethel Jamestown 15677 0 3983.27 +Bishop NULL New Hope Lakeview 11334 980.68 -9870.02 +Black Annmarie Allentown Pine Grove 11633 154.78 -5899.95 +Blackburn Mildred Sulphur Springs Marion 21601 612.14 -22218.57 +Blanchard Phillip Pine Grove Centerville 3681 5001.25 -9739.55 +Blankenship George Hillcrest Mount Vernon 9480 4370.75 -129.34 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q47.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q47.slt.no new file mode 100644 index 00000000000..47e88859137 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q47.slt.no @@ -0,0 +1,176 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIIRRRR +WITH v1 AS + (SELECT i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name + ORDER BY d_year, + d_moy) rn + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.s_store_name, + v1.s_company_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +LIMIT 100; +---- +Shoes edu packedu pack #1 ought Unknown 1999 5 4116.620833 1721.48 2369.4 1917.82 +Shoes edu packedu pack #1 ought Unknown 1999 6 4116.620833 1917.82 1721.48 2444.59 +Shoes exportiedu pack #1 ought Unknown 1999 7 3576.660833 1508.8 2037.73 4505.32 +Women edu packamalg #1 ought Unknown 1999 2 3033.499166 978.11 2013.85 1677.02 +Shoes exportiedu pack #1 ought Unknown 1999 5 3576.660833 1604.87 2728.68 2037.73 +Music amalgscholar #1 ought Unknown 1999 3 3433.143333 1469.95 1713.01 2433.38 +Men edu packimporto #1 ought Unknown 1999 3 3302.805 1377.07 1878.55 1780.09 +Shoes exportiedu pack #1 ought Unknown 1999 2 3576.660833 1776.8 2307.4 1878.08 +Women exportiamalg #1 ought Unknown 1999 2 2732.193333 970.66 2187.1 1793.52 +Shoes edu packedu pack #1 ought Unknown 1999 4 4116.620833 2369.4 2400.75 1721.48 +Music amalgscholar #1 ought Unknown 1999 2 3433.143333 1713.01 1765.61 1469.95 +Shoes edu packedu pack #1 ought Unknown 1999 3 4116.620833 2400.75 2553.31 2369.4 +Men edu packimporto #1 ought Unknown 1999 7 3302.805 1594.86 1958.97 4395.44 +Shoes exportiedu pack #1 ought Unknown 1999 3 3576.660833 1878.08 1776.8 2728.68 +Men exportiimporto #1 ought Unknown 1999 7 3163.518333 1478.39 1963.11 3334.39 +Shoes edu packedu pack #1 ought Unknown 1999 7 4116.620833 2444.59 1917.82 4874.96 +Music amalgscholar #1 ought Unknown 1999 5 3433.143333 1763.16 2433.38 2452.53 +Music amalgscholar #1 ought Unknown 1999 1 3433.143333 1765.61 5555.25 1713.01 +Music amalgscholar #1 ought Unknown 1999 7 3433.143333 1839.5 2452.53 5068.03 +Shoes edu packedu pack #1 ought Unknown 1999 2 4116.620833 2553.31 3507.08 2400.75 +Women edu packamalg #1 ought Unknown 1999 6 3033.499166 1473.18 1779.46 1934.87 +Shoes exportiedu pack #1 ought Unknown 1999 6 3576.660833 2037.73 1604.87 1508.8 +Men amalgimporto #1 ought Unknown 1999 3 2364.726666 838.7 1096.16 2047.58 +Men edu packimporto #1 ought Unknown 1999 4 3302.805 1780.09 1377.07 2634.25 +Women exportiamalg #1 ought Unknown 1999 7 2732.193333 1212.39 1698.72 3133.82 +Children edu packexporti #1 ought Unknown 1999 6 2566.9225 1068.37 1125.06 1363.64 +Women importoamalg #1 ought Unknown 1999 4 3121.743333 1631.76 1743.6 1682.46 +Women amalgamalg #1 ought Unknown 1999 3 2408.735833 923.47 1422.83 1540.59 +Women importoamalg #2 ought Unknown 1999 6 1954.251666 478.71 1463.55 990.28 +Children exportiexporti #1 ought Unknown 1999 1 3373.075 1917.84 6975.77 1968.22 +Children edu packexporti #1 ought Unknown 1999 5 2566.9225 1125.06 1966.28 1068.37 +Women importoamalg #1 ought Unknown 1999 5 3121.743333 1682.46 1631.76 2201.32 +Women amalgamalg #1 ought Unknown 1999 6 2408.735833 982.71 1184.1 1448.62 +Men edu packimporto #1 ought Unknown 1999 2 3302.805 1878.55 1919.78 1377.07 +Children exportiexporti #1 ought Unknown 1999 5 3373.075 1953.17 2256.46 2017.46 +Children exportiexporti #1 ought Unknown 1999 2 3373.075 1968.22 1917.84 2068.39 +Women importoamalg #1 ought Unknown 1999 2 3121.743333 1721.46 1919.41 1743.6 +Women importoamalg #1 ought Unknown 1999 7 3121.743333 1734.86 2201.32 3340.17 +Men edu packimporto #1 ought Unknown 1999 1 3302.805 1919.78 8109.4 1878.55 +Music exportischolar #1 ought Unknown 1999 6 1677.065833 298.64 498.07 697.1 +Women importoamalg #1 ought Unknown 1999 3 3121.743333 1743.6 1721.46 1631.76 +Music exportischolar #2 ought Unknown 1999 5 2284.681666 909.79 1529.36 1574.62 +Women edu packamalg #1 ought Unknown 1999 3 3033.499166 1677.02 978.11 2034.4 +Children exportiexporti #1 ought Unknown 1999 6 3373.075 2017.46 1953.17 2039.09 +Men edu packimporto #1 ought Unknown 1999 6 3302.805 1958.97 2634.25 1594.86 +Children exportiexporti #1 ought Unknown 1999 7 3373.075 2039.09 2017.46 4046.08 +Women exportiamalg #1 ought Unknown 1999 5 2732.193333 1401.28 1658.5 1698.72 +Children edu packexporti #1 ought Unknown 1999 2 2566.9225 1240.8 1784.55 1627.55 +Music importoscholar #1 ought Unknown 1999 6 2711.780833 1390.45 1593.37 1570.65 +Men amalgimporto #1 ought Unknown 1999 7 2364.726666 1044.63 1255.98 3330.93 +Music importoscholar #1 ought Unknown 1999 2 2711.780833 1399.2 2164.06 1502.8 +Men exportiimporto #1 ought Unknown 1999 1 3163.518333 1853.46 6222.76 1970.72 +Children exportiexporti #1 ought Unknown 1999 3 3373.075 2068.39 1968.22 2256.46 +Music exportischolar #2 ought Unknown 1999 7 2284.681666 1011.37 1574.62 2878.51 +Shoes exportiedu pack #1 ought Unknown 1999 1 3576.660833 2307.4 7847.32 1776.8 +Men amalgimporto #1 ought Unknown 1999 2 2364.726666 1096.16 1751.52 838.7 +Children importoexporti #1 ought Unknown 1999 7 2470.683333 1203.14 1669.02 3717.92 +Children importoexporti #1 ought Unknown 1999 4 2470.683333 1208.04 1407.82 1731.31 +Women edu packamalg #1 ought Unknown 1999 5 3033.499166 1779.46 2034.4 1473.18 +Shoes importoedu pack #1 ought Unknown 1999 5 2246.6575 995.49 1242.45 1203.31 +Shoes amalgedu pack #1 ought Unknown 1999 6 2763.523333 1518.47 1609.16 1742.8 +Shoes importoedu pack #1 ought Unknown 1999 2 2246.6575 1006.72 1629.79 1074.01 +Music exportischolar #2 ought Unknown 1999 2 2284.681666 1046.7 2083.06 1254.12 +Children amalgexporti #1 ought Unknown 1999 2 1834.265833 596.49 1197.67 641.06 +Men importoimporto #1 ought Unknown 1999 7 2423.258333 1188.25 1549.04 2064.33 +Men exportiimporto #1 ought Unknown 1999 3 3163.518333 1929.66 1970.72 2080.29 +Women amalgamalg #1 ought Unknown 1999 5 2408.735833 1184.1 1540.59 982.71 +Men edu packimporto #2 ought Unknown 1999 7 1813.949166 594.63 1431.23 2420.18 +Music importoscholar #1 ought Unknown 1999 3 2711.780833 1502.8 1399.2 1508.86 +Children edu packexporti #1 ought Unknown 1999 7 2566.9225 1363.64 1068.37 2655.88 +Music importoscholar #1 ought Unknown 1999 4 2711.780833 1508.86 1502.8 1593.37 +Women importoamalg #1 ought Unknown 1999 1 3121.743333 1919.41 7169.52 1721.46 +Men exportiimporto #1 ought Unknown 1999 6 3163.518333 1963.11 2061.87 1478.39 +Shoes amalgedu pack #1 ought Unknown 1999 3 2763.523333 1565.92 1795.98 2113.68 +Children amalgexporti #1 ought Unknown 1999 3 1834.265833 641.06 596.49 1396.79 +Men exportiimporto #1 ought Unknown 1999 2 3163.518333 1970.72 1853.46 1929.66 +Music exportischolar #1 ought Unknown 1999 5 1677.065833 498.07 756.28 298.64 +Shoes importoedu pack #1 ought Unknown 1999 3 2246.6575 1074.01 1006.72 1242.45 +Shoes amalgedu pack #1 ought Unknown 1999 5 2763.523333 1609.16 2113.68 1518.47 +Music importoscholar #1 ought Unknown 1999 7 2711.780833 1570.65 1390.45 3848.81 +Children amalgexporti #2 ought Unknown 1999 2 1976.9325 846.17 1902.25 1334.69 +Music importoscholar #1 ought Unknown 1999 5 2711.780833 1593.37 1508.86 1390.45 +Children exportiexporti #1 ought Unknown 1999 4 3373.075 2256.46 2068.39 1953.17 +Men amalgimporto #1 ought Unknown 1999 6 2364.726666 1255.98 1558.69 1044.63 +Men exportiimporto #1 ought Unknown 1999 5 3163.518333 2061.87 2080.29 1963.11 +Women edu packamalg #1 ought Unknown 1999 7 3033.499166 1934.87 1473.18 3521.29 +Men exportiimporto #1 ought Unknown 1999 4 3163.518333 2080.29 1929.66 2061.87 +Women exportiamalg #1 ought Unknown 1999 4 2732.193333 1658.5 1793.52 1401.28 +Children importoexporti #1 ought Unknown 1999 3 2470.683333 1407.82 1465.6 1208.04 +Women amalgamalg #1 ought Unknown 1999 1 2408.735833 1354.43 4142.88 1422.83 +Shoes importoedu pack #1 ought Unknown 1999 6 2246.6575 1203.31 995.49 1464.63 +Women exportiamalg #2 ought Unknown 1999 7 1477.330833 440.05 624.12 1584.91 +Women exportiamalg #1 ought Unknown 1999 6 2732.193333 1698.72 1401.28 1212.39 +Music exportischolar #2 ought Unknown 1999 3 2284.681666 1254.12 1046.7 1529.36 +Shoes amalgedu pack #1 ought Unknown 1999 7 2763.523333 1742.8 1518.47 3530.24 +Women edu packamalg #1 ought Unknown 1999 1 3033.499166 2013.85 5132.85 978.11 +Men importoimporto #1 ought Unknown 1999 3 2423.258333 1406.02 1507.7 1893.82 +Men importoimporto #1 ought Unknown 1999 5 2423.258333 1411.01 1893.82 1549.04 +Women importoamalg #2 ought Unknown 1999 2 1954.251666 942.06 1360.69 1183.95 +Children importoexporti #1 ought Unknown 1999 2 2470.683333 1465.6 1770.51 1407.82 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q48.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q48.slt.no new file mode 100644 index 00000000000..35ebec4a3bc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q48.slt.no @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT SUM (ss_quantity) +FROM store_sales, + store, + customer_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2000 + AND ((cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = '4 yr Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 150.00 AND 200.00)) + AND ((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('CO', + 'OH', + 'TX') + AND ss_net_profit BETWEEN 0 AND 2000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', + 'MN', + 'KY') + AND ss_net_profit BETWEEN 150 AND 3000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', + 'CA', + 'MS') + AND ss_net_profit BETWEEN 50 AND 25000)) ; +---- +2228 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q49.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q49.slt.no new file mode 100644 index 00000000000..d67aec4ed3d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q49.slt.no @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRII +SELECT channel, + item, + return_ratio, + return_rank, + currency_rank +FROM + (SELECT 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT ws.ws_item_sk AS item, + (cast(sum(coalesce(wr.wr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(wr.wr_return_amt,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM web_sales ws + LEFT OUTER JOIN web_returns wr ON (ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk) ,date_dim + WHERE wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY ws.ws_item_sk) in_web) web + WHERE (web.return_rank <= 10 + OR web.currency_rank <= 10) + UNION SELECT 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT cs.cs_item_sk AS item, + (cast(sum(coalesce(cr.cr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(cr.cr_return_amount,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM catalog_sales cs + LEFT OUTER JOIN catalog_returns cr ON (cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk) ,date_dim + WHERE cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY cs.cs_item_sk) in_cat) CATALOG + WHERE (catalog.return_rank <= 10 + OR catalog.currency_rank <=10) + UNION SELECT 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT sts.ss_item_sk AS item, + (cast(sum(coalesce(sr.sr_return_quantity,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(sr.sr_return_amt,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM store_sales sts + LEFT OUTER JOIN store_returns sr ON (sts.ss_ticket_number = sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk) ,date_dim + WHERE sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY sts.ss_item_sk) in_store) store + WHERE (store.return_rank <= 10 + OR store.currency_rank <= 10) ) sq1 +ORDER BY 1 NULLS FIRST, + 4 NULLS FIRST, + 5 NULLS FIRST, + 2 NULLS FIRST +LIMIT 100; +---- +web 1611 0.75280898 1 2 +web 1045 0.79487179 2 1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q5.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q5.slt.no new file mode 100644 index 00000000000..72ed2fc2350 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q5.slt.no @@ -0,0 +1,217 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRR +WITH ssr AS + (SELECT s_store_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM store_sales + UNION ALL SELECT sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns ) salesreturns, + date_dim, + store + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND store_sk = s_store_sk + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM catalog_sales + UNION ALL SELECT cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns ) salesreturns, + date_dim, + catalog_page + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM web_sales + UNION ALL SELECT ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN web_sales ON (wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) ) salesreturns, + date_dim, + web_site + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', s_store_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', cp_catalog_page_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +NULL NULL 11618746.33 335308.14 -3094720.61 +catalog channel NULL 3925834.42 104776.72 -421650.05 +catalog channel catalog_pageAAAAAAAAAAABAAAA 19041.32 0 786.73 +catalog channel catalog_pageAAAAAAAAABABAAAA 24914.16 0 5846.18 +catalog channel catalog_pageAAAAAAAAACABAAAA 2281.94 0 259.4 +catalog channel catalog_pageAAAAAAAAADABAAAA 8359.08 0 1573.58 +catalog channel catalog_pageAAAAAAAAADCBAAAA 6364.16 0 -2059.39 +catalog channel catalog_pageAAAAAAAAAEABAAAA 1933.55 0 -421.15 +catalog channel catalog_pageAAAAAAAAAECBAAAA 31132.37 0 8356.46 +catalog channel catalog_pageAAAAAAAAAEPAAAAA 0 687.28 -90.55 +catalog channel catalog_pageAAAAAAAAAFABAAAA 4682.13 0 1082.62 +catalog channel catalog_pageAAAAAAAAAGABAAAA 9036.58 0 -1453.81 +catalog channel catalog_pageAAAAAAAAAGCBAAAA 8079.39 0 -426.98 +catalog channel catalog_pageAAAAAAAAAHABAAAA 6183.42 0 -4382.22 +catalog channel catalog_pageAAAAAAAAAHCBAAAA 5076.12 0 -2793.16 +catalog channel catalog_pageAAAAAAAAAICBAAAA 2534.76 0 -464.74 +catalog channel catalog_pageAAAAAAAAAIPAAAAA 0 524.46 -83.78 +catalog channel catalog_pageAAAAAAAAAJCBAAAA 17905.31 0 2331.19 +catalog channel catalog_pageAAAAAAAAAKCBAAAA 1214.1 0 161.02 +catalog channel catalog_pageAAAAAAAAAKPAAAAA 9795.94 0 -5795.1 +catalog channel catalog_pageAAAAAAAAALPAAAAA 16689.97 0 377.9 +catalog channel catalog_pageAAAAAAAAAMPAAAAA 10628.34 0 -603.7 +catalog channel catalog_pageAAAAAAAAANPAAAAA 30027.4 0 11398.77 +catalog channel catalog_pageAAAAAAAAAOCBAAAA 39.3 0 1.07 +catalog channel catalog_pageAAAAAAAAAOPAAAAA 11614.92 0 2812.21 +catalog channel catalog_pageAAAAAAAAAPPAAAAA 21830.23 0 572.31 +catalog channel catalog_pageAAAAAAAABAABAAAA 10333.03 0 -1079.35 +catalog channel catalog_pageAAAAAAAABBABAAAA 14158.73 0 -9230.46 +catalog channel catalog_pageAAAAAAAABCABAAAA 16263.06 0 10433.19 +catalog channel catalog_pageAAAAAAAABDABAAAA 1142.62 0 -296.6 +catalog channel catalog_pageAAAAAAAABDCBAAAA 15960.27 0 7504.69 +catalog channel catalog_pageAAAAAAAABEABAAAA 6800.34 0 188.15 +catalog channel catalog_pageAAAAAAAABECBAAAA 4269.87 0 -917.17 +catalog channel catalog_pageAAAAAAAABFABAAAA 17333 0 -5799.62 +catalog channel catalog_pageAAAAAAAABFCBAAAA 17544.18 0 3644.23 +catalog channel catalog_pageAAAAAAAABGABAAAA 3569.18 0 -2464.68 +catalog channel catalog_pageAAAAAAAABGCBAAAA 10638.65 0 1393.77 +catalog channel catalog_pageAAAAAAAABHABAAAA 4545.92 0 -3475.53 +catalog channel catalog_pageAAAAAAAABHCBAAAA 10491.72 0 -950.58 +catalog channel catalog_pageAAAAAAAABHPAAAAA 0 90.9 -124.21 +catalog channel catalog_pageAAAAAAAABICBAAAA 2761.48 0 -2686.99 +catalog channel catalog_pageAAAAAAAABKPAAAAA 61735.94 0 15875.5 +catalog channel catalog_pageAAAAAAAABLPAAAAA 8065.81 0 2076.66 +catalog channel catalog_pageAAAAAAAABMCBAAAA 350.03 0 -656.75 +catalog channel catalog_pageAAAAAAAABMPAAAAA 17851.64 0 -5809.59 +catalog channel catalog_pageAAAAAAAABNPAAAAA 31048.77 0 -1224.41 +catalog channel catalog_pageAAAAAAAABOPAAAAA 14341.52 0 -3787.71 +catalog channel catalog_pageAAAAAAAABPPAAAAA 4317.54 0 -1427.57 +catalog channel catalog_pageAAAAAAAACAABAAAA 28325.05 0 -2920.19 +catalog channel catalog_pageAAAAAAAACBABAAAA 5077.04 0 -3077.25 +catalog channel catalog_pageAAAAAAAACCABAAAA 13372.36 0 3119.5 +catalog channel catalog_pageAAAAAAAACDABAAAA 120.72 0 -1.98 +catalog channel catalog_pageAAAAAAAACDCBAAAA 20966.76 0 3090.22 +catalog channel catalog_pageAAAAAAAACDPAAAAA 0 1629.11 -253.45 +catalog channel catalog_pageAAAAAAAACEABAAAA 23166.99 0 -3952.97 +catalog channel catalog_pageAAAAAAAACECBAAAA 2210.4 0 -1749.84 +catalog channel catalog_pageAAAAAAAACFABAAAA 2075.35 0 -7759.16 +catalog channel catalog_pageAAAAAAAACFCBAAAA 4374.82 0 -1421.11 +catalog channel catalog_pageAAAAAAAACFPAAAAA 0 731.49 -3423.57 +catalog channel catalog_pageAAAAAAAACGABAAAA 8876.43 0 -5260.38 +catalog channel catalog_pageAAAAAAAACGCBAAAA 11264.35 0 3239.43 +catalog channel catalog_pageAAAAAAAACHABAAAA 17592.86 0 3030.78 +catalog channel catalog_pageAAAAAAAACHCBAAAA 16196.02 0 -1218.99 +catalog channel catalog_pageAAAAAAAACICBAAAA 22293.71 0 2662.41 +catalog channel catalog_pageAAAAAAAACJPAAAAA 0 6565.74 -4179.85 +catalog channel catalog_pageAAAAAAAACKCBAAAA 6928.74 0 -4736.07 +catalog channel catalog_pageAAAAAAAACKPAAAAA 41882.94 0 13233.79 +catalog channel catalog_pageAAAAAAAACLPAAAAA 16274.85 0 2433.61 +catalog channel catalog_pageAAAAAAAACMPAAAAA 10852.57 0 -7085.55 +catalog channel catalog_pageAAAAAAAACNPAAAAA 2411.46 0 -3739.11 +catalog channel catalog_pageAAAAAAAACOPAAAAA 32284.54 0 2879.38 +catalog channel catalog_pageAAAAAAAACPCBAAAA 318.16 0 -20.4 +catalog channel catalog_pageAAAAAAAACPPAAAAA 11701.87 0 -5867.55 +catalog channel catalog_pageAAAAAAAADAABAAAA 24931.08 0 1426.83 +catalog channel catalog_pageAAAAAAAADBABAAAA 9594.86 0 -518.2 +catalog channel catalog_pageAAAAAAAADCABAAAA 15377.34 58.03 -2918.95 +catalog channel catalog_pageAAAAAAAADDABAAAA 12528.64 0 -421.01 +catalog channel catalog_pageAAAAAAAADDCBAAAA 37455.23 0 5941.27 +catalog channel catalog_pageAAAAAAAADEABAAAA 9715.66 0 -1874.75 +catalog channel catalog_pageAAAAAAAADECBAAAA 13320.53 0 -6875.03 +catalog channel catalog_pageAAAAAAAADEPAAAAA 0 22.06 -67.03 +catalog channel catalog_pageAAAAAAAADFABAAAA 5344.35 0 -3327.34 +catalog channel catalog_pageAAAAAAAADFCBAAAA 3625.94 0 -793.44 +catalog channel catalog_pageAAAAAAAADGABAAAA 2487.37 0 -385.86 +catalog channel catalog_pageAAAAAAAADGCBAAAA 25529.88 0 2663.32 +catalog channel catalog_pageAAAAAAAADGPAAAAA 0 280.98 -270.78 +catalog channel catalog_pageAAAAAAAADHCBAAAA 2320.32 0 -2316.33 +catalog channel catalog_pageAAAAAAAADIABAAAA 0 65.6 -160.26 +catalog channel catalog_pageAAAAAAAADKBBAAAA 0 923 -466.68 +catalog channel catalog_pageAAAAAAAADKPAAAAA 37915.38 0 -13878.49 +catalog channel catalog_pageAAAAAAAADLPAAAAA 15887.66 18.34 -7221.75 +catalog channel catalog_pageAAAAAAAADMPAAAAA 24718.9 0 11298.15 +catalog channel catalog_pageAAAAAAAADNPAAAAA 4510.47 0 -2994.1 +catalog channel catalog_pageAAAAAAAADOPAAAAA 8265.19 0 -9211.97 +catalog channel catalog_pageAAAAAAAADPPAAAAA 23616.45 0 2778.88 +catalog channel catalog_pageAAAAAAAAEAABAAAA 9445.49 0 -8841.54 +catalog channel catalog_pageAAAAAAAAECABAAAA 11286.92 0 -133.46 +catalog channel catalog_pageAAAAAAAAEDABAAAA 9809.72 0 -2466.53 +catalog channel catalog_pageAAAAAAAAEDCBAAAA 2753.49 0 -682.37 +catalog channel catalog_pageAAAAAAAAEEABAAAA 2632.59 0 -1747.48 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q50.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q50.slt.no new file mode 100644 index 00000000000..668783726c6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q50.slt.no @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TITTTTTTTTIIIII +SELECT s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 30) + AND (sr_returned_date_sk - ss_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 60) + AND (sr_returned_date_sk - ss_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 90) + AND (sr_returned_date_sk - ss_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM store_sales, + store_returns, + store, + date_dim d1, + date_dim d2 +WHERE d2.d_year = 2001 + AND d2.d_moy = 8 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +ORDER BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +LIMIT 100; +---- +ought 1 767 Spring Wy Suite 250 Midway Williamson County TN 31904 43 29 27 28 65 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q51.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q51.slt.no new file mode 100644 index 00000000000..ba567eb8ca6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q51.slt.no @@ -0,0 +1,157 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IDRRRR +WITH web_v1 AS + (SELECT ws_item_sk item_sk, + d_date, + sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM web_sales, + date_dim + WHERE ws_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, + d_date), + store_v1 AS + (SELECT ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM store_sales, + date_dim + WHERE ss_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, + d_date) +SELECT * +FROM + (SELECT item_sk, + d_date, + web_sales, + store_sales, + max(web_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) web_cumulative, + max(store_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) store_cumulative + FROM + (SELECT CASE + WHEN web.item_sk IS NOT NULL THEN web.item_sk + ELSE store.item_sk + END item_sk, + CASE + WHEN web.d_date IS NOT NULL THEN web.d_date + ELSE store.d_date + END d_date, + web.cume_sales web_sales, + store.cume_sales store_sales + FROM web_v1 web + FULL OUTER JOIN store_v1 store ON (web.item_sk = store.item_sk + AND web.d_date = store.d_date))x)y +WHERE web_cumulative > store_cumulative +ORDER BY item_sk NULLS FIRST, + d_date NULLS FIRST +LIMIT 100; +---- +5 2000-01-02 34.56 3.12 34.56 3.12 +5 2000-02-04 92.33 NULL 92.33 87.34 +5 2000-02-05 NULL 88.83 92.33 88.83 +11 2000-01-14 57.01 NULL 57.01 27.93 +11 2000-01-24 NULL 50.73 57.01 50.73 +13 2000-01-28 106.42 NULL 106.42 78.55 +13 2000-02-06 NULL 80.5 106.42 80.5 +17 2000-02-06 174.48 NULL 174.48 144.29 +17 2000-02-20 NULL 154.31 174.48 154.31 +17 2000-03-24 216.03 NULL 216.03 175.91 +17 2000-05-04 381.01 NULL 381.01 368.39 +17 2000-05-07 NULL 373.24 381.01 373.24 +17 2000-05-25 452.94 NULL 452.94 442.35 +23 2000-01-07 78.61 50.82 78.61 50.82 +23 2000-01-12 112.57 NULL 112.57 110.42 +23 2000-04-15 593.4 NULL 593.4 555.79 +23 2000-04-22 NULL 575.51 593.4 575.51 +23 2000-04-29 NULL 581.5 593.4 581.5 +23 2000-05-07 NULL 582.64 593.4 582.64 +23 2000-07-07 690.04 NULL 690.04 686.19 +23 2000-07-15 716.74 NULL 716.74 693.31 +25 2000-01-10 21.54 NULL 21.54 1.52 +25 2000-01-16 47.36 NULL 47.36 44.52 +26 2000-02-24 215.76 NULL 215.76 190.91 +26 2000-03-12 NULL 215.29 215.76 215.29 +26 2000-03-16 228.25 NULL 228.25 215.29 +29 2000-01-06 28.2 NULL 28.2 4.69 +29 2000-02-11 129.05 NULL 129.05 122.15 +29 2000-06-01 300.61 NULL 300.61 243.26 +29 2000-06-03 NULL 247.35 300.61 247.35 +29 2000-06-07 NULL 266.58 300.61 266.58 +29 2000-06-19 307.69 NULL 307.69 266.58 +31 2000-01-18 NULL 19.41 79.75 19.41 +32 2000-02-07 264.42 NULL 264.42 222.72 +32 2000-02-13 NULL 230.26 264.42 230.26 +32 2000-02-22 NULL 236.68 264.42 236.68 +35 2000-01-07 NULL 0 121.18 0 +35 2000-01-21 NULL 8.71 121.18 8.71 +35 2000-01-27 NULL 22.01 121.18 22.01 +35 2000-02-09 210.74 NULL 210.74 22.01 +35 2000-02-16 NULL 31.03 210.74 31.03 +35 2000-02-26 NULL 31.03 210.74 31.03 +35 2000-04-02 NULL 114.38 210.74 114.38 +35 2000-04-12 212.61 NULL 212.61 114.38 +35 2000-04-13 NULL 211.83 212.61 211.83 +35 2000-04-14 215.09 NULL 215.09 211.83 +35 2000-05-01 259.49 NULL 259.49 211.83 +35 2000-05-04 311.2 NULL 311.2 211.83 +35 2000-05-25 NULL 247.47 311.2 247.47 +35 2000-06-10 NULL 262.86 311.2 262.86 +35 2000-06-12 NULL 305.71 311.2 305.71 +35 2000-06-14 NULL 309.77 311.2 309.77 +35 2000-06-30 312.49 NULL 312.49 309.77 +35 2000-07-04 323.04 NULL 323.04 309.77 +37 2000-08-13 858.02 NULL 858.02 779.45 +37 2000-08-14 NULL 829.33 858.02 829.33 +38 2000-01-07 NULL 65.55 157.21 65.55 +38 2000-01-21 NULL 124.08 157.21 124.08 +40 2000-01-01 15.27 7.76 15.27 7.76 +47 2000-01-23 97.3 NULL 97.3 66.81 +47 2000-02-11 153 NULL 153 105.63 +47 2000-02-12 NULL 134.01 153 134.01 +47 2000-02-20 228.29 NULL 228.29 177.38 +47 2000-02-24 NULL 204.18 228.29 204.18 +47 2000-03-09 NULL 210.79 228.29 210.79 +47 2000-03-15 NULL 217.79 228.29 217.79 +47 2000-04-12 374.07 NULL 374.07 247.83 +47 2000-04-15 NULL 250.95 374.07 250.95 +47 2000-05-04 605.14 NULL 605.14 250.95 +47 2000-05-06 NULL 268.65 605.14 268.65 +47 2000-05-13 605.58 NULL 605.58 268.65 +47 2000-05-23 NULL 323.47 605.58 323.47 +47 2000-05-26 NULL 374.86 605.58 374.86 +47 2000-06-09 702.15 NULL 702.15 374.86 +47 2000-06-10 NULL 390.61 702.15 390.61 +47 2000-06-14 NULL 462.33 702.15 462.33 +47 2000-06-16 NULL 475.43 702.15 475.43 +47 2000-07-03 746.74 NULL 746.74 475.43 +47 2000-07-08 NULL 485.8 746.74 485.8 +47 2000-07-21 767.24 NULL 767.24 485.8 +47 2000-07-31 NULL 507.76 767.24 507.76 +47 2000-08-16 NULL 570.59 767.24 570.59 +47 2000-08-18 NULL 581.02 767.24 581.02 +47 2000-08-21 NULL 582.57 767.24 582.57 +47 2000-08-24 NULL 603.68 767.24 603.68 +47 2000-08-25 NULL 656.61 767.24 656.61 +47 2000-09-02 NULL 664.03 767.24 664.03 +47 2000-09-03 NULL 675.81 767.24 675.81 +47 2000-09-08 1035.38 779.45 1035.38 779.45 +47 2000-09-09 NULL 779.45 1035.38 779.45 +47 2000-09-10 NULL 786.49 1035.38 786.49 +47 2000-09-11 NULL 804.95 1035.38 804.95 +47 2000-09-16 NULL 844.1 1035.38 844.1 +47 2000-09-18 NULL 844.1 1035.38 844.1 +47 2000-09-19 NULL 889.11 1035.38 889.11 +47 2000-09-23 NULL 893.53 1035.38 893.53 +47 2000-09-25 NULL 941.17 1035.38 941.17 +47 2000-10-06 1069.74 NULL 1069.74 1051.5 +47 2000-10-07 NULL 1051.5 1069.74 1051.5 +50 2000-01-15 64.27 NULL 64.27 38.23 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q52.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q52.slt.no new file mode 100644 index 00000000000..b51b2c7552e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q52.slt.no @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IITR +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + ext_price DESC, + brand_id +LIMIT 100 ; +---- +2000 1002002 importoamalg #2 34450.8 +2000 7008009 namelessbrand #9 24017.78 +2000 7008004 namelessbrand #4 22773.96 +2000 4004001 edu packedu pack #1 22016.68 +2000 10004005 importounivamalg #6 18132.92 +2000 1001002 amalgamalg #2 17659.32 +2000 7010004 univnameless #4 15930.77 +2000 10004004 edu packunivamalg #4 15246.46 +2000 5001001 brandunivamalg #11 12194.13 +2000 7006007 edu packamalg #2 11702.69 +2000 10010013 univamalgamalg #13 5092.18 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q53.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q53.slt.no new file mode 100644 index 00000000000..e323640dff1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q53.slt.no @@ -0,0 +1,152 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT * +FROM + (SELECT i_manufact_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id) avg_quarterly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manufact_id, + d_qoy) tmp1 +WHERE CASE + WHEN avg_quarterly_sales > 0 THEN ABS (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales + ELSE NULL + END > 0.1 +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +LIMIT 100; +---- +107 121.41 347.6475 +107 142.68 347.6475 +107 215.77 347.6475 +107 910.73 347.6475 +182 145.15 375.3525 +182 153.97 375.3525 +182 562.93 375.3525 +182 639.36 375.3525 +198 197.71 385.7275 +198 336.14 385.7275 +198 458.63 385.7275 +198 550.43 385.7275 +732 248.51 402.1625 +732 611.7 402.1625 +185 236.72 445.0575 +185 491.4 445.0575 +185 635.27 445.0575 +181 175.29 451.675 +181 564.03 451.675 +181 646.01 451.675 +77 129.29 463.6025 +77 588.05 463.6025 +77 642.16 463.6025 +151 94.56 468.825 +151 99.1 468.825 +151 808.99 468.825 +151 872.65 468.825 +775 99.88 472.7625 +775 211.02 472.7625 +775 689.49 472.7625 +775 890.66 472.7625 +860 167.36 472.8475 +860 360.83 472.8475 +860 587.46 472.8475 +860 775.74 472.8475 +134 165.39 485.03 +134 270.74 485.03 +134 608.21 485.03 +134 895.78 485.03 +767 256.86 485.835 +767 373.68 485.835 +767 642.85 485.835 +767 669.95 485.835 +362 42.96 488.42 +362 117.26 488.42 +362 542.58 488.42 +362 1250.88 488.42 +246 133.45 490.4575 +246 221.83 490.4575 +246 661.08 490.4575 +246 945.47 490.4575 +411 167.19 525.0375 +411 268.19 525.0375 +411 597.7 525.0375 +411 1067.07 525.0375 +451 210.46 526.4825 +451 435.74 526.4825 +451 446.65 526.4825 +451 1013.08 526.4825 +638 191.21 527.8925 +638 247.4 527.8925 +638 681.34 527.8925 +638 991.62 527.8925 +100 110.89 536.88 +100 202.57 536.88 +100 694.45 536.88 +100 1139.61 536.88 +409 210.35 540.8925 +409 339.42 540.8925 +409 626.5 540.8925 +409 987.3 540.8925 +110 189.66 557.4925 +110 333.36 557.4925 +110 1191.57 557.4925 +466 155.3 565.0425 +466 270.63 565.0425 +466 678.04 565.0425 +466 1156.2 565.0425 +227 246.72 570.0875 +227 873.81 570.0875 +201 231.28 570.895 +201 315.93 570.895 +201 646.39 570.895 +201 1089.98 570.895 +546 434.97 572.25 +546 457.4 572.25 +546 857.38 572.25 +93 217.11 580.325 +93 383.41 580.325 +93 493.88 580.325 +93 1226.9 580.325 +336 189.52 609.405 +336 470.28 609.405 +336 1212.09 609.405 +921 108.8 652.2125 +921 398.68 652.2125 +921 1509.59 652.2125 +380 375.23 659.2375 +380 435.07 659.2375 +380 905.21 659.2375 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q54.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q54.slt.no new file mode 100644 index 00000000000..b8bf521d246 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q54.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query III +WITH my_customers AS + (SELECT DISTINCT c_customer_sk, + c_current_addr_sk + FROM + (SELECT cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL SELECT ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales) cs_or_ws_sales, + item, + date_dim, + customer + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Women' + AND i_class = 'maternity' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 12 + AND d_year = 1998 ), + my_revenue AS + (SELECT c_customer_sk, + sum(ss_ext_sales_price) AS revenue + FROM my_customers, + store_sales, + customer_address, + store, + date_dim + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN + (SELECT DISTINCT d_month_seq+1 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) AND + (SELECT DISTINCT d_month_seq+3 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) + GROUP BY c_customer_sk), + segments AS + (SELECT cast(round(revenue/50) AS int) AS SEGMENT + FROM my_revenue) +SELECT SEGMENT, + count(*) AS num_customers, + SEGMENT*50 AS segment_base +FROM segments +GROUP BY SEGMENT +ORDER BY SEGMENT NULLS FIRST, + num_customers NULLS FIRST, + segment_base +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q55.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q55.slt.no new file mode 100644 index 00000000000..f9857051222 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q55.slt.no @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITR +SELECT i_brand_id brand_id, + i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=28 + AND d_moy=11 + AND d_year=1999 +GROUP BY i_brand, + i_brand_id +ORDER BY ext_price DESC, + i_brand_id +LIMIT 100 ; +---- +9016003 corpunivamalg #3 46123.99 +2001001 amalgimporto #1 40059.8 +6015001 scholarbrand #1 32295.1 +1001001 amalgamalg #1 31858.13 +3003001 exportiexporti #1 30335.32 +5001001 amalgscholar #1 28664.2 +3004001 edu packexporti #1 24372.56 +1002001 importoamalg #1 22671.78 +1001002 amalgamalg #2 22143.98 +8006005 corpnameless #5 21510.96 +3002001 importoexporti #1 20523.44 +4001001 amalgedu pack #1 20354.12 +10014016 edu packamalgamalg #16 19367.66 +5002001 importoscholar #1 18155.88 +4003001 exportiedu pack #1 17913.61 +2001002 amalgimporto #2 14692.65 +5004001 edu packscholar #1 13321.56 +10015011 scholaramalgamalg #11 10205.76 +6005003 scholarcorp #3 9854.43 +4002001 importoedu pack #1 8779.05 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q56.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q56.slt.no new file mode 100644 index 00000000000..501be38ff21 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q56.slt.no @@ -0,0 +1,116 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY total_sales NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +AAAAAAAAEADAAAAA 26.6 +AAAAAAAAGJEAAAAA 62.32 +AAAAAAAACIBAAAAA 222.08 +AAAAAAAAGDBAAAAA 645.66 +AAAAAAAAGEGAAAAA 1030.86 +AAAAAAAAIDFAAAAA 1127.2 +AAAAAAAAEDDAAAAA 1861.76 +AAAAAAAAIKCAAAAA 2043.76 +AAAAAAAAMMCAAAAA 2229.64 +AAAAAAAAEMEAAAAA 2508 +AAAAAAAAMOAAAAAA 2906.05 +AAAAAAAAMCDAAAAA 2934.36 +AAAAAAAAAMCAAAAA 3384.05 +AAAAAAAAMEEAAAAA 4498.65 +AAAAAAAAGGFAAAAA 4808.1 +AAAAAAAAOCEAAAAA 5297.03 +AAAAAAAAAEGAAAAA 5481.27 +AAAAAAAAONBAAAAA 6117.36 +AAAAAAAACHBAAAAA 6166.34 +AAAAAAAAGAHAAAAA 6663.08 +AAAAAAAANCEAAAAA 6719 +AAAAAAAAGBEAAAAA 6820.83 +AAAAAAAAGEBAAAAA 9834.93 +AAAAAAAAGHAAAAAA 10180.36 +AAAAAAAAEGBAAAAA 10325.31 +AAAAAAAAIGGAAAAA 10532.16 +AAAAAAAABJDAAAAA 10698.54 +AAAAAAAAJKAAAAAA 11994.03 +AAAAAAAAIACAAAAA 12150.48 +AAAAAAAAGOGAAAAA 12611.68 +AAAAAAAAIBBAAAAA 15290.6 +AAAAAAAAIOAAAAAA 17549.14 +AAAAAAAAEICAAAAA 18410.43 +AAAAAAAANEFAAAAA 18416.45 +AAAAAAAAIKFAAAAA 21295.44 +AAAAAAAAGIFAAAAA 22390.73 +AAAAAAAAKBCAAAAA 22567.04 +AAAAAAAAFCGAAAAA 22627.31 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q57.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q57.slt.no new file mode 100644 index 00000000000..b5a578e5b89 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q57.slt.no @@ -0,0 +1,169 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIRRRR +WITH v1 AS + (SELECT i_category, + i_brand, + cc_name, + d_year, + d_moy, + sum(cs_sales_price) sum_sales, + avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, + i_brand, + cc_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + cc_name + ORDER BY d_year, + d_moy) rn + FROM item, + catalog_sales, + date_dim, + call_center + WHERE cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk= cs_call_center_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + cc_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.cc_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1. cc_name = v1_lag. cc_name + AND v1. cc_name = v1_lead. cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales NULLS FIRST, 1, 2, 3, 4, 5, 6, 7, 8, 9 +LIMIT 100; +---- +Shoes exportiedu pack #1 NY Metro 1999 4 2602.29 873.07 1310.05 1389.46 +Music amalgscholar #1 NY Metro 1999 2 2401.3075 681.32 1389.52 1162.4 +Shoes edu packedu pack #1 NY Metro 1999 4 2813.558333 1206 1308.62 1285.33 +Shoes edu packedu pack #1 NY Metro 1999 5 2813.558333 1285.33 1206 1630.6 +Shoes edu packedu pack #1 NY Metro 1999 3 2813.558333 1308.62 1314.48 1206 +Shoes edu packedu pack #1 NY Metro 1999 2 2813.558333 1314.48 2001.46 1308.62 +Shoes exportiedu pack #1 NY Metro 1999 6 2602.29 1110.61 1389.46 1836.41 +Women importoamalg #1 NY Metro 1999 7 2038.780833 576.6 1092.99 3063.85 +Children exportiexporti #1 NY Metro 1999 6 2153.514166 784.44 1794.57 1441.37 +Shoes importoedu pack #1 NY Metro 1999 7 1890.239166 543.47 858.31 3200.51 +Music importoscholar #1 NY Metro 1999 4 2141.603333 798.59 1616.7 1017.38 +Men exportiimporto #1 NY Metro 1999 2 2370.8225 1075.45 1161.87 1734.46 +Shoes exportiedu pack #1 NY Metro 1999 3 2602.29 1310.05 1568.11 873.07 +Men exportiimporto #1 NY Metro 1999 7 2370.8225 1079.96 1315.93 3101.7 +Men exportiimporto #1 NY Metro 1999 4 2370.8225 1094.67 1734.46 1798.16 +Children exportiexporti #1 NY Metro 1999 3 2153.514166 880.89 890.98 1694.32 +Men edu packimporto #1 NY Metro 1999 4 2291.821666 1020.53 1402.19 2029.94 +Women importoamalg #1 NY Metro 1999 3 2038.780833 769.04 1863.24 1397.9 +Children exportiexporti #1 NY Metro 1999 2 2153.514166 890.98 1257.34 880.89 +Music amalgscholar #1 NY Metro 1999 3 2401.3075 1162.4 681.32 1328.39 +Men amalgimporto #1 NY Metro 1999 6 1639.644166 416.84 753.86 1258.98 +Shoes exportiedu pack #1 NY Metro 1999 5 2602.29 1389.46 873.07 1110.61 +Men exportiimporto #1 NY Metro 1999 1 2370.8225 1161.87 4568.43 1075.45 +Men importoimporto #1 NY Metro 1999 6 1632.786666 433.37 870.65 451.49 +Children amalgexporti #2 NY Metro 1999 3 1480.400833 287.62 744.35 906.31 +Shoes edu packedu pack #1 NY Metro 1999 6 2813.558333 1630.6 1285.33 2000.51 +Men importoimporto #1 NY Metro 1999 7 1632.786666 451.49 433.37 1927.32 +Shoes exportiedu pack #1 NY Metro 1999 1 2602.29 1449.65 5320.92 1568.11 +Men edu packimporto #1 NY Metro 1999 2 2291.821666 1142.84 1533.79 1402.19 +Children edu packexporti #1 NY Metro 1999 4 1755.691666 620.26 873.64 939.59 +Music importoscholar #1 NY Metro 1999 5 2141.603333 1017.38 798.59 1523.93 +Shoes amalgedu pack #1 NY Metro 1999 2 2076.091666 961.61 1157.56 1237.39 +Music exportischolar #2 NY Metro 1999 1 1745.665833 632.92 3396.05 666.22 +Music exportischolar #2 NY Metro 1999 2 1745.665833 666.22 632.92 1907.27 +Women edu packamalg #1 NY Metro 1999 6 2191.3575 1112.11 1243.11 1158.76 +Music amalgscholar #1 NY Metro 1999 4 2401.3075 1328.39 1162.4 1513.15 +Music exportischolar #2 NY Metro 1999 7 1745.665833 683.52 1101.46 1864.65 +Men exportiimporto #1 NY Metro 1999 6 2370.8225 1315.93 1798.16 1079.96 +Shoes amalgedu pack #1 NY Metro 1999 5 2076.091666 1032.32 1474.85 1239.28 +Shoes exportiedu pack #1 NY Metro 1999 2 2602.29 1568.11 1449.65 1310.05 +Women edu packamalg #1 NY Metro 1999 7 2191.3575 1158.76 1112.11 3304.19 +Music importoscholar #1 NY Metro 1999 7 2141.603333 1109.23 1523.93 3967.27 +Shoes importoedu pack #1 NY Metro 1999 6 1890.239166 858.31 1461.71 543.47 +Women importoamalg #1 NY Metro 1999 1 2038.780833 1016.92 4390.23 1863.24 +Women amalgamalg #1 NY Metro 1999 7 1789.3575 775 1013.89 2516.91 +Music amalgscholar #1 NY Metro 1999 1 2401.3075 1389.52 5021.71 681.32 +Women importoamalg #1 NY Metro 1999 5 2038.780833 1039.57 1397.9 1092.99 +Music edu packscholar #1 NY Metro 1999 2 1386.475 416.5 842.63 774.34 +Women edu packamalg #1 NY Metro 1999 2 2191.3575 1235.91 2000.24 1641.12 +Women edu packamalg #1 NY Metro 1999 5 2191.3575 1243.11 1493.45 1112.11 +Women importoamalg #1 NY Metro 1999 6 2038.780833 1092.99 1039.57 576.6 +Children importoexporti #1 NY Metro 1999 5 1708.808333 763.82 855.31 1058.09 +Children importoexporti #1 NY Metro 1999 2 1708.808333 765.13 1058.78 874.53 +Shoes importoedu pack #1 NY Metro 1999 2 1890.239166 961.79 1135.45 969.71 +Children edu packexporti #1 NY Metro 1999 6 1755.691666 828.28 939.59 1055.99 +Women amalgamalg #1 NY Metro 1999 1 1789.3575 865.04 3096.08 1406.06 +Men amalgimporto #1 NY Metro 1999 4 1639.644166 718.97 723.18 753.86 +Shoes importoedu pack #1 NY Metro 1999 3 1890.239166 969.71 961.79 1081.31 +Women exportiamalg #1 NY Metro 1999 3 1816.345 896.51 1180.68 1004.3 +Shoes amalgedu pack #1 NY Metro 1999 1 2076.091666 1157.56 4851.83 961.61 +Women edu packamalg #2 NY Metro 1999 2 1164.193333 246.19 438.15 650.31 +Men amalgimporto #1 NY Metro 1999 3 1639.644166 723.18 1318.53 718.97 +Children amalgexporti #2 NY Metro 1999 6 1480.400833 565.16 1320.93 822.3 +Men edu packimporto #1 NY Metro 1999 6 2291.821666 1377.59 2029.94 1478.46 +Children importoexporti #1 NY Metro 1999 7 1708.808333 811.65 1058.09 2369.43 +Children exportiexporti #1 NY Metro 1999 1 2153.514166 1257.34 5213.08 890.98 +Children exportiexporti #2 NY Metro 1999 3 1129.004166 235.48 779.12 882.08 +Men edu packimporto #1 NY Metro 1999 3 2291.821666 1402.19 1142.84 1020.53 +Music amalgscholar #1 NY Metro 1999 5 2401.3075 1513.15 1328.39 1542.36 +Men amalgimporto #1 NY Metro 1999 5 1639.644166 753.86 718.97 416.84 +Children edu packexporti #1 NY Metro 1999 3 1755.691666 873.64 1033.22 620.26 +Women amalgamalg #1 NY Metro 1999 4 1789.3575 926.57 1350.76 1227.87 +Music amalgscholar #1 NY Metro 1999 6 2401.3075 1542.36 1513.15 1755.15 +Women exportiamalg #1 NY Metro 1999 1 1816.345 960.06 4665.37 1180.68 +Children importoexporti #1 NY Metro 1999 4 1708.808333 855.31 874.53 763.82 +Shoes amalgedu pack #1 NY Metro 1999 3 2076.091666 1237.39 961.61 1474.85 +Shoes amalgedu pack #1 NY Metro 1999 6 2076.091666 1239.28 1032.32 1672.49 +Children importoexporti #1 NY Metro 1999 3 1708.808333 874.53 765.13 855.31 +Women exportiamalg #2 NY Metro 1999 3 1079.29 257.18 867.45 629.83 +Children edu packexporti #1 NY Metro 1999 5 1755.691666 939.59 620.26 828.28 +Men edu packimporto #1 NY Metro 1999 7 2291.821666 1478.46 1377.59 3272.8 +Shoes edu packedu pack #1 NY Metro 1999 7 2813.558333 2000.51 1630.6 3445.38 +Shoes edu packedu pack #1 NY Metro 1999 1 2813.558333 2001.46 6906.05 1314.48 +Women exportiamalg #1 NY Metro 1999 4 1816.345 1004.3 896.51 1036.58 +Shoes importoedu pack #1 NY Metro 1999 4 1890.239166 1081.31 969.71 1461.71 +Children amalgexporti #1 NY Metro 1999 5 1337.524166 529.1 747.16 748.13 +Children exportiexporti #2 NY Metro 1999 1 1129.004166 332.93 1966.19 779.12 +Men importoimporto #1 NY Metro 1999 4 1632.786666 836.87 963.29 870.65 +Men edu packimporto #2 NY Metro 1999 3 1178.875833 385.75 772.58 661.81 +Music importoscholar #1 NY Metro 1999 2 2141.603333 1356.69 1584.68 1616.7 +Women exportiamalg #1 NY Metro 1999 5 1816.345 1036.58 1004.3 1282.58 +Men importoimporto #1 NY Metro 1999 2 1632.786666 856.94 1055.89 963.29 +Women amalgamalg #1 NY Metro 1999 6 1789.3575 1013.89 1227.87 775 +Shoes exportiedu pack #1 NY Metro 1999 7 2602.29 1836.41 1110.61 2968.36 +Men importoimporto #1 NY Metro 1999 5 1632.786666 870.65 836.87 433.37 +Men edu packimporto #1 NY Metro 1999 1 2291.821666 1533.79 5258.73 1142.84 +Shoes importoedu pack #1 NY Metro 1999 1 1890.239166 1135.45 4076.29 961.79 +Music importoscholar #2 NY Metro 1999 6 801.986666 55.54 620.74 599.05 +Children amalgexporti #1 NY Metro 1999 7 1337.524166 598.17 748.13 2881.1 +Children amalgexporti #2 NY Metro 1999 2 1480.400833 744.35 1214.92 287.62 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q58.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q58.slt.no new file mode 100644 index 00000000000..6e8543c5754 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q58.slt.no @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRRRRRR +WITH ss_items AS + (SELECT i_item_id item_id, + sum(ss_ext_sales_price) ss_item_rev + FROM store_sales, + item, + date_dim + WHERE ss_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id), + cs_items AS + (SELECT i_item_id item_id, + sum(cs_ext_sales_price) cs_item_rev + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id), + ws_items AS + (SELECT i_item_id item_id, + sum(ws_ext_sales_price) ws_item_rev + FROM web_sales, + item, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT ss_items.item_id, + ss_item_rev, + ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev, + cs_item_rev, + cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev, + ws_item_rev, + ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev, + (ss_item_rev+cs_item_rev+ws_item_rev)/3 average +FROM ss_items, + cs_items, + ws_items +WHERE ss_items.item_id=cs_items.item_id + AND ss_items.item_id=ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +ORDER BY ss_items.item_id NULLS FIRST, + ss_item_rev NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q59.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q59.slt.no new file mode 100644 index 00000000000..2ed083ce17d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q59.slt.no @@ -0,0 +1,190 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIRRRRRRR +WITH wss AS + (SELECT d_week_seq, + ss_store_sk, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, + ss_store_sk) +SELECT s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1/sun_sales2 AS sun_sales_ratio, + mon_sales1/mon_sales2 AS mon_sales_ratio, + tue_sales1/tue_sales2 AS tue_sales_ratio, + wed_sales1/wed_sales2 AS wed_sales_ratio, + thu_sales1/thu_sales2 AS thu_sales_ratio, + fri_sales1/fri_sales2 AS fri_sales_ratio, + sat_sales1/sat_sales2 AS sat_sales_ratio +FROM + (SELECT s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 AND 1212 + 11) y, + (SELECT s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 + 12 AND 1212 + 23) x +WHERE s_store_id1=s_store_id2 + AND d_week_seq1=d_week_seq2-52 +ORDER BY s_store_name1 NULLS FIRST, + s_store_id1 NULLS FIRST, + d_week_seq1 NULLS FIRST +LIMIT 100; +---- +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5271 1.506305 1.21098 0.094947 0.420014 1.043908 0.767386 0.501908 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5272 1.758208 1.29727 2.734012 0.912539 1.329293 1.64136 0.644471 +ought AAAAAAAABAAAAAAA 5273 3.096752 0.867308 1.454512 0.715887 0.767339 1.28112 2.108696 +ought AAAAAAAABAAAAAAA 5273 3.096752 0.867308 1.454512 0.715887 0.767339 1.28112 2.108696 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q6.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q6.slt.no new file mode 100644 index 00000000000..6bbb025cc9e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q6.slt.no @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TI +SELECT a.ca_state state, + count(*) cnt +FROM customer_address a , + customer c , + store_sales s , + date_dim d , + item i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = + (SELECT DISTINCT (d_month_seq) + FROM date_dim + WHERE d_year = 2001 + AND d_moy = 1 ) + AND i.i_current_price > 1.2 * + (SELECT avg(j.i_current_price) + FROM item j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING count(*) >= 10 +ORDER BY cnt NULLS FIRST, + a.ca_state NULLS FIRST +LIMIT 100; +---- +KS 10 +MS 10 +NE 10 +SD 11 +IL 12 +KY 13 +IN 17 +OH 20 +TX 21 +VA 22 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q60.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q60.slt.no new file mode 100644 index 00000000000..8c474086270 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q60.slt.no @@ -0,0 +1,172 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category = 'Music') + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, + total_sales +LIMIT 100; +---- +AAAAAAAAAAHAAAAA 11508.64 +AAAAAAAAADBAAAAA 16116.11 +AAAAAAAAAEBAAAAA 7628.66 +AAAAAAAAAFFAAAAA 905.16 +AAAAAAAAAGFAAAAA 10014.07 +AAAAAAAAAIDAAAAA 7491.82 +AAAAAAAAAKBAAAAA 579.66 +AAAAAAAAAKDAAAAA 6699.03 +AAAAAAAAALAAAAAA 8356.35 +AAAAAAAAALDAAAAA 6750.51 +AAAAAAAAAMEAAAAA 35221.47 +AAAAAAAAAOCAAAAA 14728.86 +AAAAAAAAAPBAAAAA 13136.33 +AAAAAAAABAAAAAAA 11808.97 +AAAAAAAABECAAAAA 3931.89 +AAAAAAAABFBAAAAA 10605.27 +AAAAAAAABGDAAAAA 37485.43 +AAAAAAAABKFAAAAA 8637.22 +AAAAAAAACDGAAAAA 3867.72 +AAAAAAAACFEAAAAA 9147.18 +AAAAAAAACFGAAAAA 31493.08 +AAAAAAAACHCAAAAA 12030.92 +AAAAAAAACIAAAAAA 3390.29 +AAAAAAAACIGAAAAA 12423.51 +AAAAAAAACJAAAAAA 6671.94 +AAAAAAAACJFAAAAA 2610.47 +AAAAAAAACLAAAAAA 7216.23 +AAAAAAAACLBAAAAA 15506.66 +AAAAAAAACNBAAAAA 7336.02 +AAAAAAAACNEAAAAA 14824.22 +AAAAAAAACODAAAAA 6482 +AAAAAAAACPDAAAAA 12527.54 +AAAAAAAADDBAAAAA 6932.55 +AAAAAAAADGBAAAAA 552.45 +AAAAAAAADGEAAAAA 8204.66 +AAAAAAAADJBAAAAA 129.45 +AAAAAAAADNGAAAAA 10705.92 +AAAAAAAAEABAAAAA 9431.21 +AAAAAAAAEAHAAAAA 17199.48 +AAAAAAAAEBCAAAAA 6715.08 +AAAAAAAAEBGAAAAA 14610.06 +AAAAAAAAEDGAAAAA 11137.68 +AAAAAAAAEEDAAAAA 5767.8 +AAAAAAAAEGAAAAAA 1367.71 +AAAAAAAAEGDAAAAA 24586.93 +AAAAAAAAEGGAAAAA 7059.74 +AAAAAAAAEHAAAAAA 8388.98 +AAAAAAAAEHCAAAAA 5255.49 +AAAAAAAAEIFAAAAA 7505.08 +AAAAAAAAEKGAAAAA 9212.85 +AAAAAAAAEMBAAAAA 19181.65 +AAAAAAAAEMDAAAAA 12657.62 +AAAAAAAAENAAAAAA 2094.28 +AAAAAAAAENDAAAAA 6834.08 +AAAAAAAAENFAAAAA 6475 +AAAAAAAAEPBAAAAA 11129.59 +AAAAAAAAEPDAAAAA 7019.56 +AAAAAAAAEPEAAAAA 3485.65 +AAAAAAAAEPGAAAAA 10873.45 +AAAAAAAAFIGAAAAA 14727.54 +AAAAAAAAFJFAAAAA 18811.37 +AAAAAAAAFKEAAAAA 7508.4 +AAAAAAAAFMCAAAAA 12686.6 +AAAAAAAAGAHAAAAA 12179.78 +AAAAAAAAGCGAAAAA 4584.4 +AAAAAAAAGEAAAAAA 23719.49 +AAAAAAAAGFFAAAAA 4680.69 +AAAAAAAAGGBAAAAA 10326.63 +AAAAAAAAGGEAAAAA 316.05 +AAAAAAAAGHEAAAAA 18570.46 +AAAAAAAAGIFAAAAA 10420.07 +AAAAAAAAGIGAAAAA 18710.43 +AAAAAAAAGJBAAAAA 8422.8 +AAAAAAAAGJCAAAAA 1693.86 +AAAAAAAAGJEAAAAA 5527.98 +AAAAAAAAGJFAAAAA 6965.57 +AAAAAAAAGMBAAAAA 10157.91 +AAAAAAAAGMEAAAAA 6063.5 +AAAAAAAAGOAAAAAA 670.53 +AAAAAAAAGOFAAAAA 1414.02 +AAAAAAAAGPCAAAAA 2595.22 +AAAAAAAAHEFAAAAA 17476.76 +AAAAAAAAHIBAAAAA 8266.5 +AAAAAAAAHNFAAAAA 4412.82 +AAAAAAAAICAAAAAA 40543.92 +AAAAAAAAIFAAAAAA 265.44 +AAAAAAAAIFBAAAAA 4903.22 +AAAAAAAAIFDAAAAA 678.61 +AAAAAAAAIFEAAAAA 12288.08 +AAAAAAAAIFGAAAAA 13888.95 +AAAAAAAAIGFAAAAA 2735.52 +AAAAAAAAIIBAAAAA 21382.12 +AAAAAAAAIIDAAAAA 2950.6 +AAAAAAAAIJAAAAAA 20434.49 +AAAAAAAAIJCAAAAA 9975.7 +AAAAAAAAIKBAAAAA 9452.51 +AAAAAAAAILAAAAAA 17405.04 +AAAAAAAAILBAAAAA 12500.25 +AAAAAAAAILDAAAAA 1964.19 +AAAAAAAAIMAAAAAA 8819.84 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q61.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q61.slt.no new file mode 100644 index 00000000000..f02945b7172 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q61.slt.no @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RRR +SELECT promotions, + total, + cast(promotions AS decimal(15,4))/cast(total AS decimal(15,4))*100 +FROM + (SELECT sum(ss_ext_sales_price) promotions + FROM store_sales, + store, + promotion, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND (p_channel_dmail = 'Y' + OR p_channel_email = 'Y' + OR p_channel_tv = 'Y') + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) promotional_sales, + (SELECT sum(ss_ext_sales_price) total + FROM store_sales, + store, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) all_sales +ORDER BY promotions, + total +LIMIT 100; +---- +271115.91 637892.44 42.501822 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q62.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q62.slt.no new file mode 100644 index 00000000000..8f380982989 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q62.slt.no @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIIII +SELECT w_substr, + sm_type, + web_name, + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 30) + AND (ws_ship_date_sk - ws_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 60) + AND (ws_ship_date_sk - ws_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 90) + AND (ws_ship_date_sk - ws_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM web_sales, + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, + * + FROM warehouse) sq1, + ship_mode, + web_site, + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY w_substr, + sm_type, + web_name +ORDER BY 1 NULLS FIRST, + 2 NULLS FIRST, + 3 NULLS FIRST +LIMIT 100; +---- +Conventional childr EXPRESS site_0 748 680 732 756 0 +Conventional childr LIBRARY site_0 562 501 538 567 0 +Conventional childr NEXT DAY site_0 713 698 719 753 0 +Conventional childr OVERNIGHT site_0 502 556 560 509 0 +Conventional childr REGULAR site_0 561 561 502 567 0 +Conventional childr TWO DAY site_0 545 539 533 567 0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q63.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q63.slt.no new file mode 100644 index 00000000000..4cff0f6757d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q63.slt.no @@ -0,0 +1,152 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT * +FROM + (SELECT i_manager_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id) avg_monthly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manager_id, + d_moy) tmp1 +WHERE CASE + WHEN avg_monthly_sales > 0 THEN ABS (sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY i_manager_id, + avg_monthly_sales, + sum_sales +LIMIT 100; +---- +6 107.66 446.5275 +6 124.71 446.5275 +6 155 446.5275 +6 217.78 446.5275 +6 237.57 446.5275 +6 320.92 446.5275 +6 526.32 446.5275 +6 558.43 446.5275 +6 607.12 446.5275 +6 742.39 446.5275 +6 762.76 446.5275 +6 997.67 446.5275 +7 66.72 161.83909 +7 79.99 161.83909 +7 81 161.83909 +7 140.39 161.83909 +7 141.27 161.83909 +7 183.9 161.83909 +7 195.45 161.83909 +7 219.94 161.83909 +7 348.61 161.83909 +10 7.02 163.485833 +10 14.91 163.485833 +10 29.75 163.485833 +10 35.49 163.485833 +10 90.94 163.485833 +10 181.26 163.485833 +10 209.54 163.485833 +10 270.28 163.485833 +10 270.88 163.485833 +10 288.29 163.485833 +10 386.3 163.485833 +11 50.73 193.441666 +11 64.1 193.441666 +11 72.62 193.441666 +11 84.86 193.441666 +11 93.76 193.441666 +11 127.77 193.441666 +11 133.6 193.441666 +11 164.95 193.441666 +11 302.01 193.441666 +11 358.31 193.441666 +11 375.85 193.441666 +11 492.74 193.441666 +12 4.42 185.830833 +12 22.24 185.830833 +12 40.42 185.830833 +12 78.07 185.830833 +12 96.39 185.830833 +12 127 185.830833 +12 158.9 185.830833 +12 231.27 185.830833 +12 279.69 185.830833 +12 288.94 185.830833 +12 442.72 185.830833 +12 459.91 185.830833 +20 123.46 413.888333 +20 124.99 413.888333 +20 186.9 413.888333 +20 209.1 413.888333 +20 215.43 413.888333 +20 219.45 413.888333 +20 352.81 413.888333 +20 487.48 413.888333 +20 653.13 413.888333 +20 717.71 413.888333 +20 810.65 413.888333 +20 865.55 413.888333 +22 21.96 270.416666 +22 41.89 270.416666 +22 59.1 270.416666 +22 67.29 270.416666 +22 162.79 270.416666 +22 190.64 270.416666 +22 326.35 270.416666 +22 367.03 270.416666 +22 455.93 270.416666 +22 554.08 270.416666 +22 729.93 270.416666 +25 34.7 226.017 +25 120.6 226.017 +25 123.91 226.017 +25 146.72 226.017 +25 169.11 226.017 +25 189.75 226.017 +25 199.98 226.017 +25 288.31 226.017 +25 296.81 226.017 +25 690.28 226.017 +26 54.55 209.52 +26 72.4 209.52 +26 124.41 209.52 +26 127 209.52 +26 140.02 209.52 +26 343.42 209.52 +26 376.95 209.52 +26 417.46 209.52 +28 181.17 629.109166 +28 248 629.109166 +28 253.34 629.109166 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q64.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q64.slt.no new file mode 100644 index 00000000000..1764a568ffa --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q64.slt.no @@ -0,0 +1,129 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTTTTTTTIIRRRRRRII +WITH cs_ui AS + (SELECT cs_item_sk, + sum(cs_ext_list_price) AS sale, + sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) AS refund + FROM catalog_sales, + catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)), + cross_sales AS + (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_street_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + count(*) cnt, + sum(ss_wholesale_cost) s1, + sum(ss_list_price) s2, + sum(ss_coupon_amt) s3 + FROM store_sales, + store_returns, + cs_ui, + date_dim d1, + date_dim d2, + date_dim d3, + store, + customer, + customer_demographics cd1, + customer_demographics cd2, + promotion, + household_demographics hd1, + household_demographics hd2, + customer_address ad1, + customer_address ad2, + income_band ib1, + income_band ib2, + item + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk= cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color IN ('purple', + 'burlywood', + 'indian', + 'spring', + 'floral', + 'medium') + AND i_current_price BETWEEN 64 AND 64 + 10 + AND i_current_price BETWEEN 64 + 1 AND 64 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_street_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear cs1syear, + cs1.cnt cs1cnt, + cs1.s1 AS s11, + cs1.s2 AS s21, + cs1.s3 AS s31, + cs2.s1 AS s12, + cs2.s2 AS s22, + cs2.s3 AS s32, + cs2.syear, + cs2.cnt +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk=cs2.item_sk + AND cs1.syear = 1999 + AND cs2.syear = 1999 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, + cs1.store_name, + cs2.cnt, + cs1.s1, + cs2.s1; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q65.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q65.slt.no new file mode 100644 index 00000000000..57128a1de28 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q65.slt.no @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRRT +SELECT s_store_name, + i_item_desc, + sc.revenue, + i_current_price, + i_wholesale_cost, + i_brand +FROM store, + item, + (SELECT ss_store_sk, + avg(revenue) AS ave + FROM + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sa + GROUP BY ss_store_sk) sb, + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sc +WHERE sb.ss_store_sk = sc.ss_store_sk + AND sc.revenue <= 0.1 * sb.ave + AND s_store_sk = sc.ss_store_sk + AND i_item_sk = sc.ss_item_sk +ORDER BY s_store_name NULLS FIRST, + i_item_desc NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q66.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q66.slt.no new file mode 100644 index 00000000000..063ee00616e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q66.slt.no @@ -0,0 +1,223 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TITTTTTIRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR +select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + ,sum(jan_sales) as jan_sales + ,sum(feb_sales) as feb_sales + ,sum(mar_sales) as mar_sales + ,sum(apr_sales) as apr_sales + ,sum(may_sales) as may_sales + ,sum(jun_sales) as jun_sales + ,sum(jul_sales) as jul_sales + ,sum(aug_sales) as aug_sales + ,sum(sep_sales) as sep_sales + ,sum(oct_sales) as oct_sales + ,sum(nov_sales) as nov_sales + ,sum(dec_sales) as dec_sales + ,sum(jan_sales/w_warehouse_sq_ft) as jan_sales_per_sq_foot + ,sum(feb_sales/w_warehouse_sq_ft) as feb_sales_per_sq_foot + ,sum(mar_sales/w_warehouse_sq_ft) as mar_sales_per_sq_foot + ,sum(apr_sales/w_warehouse_sq_ft) as apr_sales_per_sq_foot + ,sum(may_sales/w_warehouse_sq_ft) as may_sales_per_sq_foot + ,sum(jun_sales/w_warehouse_sq_ft) as jun_sales_per_sq_foot + ,sum(jul_sales/w_warehouse_sq_ft) as jul_sales_per_sq_foot + ,sum(aug_sales/w_warehouse_sq_ft) as aug_sales_per_sq_foot + ,sum(sep_sales/w_warehouse_sq_ft) as sep_sales_per_sq_foot + ,sum(oct_sales/w_warehouse_sq_ft) as oct_sales_per_sq_foot + ,sum(nov_sales/w_warehouse_sq_ft) as nov_sales_per_sq_foot + ,sum(dec_sales/w_warehouse_sq_ft) as dec_sales_per_sq_foot + ,sum(jan_net) as jan_net + ,sum(feb_net) as feb_net + ,sum(mar_net) as mar_net + ,sum(apr_net) as apr_net + ,sum(may_net) as may_net + ,sum(jun_net) as jun_net + ,sum(jul_net) as jul_net + ,sum(aug_net) as aug_net + ,sum(sep_net) as sep_net + ,sum(oct_net) as oct_net + ,sum(nov_net) as nov_net + ,sum(dec_net) as dec_net + from ( + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then ws_ext_sales_price* ws_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then ws_ext_sales_price* ws_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then ws_ext_sales_price* ws_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then ws_ext_sales_price* ws_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then ws_ext_sales_price* ws_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then ws_ext_sales_price* ws_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then ws_ext_sales_price* ws_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then ws_ext_sales_price* ws_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then ws_ext_sales_price* ws_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then ws_ext_sales_price* ws_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then ws_ext_sales_price* ws_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then ws_ext_sales_price* ws_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then ws_net_paid * ws_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then ws_net_paid * ws_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then ws_net_paid * ws_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then ws_net_paid * ws_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then ws_net_paid * ws_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then ws_net_paid * ws_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then ws_net_paid * ws_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then ws_net_paid * ws_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then ws_net_paid * ws_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then ws_net_paid * ws_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then ws_net_paid * ws_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then ws_net_paid * ws_quantity else 0 end) as dec_net + from + web_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + ws_warehouse_sk = w_warehouse_sk + and ws_sold_date_sk = d_date_sk + and ws_sold_time_sk = t_time_sk + and ws_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 and 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + union all + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then cs_sales_price* cs_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then cs_sales_price* cs_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then cs_sales_price* cs_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then cs_sales_price* cs_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then cs_sales_price* cs_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then cs_sales_price* cs_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then cs_sales_price* cs_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then cs_sales_price* cs_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then cs_sales_price* cs_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then cs_sales_price* cs_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then cs_sales_price* cs_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then cs_sales_price* cs_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as dec_net + from + catalog_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + cs_warehouse_sk = w_warehouse_sk + and cs_sold_date_sk = d_date_sk + and cs_sold_time_sk = t_time_sk + and cs_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 AND 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + ) x + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + order by w_warehouse_name NULLS FIRST +LIMIT 100; +---- +Conventional childr 977787 Midway Williamson County TN United States DHL,BARIAN 2001 5665263.2 4256624.18 6757029.48 5932187.97 4235797.37 1315480.77 5633246.33 10991004.92 9710980.62 11065685.72 14957060.98 19075420.83 5.793963 4.353324 6.910533 6.066952 4.332024 1.345365 5.761219 11.240694 9.93159 11.317071 15.296848 19.508768 12024188.36 8778739.37 13787225.24 12055140.09 12368854.46 10638132.3 13967926.34 27340050.65 38380516.31 27509050.73 45256139.63 45698233.49 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q67.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q67.slt.no new file mode 100644 index 00000000000..7d0915b1754 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q67.slt.no @@ -0,0 +1,149 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIIITRI +SELECT * +FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rank() OVER (PARTITION BY i_category + ORDER BY sumsales DESC) rk + FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + FROM store_sales, + date_dim, + store, + item + WHERE ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + GROUP BY rollup(i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id))dw1) dw2 +WHERE rk <= 100 +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_brand NULLS FIRST, + i_product_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + d_moy NULLS FIRST, + s_store_id NULLS FIRST, + sumsales NULLS FIRST, + rk NULLS FIRST +LIMIT 100; +---- +NULL NULL NULL NULL NULL NULL NULL NULL 221552.22 2 +NULL NULL NULL NULL NULL NULL NULL NULL 221552.22 2 +NULL NULL NULL NULL NULL NULL NULL NULL 102550067.81 1 +NULL NULL brandmaxi #2 NULL NULL NULL NULL NULL 128802.28 4 +NULL NULL brandmaxi #2 oughteingought NULL NULL NULL NULL 128802.28 4 +NULL NULL brandmaxi #2 oughteingought 2000 NULL NULL NULL 128802.28 4 +NULL NULL brandmaxi #2 oughteingought 2000 1 NULL NULL 24355.03 15 +NULL NULL brandmaxi #2 oughteingought 2000 1 1 NULL 6940.53 50 +NULL NULL brandmaxi #2 oughteingought 2000 1 1 AAAAAAAABAAAAAAA 6940.53 50 +NULL NULL brandmaxi #2 oughteingought 2000 1 2 NULL 7035.06 48 +NULL NULL brandmaxi #2 oughteingought 2000 1 2 AAAAAAAABAAAAAAA 7035.06 48 +NULL NULL brandmaxi #2 oughteingought 2000 1 3 NULL 10379.44 30 +NULL NULL brandmaxi #2 oughteingought 2000 1 3 AAAAAAAABAAAAAAA 10379.44 30 +NULL NULL brandmaxi #2 oughteingought 2000 2 NULL NULL 14734.99 22 +NULL NULL brandmaxi #2 oughteingought 2000 2 4 NULL 2108.76 62 +NULL NULL brandmaxi #2 oughteingought 2000 2 4 AAAAAAAABAAAAAAA 2108.76 62 +NULL NULL brandmaxi #2 oughteingought 2000 2 5 NULL 5299.49 54 +NULL NULL brandmaxi #2 oughteingought 2000 2 5 AAAAAAAABAAAAAAA 5299.49 54 +NULL NULL brandmaxi #2 oughteingought 2000 2 6 NULL 7326.74 44 +NULL NULL brandmaxi #2 oughteingought 2000 2 6 AAAAAAAABAAAAAAA 7326.74 44 +NULL NULL brandmaxi #2 oughteingought 2000 3 NULL NULL 28868.56 14 +NULL NULL brandmaxi #2 oughteingought 2000 3 7 NULL 10565.05 26 +NULL NULL brandmaxi #2 oughteingought 2000 3 7 AAAAAAAABAAAAAAA 10565.05 26 +NULL NULL brandmaxi #2 oughteingought 2000 3 8 NULL 10350.85 32 +NULL NULL brandmaxi #2 oughteingought 2000 3 8 AAAAAAAABAAAAAAA 10350.85 32 +NULL NULL brandmaxi #2 oughteingought 2000 3 9 NULL 7952.66 42 +NULL NULL brandmaxi #2 oughteingought 2000 3 9 AAAAAAAABAAAAAAA 7952.66 42 +NULL NULL brandmaxi #2 oughteingought 2000 4 NULL NULL 60843.7 10 +NULL NULL brandmaxi #2 oughteingought 2000 4 10 NULL 15324.88 20 +NULL NULL brandmaxi #2 oughteingought 2000 4 10 AAAAAAAABAAAAAAA 15324.88 20 +NULL NULL brandmaxi #2 oughteingought 2000 4 11 NULL 35480.78 11 +NULL NULL brandmaxi #2 oughteingought 2000 4 11 AAAAAAAABAAAAAAA 35480.78 11 +NULL NULL brandmaxi #2 oughteingought 2000 4 12 NULL 10038.04 34 +NULL NULL brandmaxi #2 oughteingought 2000 4 12 AAAAAAAABAAAAAAA 10038.04 34 +NULL NULL exportischolar #2 NULL NULL NULL NULL NULL 92749.94 7 +NULL NULL exportischolar #2 prieingeseought NULL NULL NULL NULL 92749.94 7 +NULL NULL exportischolar #2 prieingeseought 2000 NULL NULL NULL 92749.94 7 +NULL NULL exportischolar #2 prieingeseought 2000 1 NULL NULL 24156.6 16 +NULL NULL exportischolar #2 prieingeseought 2000 1 1 NULL 10491.62 28 +NULL NULL exportischolar #2 prieingeseought 2000 1 1 AAAAAAAABAAAAAAA 10491.62 28 +NULL NULL exportischolar #2 prieingeseought 2000 1 2 NULL 3852.29 58 +NULL NULL exportischolar #2 prieingeseought 2000 1 2 AAAAAAAABAAAAAAA 3852.29 58 +NULL NULL exportischolar #2 prieingeseought 2000 1 3 NULL 9812.69 36 +NULL NULL exportischolar #2 prieingeseought 2000 1 3 AAAAAAAABAAAAAAA 9812.69 36 +NULL NULL exportischolar #2 prieingeseought 2000 2 NULL NULL 12996.74 23 +NULL NULL exportischolar #2 prieingeseought 2000 2 4 NULL 4093.23 56 +NULL NULL exportischolar #2 prieingeseought 2000 2 4 AAAAAAAABAAAAAAA 4093.23 56 +NULL NULL exportischolar #2 prieingeseought 2000 2 5 NULL 2118.51 60 +NULL NULL exportischolar #2 prieingeseought 2000 2 5 AAAAAAAABAAAAAAA 2118.51 60 +NULL NULL exportischolar #2 prieingeseought 2000 2 6 NULL 6785 52 +NULL NULL exportischolar #2 prieingeseought 2000 2 6 AAAAAAAABAAAAAAA 6785 52 +NULL NULL exportischolar #2 prieingeseought 2000 3 NULL NULL 22679.66 17 +NULL NULL exportischolar #2 prieingeseought 2000 3 7 NULL 1560.68 64 +NULL NULL exportischolar #2 prieingeseought 2000 3 7 AAAAAAAABAAAAAAA 1560.68 64 +NULL NULL exportischolar #2 prieingeseought 2000 3 8 NULL 8520.48 40 +NULL NULL exportischolar #2 prieingeseought 2000 3 8 AAAAAAAABAAAAAAA 8520.48 40 +NULL NULL exportischolar #2 prieingeseought 2000 3 9 NULL 12598.5 24 +NULL NULL exportischolar #2 prieingeseought 2000 3 9 AAAAAAAABAAAAAAA 12598.5 24 +NULL NULL exportischolar #2 prieingeseought 2000 4 NULL NULL 32916.94 13 +NULL NULL exportischolar #2 prieingeseought 2000 4 10 NULL 8794.42 38 +NULL NULL exportischolar #2 prieingeseought 2000 4 10 AAAAAAAABAAAAAAA 8794.42 38 +NULL NULL exportischolar #2 prieingeseought 2000 4 11 NULL 7104.48 46 +NULL NULL exportischolar #2 prieingeseought 2000 4 11 AAAAAAAABAAAAAAA 7104.48 46 +NULL NULL exportischolar #2 prieingeseought 2000 4 12 NULL 17018.04 18 +NULL NULL exportischolar #2 prieingeseought 2000 4 12 AAAAAAAABAAAAAAA 17018.04 18 +Books NULL NULL NULL NULL NULL NULL NULL 154336.53 50 +Books NULL NULL NULL NULL NULL NULL NULL 11241291.75 1 +Books NULL corpunivamalg #3 NULL NULL NULL NULL NULL 154336.53 50 +Books NULL corpunivamalg #3 esen stcallyought NULL NULL NULL NULL 154336.53 50 +Books NULL corpunivamalg #3 esen stcallyought 2000 NULL NULL NULL 154336.53 50 +Books arts NULL NULL NULL NULL NULL NULL 656854.9 8 +Books arts amalgmaxi #12 NULL NULL NULL NULL NULL 329816.74 25 +Books arts amalgmaxi #12 oughtpriation NULL NULL NULL NULL 139217.84 78 +Books arts amalgmaxi #12 oughtpriation 2000 NULL NULL NULL 139217.84 78 +Books arts amalgmaxi #3 NULL NULL NULL NULL NULL 140692.55 73 +Books arts amalgmaxi #3 ablecallypri NULL NULL NULL NULL 140692.55 73 +Books arts amalgmaxi #3 ablecallypri 2000 NULL NULL NULL 140692.55 73 +Books business NULL NULL NULL NULL NULL NULL 473439.3 16 +Books business importomaxi #8 NULL NULL NULL NULL NULL 152234.8 56 +Books business importomaxi #8 n stpripriought NULL NULL NULL NULL 152234.8 56 +Books business importomaxi #8 n stpripriought 2000 NULL NULL NULL 152234.8 56 +Books business importomaxi #9 NULL NULL NULL NULL NULL 230646.96 35 +Books business importomaxi #9 eseesecally NULL NULL NULL NULL 137808.86 82 +Books business importomaxi #9 eseesecally 2000 NULL NULL NULL 137808.86 82 +Books computers NULL NULL NULL NULL NULL NULL 596733.76 10 +Books computers exportimaxi #2 NULL NULL NULL NULL NULL 151801.34 59 +Books computers exportimaxi #2 prin stbarought NULL NULL NULL NULL 151801.34 59 +Books computers exportimaxi #2 prin stbarought 2000 NULL NULL NULL 151801.34 59 +Books computers exportimaxi #3 NULL NULL NULL NULL NULL 222162.64 38 +Books cooking NULL NULL NULL NULL NULL NULL 569982.86 11 +Books cooking amalgunivamalg #12 NULL NULL NULL NULL NULL 242089.84 34 +Books entertainments NULL NULL NULL NULL NULL NULL 697513.29 6 +Books entertainments edu packmaxi #12 NULL NULL NULL NULL NULL 338643.39 23 +Books entertainments edu packmaxi #3 NULL NULL NULL NULL NULL 228878.6 36 +Books fiction NULL NULL NULL NULL NULL NULL 1137699.54 3 +Books fiction scholarunivamalg #2 NULL NULL NULL NULL NULL 280625.61 27 +Books fiction scholarunivamalg #2 n stableeing NULL NULL NULL NULL 163385.42 45 +Books fiction scholarunivamalg #2 n stableeing 2000 NULL NULL NULL 163385.42 45 +Books fiction scholarunivamalg #3 NULL NULL NULL NULL NULL 173187.96 42 +Books fiction scholarunivamalg #3 callyesepriought NULL NULL NULL NULL 173187.96 42 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q68.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q68.slt.no new file mode 100644 index 00000000000..9db90115141 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q68.slt.no @@ -0,0 +1,149 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIRRR +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_ext_sales_price) extended_price, + sum(ss_ext_list_price) list_price, + sum(ss_ext_tax) extended_tax + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +NULL NULL Concord Fox 70 15617.02 1059.2 35200.1 +NULL Barbara Lakewood Crossroads 1605 39675.78 1585.03 67339.13 +NULL Kathleen Hardy Oak Hill 4883 24648.88 593.86 51214.77 +NULL Steven Millwood Willow 7453 18758.18 633.79 45256.55 +NULL NULL Springdale Harmony 8257 39278.49 1894.21 67320.03 +NULL NULL Riverview Centerville 14846 16708.43 1059.51 26169.35 +NULL John Enterprise Pleasant Grove 23464 13000.02 223.41 34977.93 +Adams Bryan Waterloo Newtown 20839 25454.42 780.04 52866.38 +Adcock Dawn Clifton Marion 19523 37144.42 2143.71 61434.97 +Adkins Melissa Deerfield Lakewood 18097 6090.83 204.04 11238.81 +Allen Lori Five Points Springfield 11041 9179.25 320.48 25672.49 +Amos Ima Franklin Springfield 21981 21459 755.93 54158.21 +Angel Flora Newport Oakdale 8451 30029.63 789.73 75153.35 +Arrington Victor Elm Grove Bridgeport 8622 8688.08 479.4 35842.3 +Ashe Sara Riverdale Royal 1192 17307.9 459.09 29839.33 +Ashe Barbara Spring Hill Mount Vernon 17181 30636.04 1477.92 58401.82 +Atkinson Kelli Oakwood Lincoln 1463 19994.85 1284.27 44678.83 +Bailey Charlotte Providence Hamilton 12226 12660.12 467.44 22492.11 +Baker Amy Newtown Pine Grove 5701 35178.08 1086.67 46445.74 +Baldwin Laura Red Hill Sulphur Springs 16488 22043.81 560.9 62207.68 +Ball John Lincoln Liberty 11987 14756.56 509.06 26184.34 +Battle John Fairview Clinton 794 20178.98 900.99 43712.68 +Bell Walter Langdon Liberty 16574 31106.41 1024.04 56086 +Blanchard Phillip Pine Grove Centerville 3681 22226.45 674.64 44938.66 +Bliss Heidi Pleasant Grove Allison 2013 5856.19 93.67 16524.8 +Breeden April Oak Hill Greenfield 1574 35813.69 1219.84 52494.3 +Britt Inez Oakwood Hillcrest 61 8996.92 385.04 13384.62 +Bryant Bernard Philadelphia Spring Hill 22333 20421.22 1085.05 37683.65 +Buck Amanda Stringtown Bayside 22536 24107.1 757.16 36157.62 +Burnette Louis Union Hill Jamestown 6096 10951.73 289.59 30688.82 +Calloway Maxine Brownsville Woodbury 15897 36156.1 1603.21 63194.69 +Carr Kathleen Bethel Shady Grove 17770 13137.92 721.71 40092.97 +Castillo Roxane Stringtown Riverdale 435 8721.49 171.82 30368.34 +Chamberlin Michael Greenwood Mechanicsburg 18086 21483.02 1063.94 38890.2 +Chaney Donna Lincoln Johnsonville 19617 26743.33 1590.02 56877.18 +Chang Deanna Lincoln Highland Park 8798 16650.29 460.69 28191.19 +Chavez Tanya Lincoln Hamilton 4969 25218.54 1254.61 44064.58 +Chen Neva Oak Grove Friendship 16314 21344.97 359.85 31476.95 +Cole Ruby Arlington Mount Olive 10552 21056.35 761.5 34509.38 +Cole Matthew Hopewell Fox 11664 15195.02 759.39 34199.01 +Concepcion Robert Woodlawn Farmington 2858 25416.85 720.89 39207.16 +Connolly Pamela Webb Allison 8899 34547.25 1429.55 42666.61 +Contreras Joni Friendship Wilson 19528 9611.24 472.22 39766.16 +Cook Darrin Florence Lee 9063 19439.35 415.56 31816.75 +Cooper Susan Enterprise Five Points 14345 18007.52 461.89 44270.22 +Cooper Eric Hopewell Springfield 19422 11602.09 220.32 24358.55 +Corrigan Christy Clifton Bunker Hill 11524 12411.12 511 17954.39 +Corrigan Christy Clifton Newtown 17823 20144.88 732.13 30205 +Coughlin Sonja Stewart Summit 22147 23533.01 1088.39 50291.83 +Cox Shaun Hopewell Lakewood 15214 17902.55 673.09 44334.26 +Crum Henry Unionville Mount Olive 20855 24612.62 739.59 54435.89 +Davidson Darrell Green Acres Union City 4114 24112 1150.55 54824.29 +Davis Donald Clifton Sulphur Springs 8102 17552.12 354.99 29643.59 +Davis Leroy Red Hill Bunker Hill 21158 10195.51 528.82 37308.96 +Decker Timothy White Oak Enterprise 6664 14887.04 577.92 40015.91 +Dyer Patrick Plainview Highland Park 11389 9129.27 183.23 25810.79 +Ellison Anne Stratford Union Hill 17581 22250.6 887.25 38906.25 +Evans Ladonna New Hope Harmony 4613 23953.22 527.69 41640.77 +Fleming NULL Unionville Wilton 16959 10740.57 553.42 20441.22 +Fortune Lois Bethel Florence 15040 27074.44 1811.52 42103.06 +Foster NULL Union Wildwood 1167 9921.97 440.34 22954.42 +Freeman Marcus Crossroads Red Hill 20496 30719.75 1206.25 53820.87 +Garcia Yolanda Edgewood Woodville 16156 21765.73 903.11 51976.3 +Gibbs Cheryl Oakwood Oakland 14045 28114.73 1224.92 45980.16 +Gibson Walter Mount Olive Macedonia 20024 15595.45 820.75 42519.71 +Goldstein Alexander Greenwood Glenwood 5802 20313.44 550.48 32864.59 +Grant Maryanne Shiloh Lincoln 10097 24335.25 1091.55 59382.63 +Gregory Leola Woodville Springdale 5405 17671.23 472 36908.87 +Grissom Cecelia Woodlawn Centerville 12822 22306.1 724.92 43619.95 +Hackett Marsha Highland Park Waterloo 4003 26750.03 1230.77 45351.12 +Hagen Catherine Indian Village Mountain View 18488 36233.51 1082.57 71603.51 +Hampton Sadie Red Hill Edgewood 13726 38082.01 1211.61 63105.35 +Harrison Holly Forest Hills Oakwood 10214 15816.26 694.39 53257.14 +Hawley Lucille Kingston Lincoln 23825 31826.38 1614.37 63152.44 +Healy William Georgetown Bunker Hill 15164 15234.39 723.77 23344.65 +Henry Delores Mount Olive Deerfield 10445 27392.16 1670.48 57869.67 +Herring Michael Concord Enterprise 20089 19308.17 676.23 36135.22 +Hightower John Mount Pleasant Green Acres 13639 15527.44 842 41596.48 +Holmes Suzanne Wyoming Frogtown 15229 21344.8 1105.63 51707.33 +Hooper Gloria Mount Zion Lakewood 4342 20373.55 354.29 36173.32 +Hopkins Erica Union Hill Mount Zion 20888 26792.75 964.56 65569.23 +Howard Judith Pleasant Hill Valley View 7406 31828.08 1482.09 45803.05 +Hubbard Chad Jamestown Pleasant Valley 22508 25125.05 1120.25 58067.2 +Hughes James Pine Grove Springdale 15340 8993.84 340.37 22594.65 +Hull Steven Kingston Fairview 17039 20950.63 411.47 37221.89 +Ingle Edward Spring Valley Cedar Grove 20385 22235.18 909.9 58582.09 +Jackson Marie The Meadows Spring Hill 3317 16181.19 655.54 48276.14 +Jackson Barbara Bethel Greenfield 18152 8358.07 136.19 25457.22 +Johnson Trina Oak Ridge Midway 5177 43275.74 1836.89 93396.45 +Johnson Beverly Oakdale Enterprise 7637 45541 1549.33 67878.3 +Johnson Kerrie Jamestown Sumner 7859 25314.9 652.7 43507.1 +Johnson Phil Shiloh Lakeview 7931 23532.56 999.61 64079.67 +Johnson David Lakewood Hillcrest 11067 26568.84 878.62 54491.91 +Jones Jeremy Red Hill Woodland 3664 15705.27 634.76 41605.59 +Jones Sandra Clifton Pleasant Hill 6429 21785.67 1439.29 46543.07 +Jones Faye Woodland Ashland 12403 23085.58 1255.95 44658.36 +Jones Rodney Crossroads Hopewell 12770 18657.31 626.15 30319.14 +Jones John Spring Grove Hardy 14194 21472.19 824.92 37021.54 +Khan Lou Antioch Foster 3754 38265.07 1328.12 53159.75 +King Brent White Oak Spring Hill 23833 31437 1598.67 52167.65 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q69.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q69.slt.no new file mode 100644 index 00000000000..3d21575faa7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q69.slt.no @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIITI +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ('KY', + 'GA', + 'NM') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND (NOT EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND NOT EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +LIMIT 100; +---- +F D 4 yr Degree 1 6500 1 High Risk 1 +F D Advanced Degree 1 500 1 High Risk 1 +F D Unknown 1 6000 1 High Risk 1 +F M 2 yr Degree 1 2000 1 High Risk 1 +F M Advanced Degree 1 500 1 Low Risk 1 +F M Advanced Degree 1 5500 1 High Risk 1 +F M Advanced Degree 1 10000 1 Good 1 +F M College 1 1500 1 Low Risk 1 +F M Unknown 1 9500 1 Low Risk 1 +F S 2 yr Degree 1 1000 1 High Risk 1 +F S Advanced Degree 1 9500 1 Unknown 1 +F S College 1 5500 1 Unknown 1 +F S College 1 9500 1 Low Risk 1 +F S Secondary 1 8500 1 Good 1 +F S Unknown 1 2000 1 Good 1 +F S Unknown 1 6500 1 Unknown 1 +F U 2 yr Degree 1 3000 1 Low Risk 1 +F U 2 yr Degree 1 10000 1 Good 1 +F U Primary 1 5000 1 Good 1 +F U Unknown 1 8000 1 High Risk 1 +F W 2 yr Degree 1 6500 1 Low Risk 1 +F W 4 yr Degree 1 500 1 Unknown 1 +F W 4 yr Degree 1 4000 1 Unknown 1 +F W Advanced Degree 1 5000 1 Good 1 +F W College 1 9000 1 High Risk 1 +F W Secondary 1 3000 1 Good 1 +F W Secondary 1 7000 1 Unknown 1 +M D 2 yr Degree 1 2500 1 Low Risk 1 +M D 2 yr Degree 1 5500 1 Good 1 +M D Advanced Degree 1 4000 1 Good 1 +M D Advanced Degree 1 5500 1 Good 1 +M D College 1 1500 1 Low Risk 1 +M D College 1 3000 1 High Risk 1 +M D Primary 1 4000 1 Unknown 1 +M D Primary 1 6000 1 Low Risk 1 +M D Primary 1 8500 1 High Risk 1 +M D Secondary 2 10000 2 High Risk 2 +M D Unknown 1 3500 1 High Risk 1 +M M 2 yr Degree 1 8000 1 High Risk 1 +M M 2 yr Degree 1 9500 1 High Risk 1 +M M 2 yr Degree 1 10000 1 High Risk 1 +M M 4 yr Degree 1 7500 1 Unknown 1 +M M College 1 3000 1 Low Risk 1 +M S 2 yr Degree 1 2000 1 Low Risk 1 +M S 2 yr Degree 1 4500 1 Unknown 1 +M S 2 yr Degree 1 9500 1 High Risk 1 +M S 2 yr Degree 1 10000 1 High Risk 1 +M S 4 yr Degree 1 4500 1 Good 1 +M S 4 yr Degree 1 5000 1 Unknown 1 +M S College 1 5000 1 Low Risk 1 +M S College 1 8500 1 Low Risk 1 +M S College 1 10000 1 Good 1 +M S Primary 1 500 1 High Risk 1 +M S Primary 1 3000 1 High Risk 1 +M S Primary 1 5500 1 Low Risk 1 +M S Secondary 1 500 1 Low Risk 1 +M S Secondary 1 500 1 Unknown 1 +M S Secondary 1 5000 1 Unknown 1 +M S Secondary 1 7000 1 Low Risk 1 +M S Unknown 1 5500 1 Good 1 +M S Unknown 1 8000 1 Good 1 +M S Unknown 1 8500 1 Good 1 +M U 2 yr Degree 1 1000 1 Good 1 +M U 4 yr Degree 1 1500 1 Unknown 1 +M U 4 yr Degree 1 3000 1 Unknown 1 +M U College 1 3500 1 High Risk 1 +M U College 1 7500 1 Good 1 +M U Primary 1 9500 1 Unknown 1 +M U Unknown 1 8000 1 Unknown 1 +M W Primary 1 6000 1 Good 1 +M W Unknown 1 6000 1 High Risk 1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q7.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q7.slt.no new file mode 100644 index 00000000000..38e7a6959b1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q7.slt.no @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRRR +SELECT i_item_id, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +AAAAAAAAAABAAAAA 69.666666666667 47.236666 0 28.813333 +AAAAAAAAAACAAAAA 39 16.29 149.24 7.81 +AAAAAAAAAAEAAAAA 27 117.77 0 107.17 +AAAAAAAAAAFAAAAA 28.5 121.25 0 75.345 +AAAAAAAAAAHAAAAA 84 161.49 0 117.88 +AAAAAAAAABAAAAAA 31 159.33 0 81.25 +AAAAAAAAABBAAAAA 38 101.87 0 58.06 +AAAAAAAAABDAAAAA 24 55.7 0 51.24 +AAAAAAAAABEAAAAA 46 40.99 0 36.07 +AAAAAAAAACCAAAAA 26 29.38 0 4.11 +AAAAAAAAACDAAAAA 70 123.8 0 79.23 +AAAAAAAAACFAAAAA 5 11.18 25.27 6.48 +AAAAAAAAACGAAAAA 74 142.69 1815.64 28.53 +AAAAAAAAADBAAAAA 26 121.38 0 114.09 +AAAAAAAAADEAAAAA 6 120.4 0 8.42 +AAAAAAAAADFAAAAA 22 27.15 208.66 12.48 +AAAAAAAAAEAAAAAA 72 50.4 1097.606666 22.496666 +AAAAAAAAAFCAAAAA 34 125.315 0 75.305 +AAAAAAAAAFDAAAAA 84 77.94 0 51.35 +AAAAAAAAAFFAAAAA 58 39.16 0 32.11 +AAAAAAAAAFGAAAAA 9 49.06 0 3.43 +AAAAAAAAAGCAAAAA 82 142.16 0 35.54 +AAAAAAAAAGEAAAAA 72.666666666667 104.956666 141.243333 66.646666 +AAAAAAAAAHAAAAAA 32 48.03 0 8.16 +AAAAAAAAAHBAAAAA 5 53.29 0 13.85 +AAAAAAAAAHDAAAAA 36 84.22 0 48 +AAAAAAAAAIAAAAAA 10 44.28 19.92 7.97 +AAAAAAAAAICAAAAA 44 162.5 0 138.12 +AAAAAAAAAIDAAAAA 32.5 50.8 0 17.285 +AAAAAAAAAJBAAAAA 22 123.12 1474.555 67.1 +AAAAAAAAAJCAAAAA 36 31.55 223.08 10.585 +AAAAAAAAAJEAAAAA 17 135.65 0 51.54 +AAAAAAAAAKDAAAAA 41.666666666667 54.376666 655.013333 27.293333 +AAAAAAAAALCAAAAA 52 93.71 0 86.21 +AAAAAAAAALDAAAAA 99 93.88 0 26.28 +AAAAAAAAAMBAAAAA 31 19.53 0 11.71 +AAAAAAAAAMCAAAAA 52.5 52.465 0 37.5 +AAAAAAAAAMFAAAAA 94.5 36.15 925.215 26.015 +AAAAAAAAANAAAAAA 11 124.46 0 120.72 +AAAAAAAAANEAAAAA 20 40.955 9.605 12.115 +AAAAAAAAAOAAAAAA 38 5.85 58.68 3.51 +AAAAAAAAAOCAAAAA 51 62.17 0 41.03 +AAAAAAAAAOGAAAAA 93 118.91 0 21.4 +AAAAAAAAAPCAAAAA 69 36.75 0 19.47 +AAAAAAAABAGAAAAA 55 35.65 0 12.12 +AAAAAAAABBFAAAAA 1 64.92 0 33.81 +AAAAAAAABCEAAAAA 72 37.2 0 19.71 +AAAAAAAABFBAAAAA 75 16.55 145.53 2.31 +AAAAAAAABFEAAAAA 50 111.665 0 73.545 +AAAAAAAABGAAAAAA 55 103.7 461.83 27.99 +AAAAAAAABGDAAAAA 68.5 144.685 0 31.495 +AAAAAAAABHFAAAAA 85 33.13 0 26.5 +AAAAAAAABJAAAAAA 82 94.535 0 78.2 +AAAAAAAABLBAAAAA 37 116.02 0 25.52 +AAAAAAAABLEAAAAA 15 121.49 0 121.49 +AAAAAAAABNFAAAAA 30 102.57 0 75.9 +AAAAAAAABOEAAAAA 100 175.27 613.41 87.63 +AAAAAAAACAAAAAAA 12 39.05 150.8 13.66 +AAAAAAAACADAAAAA 51.666666666667 33.32 0 7.136666 +AAAAAAAACAFAAAAA 53 58.99 0 5.89 +AAAAAAAACBCAAAAA 50 165.51 664.51 120.82 +AAAAAAAACCAAAAAA 38 128.34 0 120.63 +AAAAAAAACCBAAAAA 94 106.85 0 17.09 +AAAAAAAACCDAAAAA 22 149.72 0 139.23 +AAAAAAAACDAAAAAA 88.5 51.465 139.93 9.515 +AAAAAAAACDCAAAAA 74 144.94 0 56.52 +AAAAAAAACDFAAAAA 37 139.195 0 79.035 +AAAAAAAACDGAAAAA 53.5 92.765 0 85.62 +AAAAAAAACEBAAAAA 44.5 67.665 0 59.12 +AAAAAAAACECAAAAA 58 59.68 0 13.12 +AAAAAAAACEFAAAAA 56 49.86 0 22.335 +AAAAAAAACFBAAAAA 50 39.78 0 28.295 +AAAAAAAACGAAAAAA 80.5 42.005 0 19.355 +AAAAAAAACGDAAAAA 87 132.725 0 45.1 +AAAAAAAACHBAAAAA 14.5 130.07 0 51.84 +AAAAAAAACHEAAAAA 20 7.97 0 7.81 +AAAAAAAACIAAAAAA 61 115.55 0 4.62 +AAAAAAAACIBAAAAA 65 21.9 0 4.38 +AAAAAAAACIEAAAAA 49.5 53.035 34.31 22.615 +AAAAAAAACJAAAAAA 64 8.91 0 8.73 +AAAAAAAACJCAAAAA 21 40.74 0 7.77 +AAAAAAAACJDAAAAA 100 145.19 0 52.26 +AAAAAAAACJFAAAAA 19 101.205 0 77.175 +AAAAAAAACKEAAAAA 35 70.14 490.45 25.95 +AAAAAAAACLAAAAAA 64 30.15 0 10.55 +AAAAAAAACLDAAAAA 48 33.04 0 15.19 +AAAAAAAACMCAAAAA 31 106.5 1630.82 69.22 +AAAAAAAACMDAAAAA 34.5 135.245 0 105.98 +AAAAAAAACMFAAAAA 2 109.97 0 47.28 +AAAAAAAACNBAAAAA 56 97.13 113.07 12.62 +AAAAAAAACNFAAAAA 40 61.74 5.705 43.025 +AAAAAAAACOAAAAAA 26 17.7 0 11.5 +AAAAAAAACOBAAAAA 53 26.01 0 4.065 +AAAAAAAACOEAAAAA 97 134.34 0 85.97 +AAAAAAAACPAAAAAA 69 82.17 0 34.51 +AAAAAAAACPCAAAAA 59.5 95.775 178.635 19.94 +AAAAAAAACPDAAAAA NULL 47.1 0 1.41 +AAAAAAAACPFAAAAA 27 54.24 0 8.13 +AAAAAAAADABAAAAA 41 57.8 758.41 19.07 +AAAAAAAADAHAAAAA 66 51.87 0 47.613333 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q70.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q70.slt.no new file mode 100644 index 00000000000..9fc55f4d267 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q70.slt.no @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RTTII +SELECT sum(ss_net_profit) AS total_sum, + s_state, + s_county, + grouping(s_state)+grouping(s_county) AS lochierarchy, + rank() OVER (PARTITION BY grouping(s_state)+grouping(s_county), + CASE + WHEN grouping(s_county) = 0 THEN s_state + END + ORDER BY sum(ss_net_profit) DESC) AS rank_within_parent +FROM store_sales, + date_dim d1, + store +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN + (SELECT s_state + FROM + (SELECT s_state AS s_state, + rank() OVER (PARTITION BY s_state + ORDER BY sum(ss_net_profit) DESC) AS ranking + FROM store_sales, + store, + date_dim + WHERE d_month_seq BETWEEN 1200 AND 1200+11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5 ) +GROUP BY rollup(s_state,s_county) +ORDER BY lochierarchy DESC , + CASE + WHEN grouping(s_state)+grouping(s_county) = 0 THEN s_state + END , + rank_within_parent +LIMIT 100; +---- +-44708893.64 NULL NULL 2 1 +-44708893.64 TN NULL 1 1 +-44708893.64 TN Williamson County 0 1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q71.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q71.slt.no new file mode 100644 index 00000000000..92fad927a59 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q71.slt.no @@ -0,0 +1,107 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITIIR +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + sum(ext_price) ext_price +FROM item, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, + date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, + date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy=11 + AND d_year=1999 ) tmp, + time_dim +WHERE sold_item_sk = i_item_sk + AND i_manager_id=1 + AND time_sk = t_time_sk + AND (t_meal_time = 'breakfast' + OR t_meal_time = 'dinner') +GROUP BY i_brand, + i_brand_id, + t_hour, + t_minute +ORDER BY ext_price DESC NULLS FIRST, + i_brand_id NULLS FIRST, + t_hour NULLS FIRST; +---- +7010004 univnameless #4 17 27 16760.59 +6007003 brandcorp #3 19 46 8076.2 +1002002 importoamalg #2 9 33 7050.93 +1002002 importoamalg #2 17 57 6408.22 +1002002 importoamalg #2 18 52 6079.15 +7010004 univnameless #4 18 35 5753.02 +6007003 brandcorp #3 19 20 5499.68 +4004001 edu packedu pack #1 18 28 4840.75 +7010004 univnameless #4 19 7 4672.5 +6007003 brandcorp #3 17 30 4584.39 +10010013 univamalgamalg #13 18 44 4515.05 +10004004 edu packunivamalg #4 9 42 4407.04 +1002002 importoamalg #2 18 10 4330.04 +7008009 namelessbrand #9 17 4 4276.34 +7008009 namelessbrand #9 8 53 4190.4 +10004004 edu packunivamalg #4 8 35 3933.15 +10010013 univamalgamalg #13 17 17 3276 +1001002 amalgamalg #2 8 23 3229.98 +1001002 amalgamalg #2 19 50 3047.4 +6007003 brandcorp #3 7 39 2617.16 +1002002 importoamalg #2 9 22 2582.32 +10004004 edu packunivamalg #4 7 43 2089.24 +4004001 edu packedu pack #1 19 43 2040.56 +10010013 univamalgamalg #13 19 56 1601.4 +4004001 edu packedu pack #1 8 52 1567.02 +6007003 brandcorp #3 18 47 1490.17 +7010004 univnameless #4 18 28 1480.32 +10004004 edu packunivamalg #4 8 4 1436.83 +7008009 namelessbrand #9 9 10 1325.4 +10004004 edu packunivamalg #4 9 28 1306.03 +10004004 edu packunivamalg #4 19 36 1227.28 +10010013 univamalgamalg #13 17 36 1090.32 +6005001 scholarcorp #1 17 19 966.84 +10004004 edu packunivamalg #4 18 56 870.09 +1001002 amalgamalg #2 19 4 866.64 +7008009 namelessbrand #9 18 59 716.4 +4004001 edu packedu pack #1 19 45 707.5 +1001002 amalgamalg #2 17 21 681.12 +1001002 amalgamalg #2 9 32 632.16 +6007003 brandcorp #3 19 35 618.63 +10004004 edu packunivamalg #4 9 38 576.72 +7008009 namelessbrand #9 18 39 481.08 +10004004 edu packunivamalg #4 19 8 460.8 +10010013 univamalgamalg #13 17 52 447.64 +6007003 brandcorp #3 9 25 339.9 +10010013 univamalgamalg #13 9 13 317.98 +7008009 namelessbrand #9 17 5 298.62 +7008009 namelessbrand #9 9 54 280.14 +6005001 scholarcorp #1 19 37 261.52 +7008009 namelessbrand #9 9 8 213.84 +1002002 importoamalg #2 9 3 203.85 +7010004 univnameless #4 17 44 141.37 +7010004 univnameless #4 9 54 117 +6005001 scholarcorp #1 19 16 64.32 +6005001 scholarcorp #1 9 43 27.72 +10004004 edu packunivamalg #4 18 50 20.09 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q72.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q72.slt.no new file mode 100644 index 00000000000..6855af37f1f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q72.slt.no @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIIII +SELECT i_item_desc, + w_warehouse_name, + d1.d_week_seq, + sum(CASE + WHEN p_promo_sk IS NULL THEN 1 + ELSE 0 + END) no_promo, + sum(CASE + WHEN p_promo_sk IS NOT NULL THEN 1 + ELSE 0 + END) promo, + count(*) total_cnt +FROM catalog_sales +JOIN inventory ON (cs_item_sk = inv_item_sk) +JOIN warehouse ON (w_warehouse_sk=inv_warehouse_sk) +JOIN item ON (i_item_sk = cs_item_sk) +JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk) +JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk) +JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk) +JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk) +JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk) +LEFT OUTER JOIN promotion ON (cs_promo_sk=p_promo_sk) +LEFT OUTER JOIN catalog_returns ON (cr_item_sk = cs_item_sk + AND cr_order_number = cs_order_number) +WHERE d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > (d1.d_date + INTERVAL '5' DAY) + AND hd_buy_potential = '>10000' + AND d1.d_year = 1999 + AND cd_marital_status = 'D' +GROUP BY i_item_desc, + w_warehouse_name, + d1.d_week_seq +ORDER BY total_cnt DESC NULLS FIRST, + i_item_desc NULLS FIRST, + w_warehouse_name NULLS FIRST, + d1.d_week_seq NULLS FIRST +LIMIT 100; +---- +NULL Conventional childr 5211 0 1 1 +Actually keen visitors shall inject just to Conventional childr 5199 0 1 1 +Ago daily schools can get so precise artists. Bloody agencies could see in a Conventional childr 5209 0 1 1 +Arms should not produce more. Mutual, heavy prices lead. Alone minimal effects cannot look pr Conventional childr 5210 0 1 1 +Bad, original councils ought to let human, new procedures. Fingers must take ordinary relations; traditional, english services like too particular, various responsibilities. Possible, responsi Conventional childr 5183 0 1 1 +Bloody instruments must not sing nowadays strangely valuable groups. Standards would allow much forests. Criminal, important days might allow very from a applicatio Conventional childr 5216 0 1 1 +Carefully keen planes would test vi Conventional childr 5181 0 1 1 +Carefully keen planes would test vi Conventional childr 5215 0 1 1 +Clearly relevant rooms develop necessary hotels. Available women can get as att Conventional childr 5198 0 1 1 +Close, small reports will expand seriously men. Serious, a Conventional childr 5206 0 1 1 +Complete cases shall happen to a generations. Systems must tell sometimes main scenes. Tonnes make still main trees. Different, personal owners become often little important y Conventional childr 5200 0 1 1 +Councils must form more available, common strategies. Factors can enable. J Conventional childr 5216 0 1 1 +Different ages should read other, greek camps Conventional childr 5186 0 1 1 +Different files remain on a conditions. Low specific resources could not foresee such as a risks. Just combined efforts may make reports; boring, super memories descend to Conventional childr 5216 0 1 1 +Dramatically particular charts used to boost unusually false organisers. I Conventional childr 5206 0 1 1 +Factors wish local teachers. Apparently bitter studies should feel. Private masses may not get. Obviously male errors will get now unusual groups. Enough new elements must not reject thus due essentia Conventional childr 5210 0 1 1 +Flowers suffer following, subst Conventional childr 5207 0 1 1 +Gastric ends go personal, official years; concentrat Conventional childr 5211 0 1 1 +Gene Conventional childr 5182 0 1 1 +Great, aware guidelines will risk really with a i Conventional childr 5207 0 1 1 +Happy products provide mediterranean figures. Conventional childr 5201 0 1 1 +Hea Conventional childr 5210 0 1 1 +Interesting offices should not find already from a characteristics. N Conventional childr 5217 0 1 1 +Large wings used to see particul Conventional childr 5166 0 1 1 +Large, mass ways ought to make very different, right conservatives. Black, diplomatic observers must cope only firm responsibilities. Only global methods thrive so southern places. Answers give. Grea Conventional childr 5199 0 1 1 +Level, natural pages tell relevant stones. Strange events must not throw twice. High subjects s Conventional childr 5211 0 1 1 +Major, strange officials would not assess bodies. Final, suitable applications must serve towns. Joint boys might question most social, tiny strings. Kn Conventional childr 5210 0 1 1 +More positive terms shall not change considerable waves; duties stimulate so in a germans. Real, general costs might send on the eyes. Electrical traders know on a rates. Conventional childr 5192 0 1 1 +More still tests shall not lie old, valuable trends. Local, content cars Conventional childr 5168 0 1 1 +Officers ought to serve even. Central objectives help accounts. Houses bring exclusively after a questions. Increased talks account most new, likely patterns. Conventional childr 5177 0 1 1 +Old matters extract characters. Men might preserve really special objectives; young, afraid events deliver best so much as Conventional childr 5185 0 1 1 +Old years hear effective, local men. Original names go above lo Conventional childr 5210 0 1 1 +Popul Conventional childr 5203 0 1 1 +Positive reasons Conventional childr 5204 0 1 1 +Pp. see even good, wonderful cel Conventional childr 5170 0 1 1 +Regular years lead ideas. Operations put at all to a ideas. Notes tackle in the months. New, common respects might guess forward high, open consequences. Right, ma Conventional childr 5198 0 1 1 +Scientists shall reduce. As small records may give again cases. Consistent, stupid scales should swa Conventional childr 5204 0 1 1 +Small, early knees meet strongly funds. Present levels give also key prices. Blank products choose frequently appropri Conventional childr 5211 0 1 1 +Social minutes try and so on Conventional childr 5198 0 1 1 +Soon constitutional provisions might send hot components. Ancient children might Conventional childr 5210 0 1 1 +Sources can try already by a tests. Particul Conventional childr 5185 0 1 1 +Special workers ought to grow dramatic Conventional childr 5197 0 1 1 +Special, so-called things talk clinical claims. Global, certain departments should say prices; clearly sudden expenses feel moving winds. More financial years could pro Conventional childr 5187 0 1 1 +Still early stones Conventional childr 5193 0 1 1 +Still personal jobs could not forget. Available customers will seem Conventional childr 5208 0 1 1 +Successful sources shall confront too from a costs; duly working operations should look quick Conventional childr 5209 0 1 1 +Trying designs come useful years. Units used to know levels. Rather other versions can match indeed part Conventional childr 5204 0 1 1 +Well whole are Conventional childr 5204 0 1 1 +White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Conventional childr 5207 0 1 1 +Wrong, spanish islands can settle extremely final kids; outer, difficult pupils may convert typical, real police. Conventional childr 5200 0 1 1 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q73.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q73.slt.no new file mode 100644 index 00000000000..a361d9fa002 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q73.slt.no @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTII +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_buy_potential = 'Unknown' + OR household_demographics.hd_buy_potential = '>10000') + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END > 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county IN ('Orange County', + 'Bronx County', + 'Franklin Parish', + 'Williamson County') + GROUP BY ss_ticket_number, + ss_customer_sk) dj, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt DESC, + c_last_name ASC; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q74.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q74.slt.no new file mode 100644 index 00000000000..89fb756cff1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q74.slt.no @@ -0,0 +1,72 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTT +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ss_net_paid) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ws_net_paid) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year_ = 2001 + AND t_s_secyear.year_ = 2001+1 + AND t_w_firstyear.year_ = 2001 + AND t_w_secyear.year_ = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END +ORDER BY 1 NULLS FIRST +LIMIT 100; +---- +AAAAAAAAEPOBAAAA Thomas Whitehurst +AAAAAAAAFNMBAAAA Shawnna Freeland +AAAAAAAAKJHBAAAA Roderick Ballard diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q75.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q75.slt.no new file mode 100644 index 00000000000..39f5f14d536 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q75.slt.no @@ -0,0 +1,105 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIIIIIIIR +WITH all_sales AS + ( SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + SUM(sales_cnt) AS sales_cnt , + SUM(sales_amt) AS sales_amt + FROM + (SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + cs_quantity - COALESCE(cr_return_quantity,0) AS sales_cnt , + cs_ext_sales_price - COALESCE(cr_return_amount,0.0) AS sales_amt + FROM catalog_sales + JOIN item ON i_item_sk=cs_item_sk + JOIN date_dim ON d_date_sk=cs_sold_date_sk + LEFT JOIN catalog_returns ON (cs_order_number=cr_order_number + AND cs_item_sk=cr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ss_quantity - COALESCE(sr_return_quantity,0) AS sales_cnt , + ss_ext_sales_price - COALESCE(sr_return_amt,0.0) AS sales_amt + FROM store_sales + JOIN item ON i_item_sk=ss_item_sk + JOIN date_dim ON d_date_sk=ss_sold_date_sk + LEFT JOIN store_returns ON (ss_ticket_number=sr_ticket_number + AND ss_item_sk=sr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ws_quantity - COALESCE(wr_return_quantity,0) AS sales_cnt , + ws_ext_sales_price - COALESCE(wr_return_amt,0.0) AS sales_amt + FROM web_sales + JOIN item ON i_item_sk=ws_item_sk + JOIN date_dim ON d_date_sk=ws_sold_date_sk + LEFT JOIN web_returns ON (ws_order_number=wr_order_number + AND ws_item_sk=wr_item_sk) + WHERE i_category='Books') sales_detail + GROUP BY d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id) +SELECT prev_yr.d_year AS prev_year , + curr_yr.d_year AS year_ , + curr_yr.i_brand_id , + curr_yr.i_class_id , + curr_yr.i_category_id , + curr_yr.i_manufact_id , + prev_yr.sales_cnt AS prev_yr_cnt , + curr_yr.sales_cnt AS curr_yr_cnt , + curr_yr.sales_cnt-prev_yr.sales_cnt AS sales_cnt_diff , + curr_yr.sales_amt-prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, + all_sales prev_yr +WHERE curr_yr.i_brand_id=prev_yr.i_brand_id + AND curr_yr.i_class_id=prev_yr.i_class_id + AND curr_yr.i_category_id=prev_yr.i_category_id + AND curr_yr.i_manufact_id=prev_yr.i_manufact_id + AND curr_yr.d_year=2002 + AND prev_yr.d_year=2002-1 + AND CAST(curr_yr.sales_cnt AS DECIMAL(17,2))/CAST(prev_yr.sales_cnt AS DECIMAL(17,2))<0.9 +ORDER BY sales_cnt_diff, + sales_amt_diff +LIMIT 100; +---- +2001 2002 7014009 1 9 270 6406 4902 -1504 -96433.09 +2001 2002 1003001 11 9 42 6494 5035 -1459 -114481.62 +2001 2002 9010004 10 9 545 5880 4551 -1329 -37133.98 +2001 2002 9001002 1 9 571 5718 4459 -1259 -84458.37 +2001 2002 9004010 4 9 10 5731 4515 -1216 -40636.79 +2001 2002 9006010 6 9 100 5781 4720 -1061 -54852.46 +2001 2002 9008010 2 9 954 6018 4961 -1057 11852.78 +2001 2002 9011002 11 9 390 5826 4800 -1026 -49995.57 +2001 2002 9015008 15 9 285 5674 4668 -1006 -19662.6 +2001 2002 10003008 8 9 175 5286 4288 -998 -48826.96 +2001 2002 9003008 3 9 375 5658 4673 -985 -93779.45 +2001 2002 9008004 8 9 220 5720 4768 -952 -47017.66 +2001 2002 9008008 8 9 194 5778 4862 -916 -79951.52 +2001 2002 9006010 3 9 99 4971 4091 -880 -71635.44 +2001 2002 9001010 4 9 268 5125 4314 -811 -43611.3 +2001 2002 9001009 1 9 117 4657 3855 -802 -22681.71 +2001 2002 9015010 2 9 286 5467 4745 -722 -32261.81 +2001 2002 7004007 2 9 248 5696 4990 -706 -4431.85 +2001 2002 1002001 4 9 546 5873 5222 -651 -35266.76 +2001 2002 10009005 9 9 149 6025 5376 -649 -11139.67 +2001 2002 9002008 2 9 256 4778 4153 -625 -55830.85 +2001 2002 2001001 1 9 2 5512 4888 -624 -27199.28 +2001 2002 1004001 4 9 286 5437 4848 -589 43130.5 +2001 2002 9010008 10 9 66 5362 4814 -548 -44680.67 +2001 2002 7004005 4 9 156 4942 4447 -495 -34471.55 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q76.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q76.slt.no new file mode 100644 index 00000000000..b3efda3bc01 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q76.slt.no @@ -0,0 +1,160 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIITIR +SELECT channel, + col_name, + d_year, + d_qoy, + i_category, + COUNT(*) sales_cnt, + SUM(ext_sales_price) sales_amt +FROM + ( SELECT 'store' AS channel, + 'ss_store_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, + item, + date_dim + WHERE ss_store_sk IS NULL + AND ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + UNION ALL SELECT 'web' AS channel, + 'ws_ship_customer_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, + item, + date_dim + WHERE ws_ship_customer_sk IS NULL + AND ws_sold_date_sk=d_date_sk + AND ws_item_sk=i_item_sk + UNION ALL SELECT 'catalog' AS channel, + 'cs_ship_addr_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, + item, + date_dim + WHERE cs_ship_addr_sk IS NULL + AND cs_sold_date_sk=d_date_sk + AND cs_item_sk=i_item_sk) foo +GROUP BY channel, + col_name, + d_year, + d_qoy, + i_category +ORDER BY channel NULLS FIRST, + col_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +catalog cs_ship_addr_sk 1998 1 Books 5 7206.99 +catalog cs_ship_addr_sk 1998 1 Children 1 NULL +catalog cs_ship_addr_sk 1998 1 Electronics 3 0 +catalog cs_ship_addr_sk 1998 1 Home 2 NULL +catalog cs_ship_addr_sk 1998 1 Jewelry 5 13391.41 +catalog cs_ship_addr_sk 1998 1 Music 3 5081.44 +catalog cs_ship_addr_sk 1998 1 Shoes 1 20528.2 +catalog cs_ship_addr_sk 1998 1 Sports 1 2289.6 +catalog cs_ship_addr_sk 1998 1 Women 1 411.07 +catalog cs_ship_addr_sk 1998 2 Books 1 2254.92 +catalog cs_ship_addr_sk 1998 2 Children 2 NULL +catalog cs_ship_addr_sk 1998 2 Jewelry 1 988.68 +catalog cs_ship_addr_sk 1998 2 Men 1 NULL +catalog cs_ship_addr_sk 1998 2 Music 1 NULL +catalog cs_ship_addr_sk 1998 2 Shoes 1 279 +catalog cs_ship_addr_sk 1998 2 Sports 1 5616.97 +catalog cs_ship_addr_sk 1998 3 Children 2 2587.99 +catalog cs_ship_addr_sk 1998 3 Electronics 4 11493.8 +catalog cs_ship_addr_sk 1998 3 Home 3 NULL +catalog cs_ship_addr_sk 1998 3 Jewelry 2 14605.8 +catalog cs_ship_addr_sk 1998 3 Men 2 NULL +catalog cs_ship_addr_sk 1998 3 Music 3 NULL +catalog cs_ship_addr_sk 1998 3 Shoes 1 1485.8 +catalog cs_ship_addr_sk 1998 3 Sports 3 2311.34 +catalog cs_ship_addr_sk 1998 3 Women 1 507.78 +catalog cs_ship_addr_sk 1998 4 Books 2 NULL +catalog cs_ship_addr_sk 1998 4 Children 4 7318.08 +catalog cs_ship_addr_sk 1998 4 Electronics 10 10598.91 +catalog cs_ship_addr_sk 1998 4 Home 3 NULL +catalog cs_ship_addr_sk 1998 4 Jewelry 5 14681.6 +catalog cs_ship_addr_sk 1998 4 Men 1 1011.08 +catalog cs_ship_addr_sk 1998 4 Music 4 2.61 +catalog cs_ship_addr_sk 1998 4 Shoes 2 NULL +catalog cs_ship_addr_sk 1998 4 Sports 2 NULL +catalog cs_ship_addr_sk 1998 4 Women 6 11591.16 +catalog cs_ship_addr_sk 1999 1 Electronics 1 NULL +catalog cs_ship_addr_sk 1999 1 Home 1 NULL +catalog cs_ship_addr_sk 1999 1 Men 2 5949.64 +catalog cs_ship_addr_sk 1999 1 Shoes 1 3401.6 +catalog cs_ship_addr_sk 1999 1 Women 1 2451.6 +catalog cs_ship_addr_sk 1999 2 Electronics 1 NULL +catalog cs_ship_addr_sk 1999 2 Home 1 157.76 +catalog cs_ship_addr_sk 1999 2 Jewelry 1 13627.53 +catalog cs_ship_addr_sk 1999 2 Men 1 6337.86 +catalog cs_ship_addr_sk 1999 2 Shoes 4 2249.07 +catalog cs_ship_addr_sk 1999 3 Books 1 4613.99 +catalog cs_ship_addr_sk 1999 3 Children 2 538.56 +catalog cs_ship_addr_sk 1999 3 Electronics 1 NULL +catalog cs_ship_addr_sk 1999 3 Home 3 4559.91 +catalog cs_ship_addr_sk 1999 3 Jewelry 4 320 +catalog cs_ship_addr_sk 1999 3 Men 3 7168.52 +catalog cs_ship_addr_sk 1999 3 Music 2 27.54 +catalog cs_ship_addr_sk 1999 3 Shoes 2 3470.25 +catalog cs_ship_addr_sk 1999 3 Sports 1 328.6 +catalog cs_ship_addr_sk 1999 3 Women 1 NULL +catalog cs_ship_addr_sk 1999 4 Books 2 4164.12 +catalog cs_ship_addr_sk 1999 4 Children 4 10086.76 +catalog cs_ship_addr_sk 1999 4 Electronics 2 1380.69 +catalog cs_ship_addr_sk 1999 4 Home 2 8343 +catalog cs_ship_addr_sk 1999 4 Jewelry 3 NULL +catalog cs_ship_addr_sk 1999 4 Music 4 9293.11 +catalog cs_ship_addr_sk 1999 4 Shoes 1 355.64 +catalog cs_ship_addr_sk 1999 4 Sports 3 NULL +catalog cs_ship_addr_sk 1999 4 Women 4 4509.26 +catalog cs_ship_addr_sk 2000 1 Children 1 809.88 +catalog cs_ship_addr_sk 2000 1 Music 2 1233.56 +catalog cs_ship_addr_sk 2000 1 Shoes 1 NULL +catalog cs_ship_addr_sk 2000 2 Books 1 5440.76 +catalog cs_ship_addr_sk 2000 2 Children 1 452.2 +catalog cs_ship_addr_sk 2000 2 Electronics 1 15685.37 +catalog cs_ship_addr_sk 2000 2 Home 2 4743.11 +catalog cs_ship_addr_sk 2000 2 Jewelry 3 903.95 +catalog cs_ship_addr_sk 2000 2 Men 1 1608.02 +catalog cs_ship_addr_sk 2000 2 Music 2 513.88 +catalog cs_ship_addr_sk 2000 3 Books 4 4030.64 +catalog cs_ship_addr_sk 2000 3 Electronics 4 12.34 +catalog cs_ship_addr_sk 2000 3 Home 2 392.58 +catalog cs_ship_addr_sk 2000 3 Jewelry 1 NULL +catalog cs_ship_addr_sk 2000 3 Men 4 447.6 +catalog cs_ship_addr_sk 2000 3 Music 4 1779.92 +catalog cs_ship_addr_sk 2000 3 Shoes 2 5747.7 +catalog cs_ship_addr_sk 2000 3 Sports 4 8016.55 +catalog cs_ship_addr_sk 2000 3 Women 3 5521.29 +catalog cs_ship_addr_sk 2000 4 Books 4 2817.1 +catalog cs_ship_addr_sk 2000 4 Children 2 2115.84 +catalog cs_ship_addr_sk 2000 4 Electronics 2 NULL +catalog cs_ship_addr_sk 2000 4 Home 3 9334.32 +catalog cs_ship_addr_sk 2000 4 Jewelry 3 5684.9 +catalog cs_ship_addr_sk 2000 4 Men 2 1828.96 +catalog cs_ship_addr_sk 2000 4 Music 1 2559.04 +catalog cs_ship_addr_sk 2000 4 Shoes 4 9267.74 +catalog cs_ship_addr_sk 2000 4 Sports 4 29879.19 +catalog cs_ship_addr_sk 2000 4 Women 2 7212.38 +catalog cs_ship_addr_sk 2001 1 Children 1 NULL +catalog cs_ship_addr_sk 2001 1 Electronics 3 NULL +catalog cs_ship_addr_sk 2001 1 Home 2 553.28 +catalog cs_ship_addr_sk 2001 1 Jewelry 2 NULL +catalog cs_ship_addr_sk 2001 1 Shoes 1 NULL +catalog cs_ship_addr_sk 2001 1 Women 1 4147.72 +catalog cs_ship_addr_sk 2001 2 Children 1 657.59 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q77.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q77.slt.no new file mode 100644 index 00000000000..c48bb00e623 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q77.slt.no @@ -0,0 +1,110 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRRR +WITH ss AS + (SELECT s_store_sk, + sum(ss_ext_sales_price) AS sales, + sum(ss_net_profit) AS profit + FROM store_sales, + date_dim, + store + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk) , + sr AS + (SELECT s_store_sk, + sum(sr_return_amt) AS returns_, + sum(sr_net_loss) AS profit_loss + FROM store_returns, + date_dim, + store + WHERE sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), + cs AS + (SELECT cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cs_call_center_sk), + cr AS + (SELECT cr_call_center_sk, + sum(cr_return_amount) AS returns_, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, + date_dim + WHERE cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cr_call_center_sk ), + ws AS + (SELECT wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, + date_dim, + web_page + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), + wr AS + (SELECT wp_web_page_sk, + sum(wr_return_amt) AS returns_, + sum(wr_net_loss) AS profit_loss + FROM web_returns, + date_dim, + web_page + WHERE wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + ss.s_store_sk AS id , + sales , + coalesce(returns_, 0) AS returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ss + LEFT JOIN sr ON ss.s_store_sk = sr.s_store_sk + UNION ALL SELECT 'catalog channel' AS channel , + cs_call_center_sk AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM cs , + cr + UNION ALL SELECT 'web channel' AS channel , + ws.wp_web_page_sk AS id , + sales , + coalesce(returns_, 0) returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ws + LEFT JOIN wr ON ws.wp_web_page_sk = wr.wp_web_page_sk ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST, + returns_ DESC +LIMIT 100; +---- +NULL NULL 33397231.04 900133.28 -7960764.06 +catalog channel NULL 16638029.32 439455.24 -1835781.1 +catalog channel NULL 7970.02 219727.62 -123938.76 +catalog channel 1 16630059.3 219727.62 -1711842.34 +store channel NULL 12336295.94 312536.92 -5581643.99 +store channel 1 12336295.94 312536.92 -5581643.99 +web channel NULL 4422905.78 148141.12 -543338.97 +web channel 1 1379681.84 50616.75 -282318.2 +web channel 2 1633032.19 60424.48 -77297.26 +web channel 5 1410191.75 37099.89 -183723.51 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q78.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q78.slt.no new file mode 100644 index 00000000000..26e39a1702d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q78.slt.no @@ -0,0 +1,181 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIRIRRIRR +WITH ws AS + (SELECT d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + sum(ws_quantity) ws_qty, + sum(ws_wholesale_cost) ws_wc, + sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN web_returns ON wr_order_number=ws_order_number + AND ws_item_sk=wr_item_sk + JOIN date_dim ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, + ws_item_sk, + ws_bill_customer_sk ), + cs AS + (SELECT d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + sum(cs_quantity) cs_qty, + sum(cs_wholesale_cost) cs_wc, + sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN catalog_returns ON cr_order_number=cs_order_number + AND cs_item_sk=cr_item_sk + JOIN date_dim ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, + cs_item_sk, + cs_bill_customer_sk ), + ss AS + (SELECT d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + sum(ss_quantity) ss_qty, + sum(ss_wholesale_cost) ss_wc, + sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN store_returns ON sr_ticket_number=ss_ticket_number + AND ss_item_sk=sr_item_sk + JOIN date_dim ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, + ss_item_sk, + ss_customer_sk ) +SELECT ss_sold_year, + ss_item_sk, + ss_customer_sk, + round((ss_qty*1.00)/(coalesce(ws_qty,0)+coalesce(cs_qty,0)),2) ratio, + ss_qty store_qty, + ss_wc store_wholesale_cost, + ss_sp store_sales_price, + coalesce(ws_qty,0)+coalesce(cs_qty,0) other_chan_qty, + coalesce(ws_wc,0)+coalesce(cs_wc,0) other_chan_wholesale_cost, + coalesce(ws_sp,0)+coalesce(cs_sp,0) other_chan_sales_price +FROM ss +LEFT JOIN ws ON (ws_sold_year=ss_sold_year + AND ws_item_sk=ss_item_sk + AND ws_customer_sk=ss_customer_sk) +LEFT JOIN cs ON (cs_sold_year=ss_sold_year + AND cs_item_sk=ss_item_sk + AND cs_customer_sk=ss_customer_sk) +WHERE (coalesce(ws_qty,0)>0 + OR coalesce(cs_qty, 0)>0) + AND ss_sold_year=2000 +ORDER BY ss_sold_year, + ss_item_sk, + ss_customer_sk, + ss_qty DESC, + ss_wc DESC, + ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + ratio +LIMIT 100; +---- +2000 23 3758 0.46 46 39.22 34.08 100 46.02 60.52 +2000 23 4546 0.64 59 40.35 21.35 92 49.68 26.7 +2000 25 2481 1.55 82 16.55 27.85 53 69.11 118.17 +2000 25 8726 1.08 92 68.38 46.4 85 21.08 21.96 +2000 41 5936 0.15 13 52.98 50 85 20.69 16.01 +2000 55 5686 1.25 65 79.27 89.79 52 62.89 76.47 +2000 73 1648 1.02 44 3.04 0.15 43 3.98 3.9 +2000 77 6799 1.61 53 56.12 16.56 33 20.64 23.35 +2000 119 2246 0.97 97 7.26 5.3 100 67.52 37.2 +2000 122 9327 0.63 37 8.94 4.44 59 1.44 1.14 +2000 137 1697 0.75 59 70.47 34.41 79 16.39 4.91 +2000 139 862 1.56 64 42.09 0 41 30.81 15.45 +2000 157 537 0.36 27 65.9 63.57 74 86.39 5.44 +2000 158 3324 0.19 15 81.4 118.09 78 11.54 5.65 +2000 161 6190 1.24 42 39.19 17.51 34 57.78 30.33 +2000 169 7087 1.1 11 87.68 78.36 10 63 37.39 +2000 176 2786 0.15 7 7.84 4.51 46 55.1 39.32 +2000 181 4740 2.09 46 62.22 44.64 22 12.78 9.83 +2000 188 1112 0.33 18 13.19 6.24 55 53.48 93.84 +2000 197 5692 0.08 6 63.82 30.37 79 41.03 7.51 +2000 203 2869 0.58 57 40.63 32.73 99 3.68 5.25 +2000 205 5057 0.21 15 82 116.3 73 79.03 58.63 +2000 215 1907 8 32 91.64 35.38 4 72.92 127.02 +2000 224 5161 0.96 65 47.02 60.77 68 95.5 29.13 +2000 242 7754 0.03 3 48.47 24.59 95 63.52 63.36 +2000 248 9266 0.2 20 23.51 22.21 99 91.21 128.52 +2000 251 2102 4.12 70 27.28 1.1 17 75.72 27.86 +2000 259 5168 1.31 77 3.3 0.49 59 14.18 7.82 +2000 263 5719 0.59 55 34.57 37.6 94 8.08 12.14 +2000 271 6157 1.11 88 68.63 20.42 79 3.96 3.35 +2000 289 3771 1.29 97 99.07 28.01 75 45.58 27.12 +2000 293 542 0.38 13 87.17 144.7 34 59.34 108.59 +2000 311 424 1.28 23 47.32 30.6 18 88.79 157.55 +2000 317 6392 1.65 79 73.85 96.97 48 4.64 0.25 +2000 319 1403 0.97 57 82.95 77.14 59 2.86 4.73 +2000 338 8840 1.28 77 20.21 8.08 60 55.6 40.56 +2000 341 3132 2.6 91 29.11 2.53 35 93.96 43.86 +2000 343 8709 1 87 46.2 62.69 87 68.02 24.28 +2000 347 7897 0.56 22 17.86 1.48 39 56.56 18.52 +2000 356 2220 1.02 91 50.21 29.07 89 22.41 15.83 +2000 359 1681 NULL NULL NULL NULL 38 54.77 15.71 +2000 367 323 0.86 12 69.9 23.98 14 75.11 101.2 +2000 368 8363 3.79 53 42.95 2.42 14 62.17 24.24 +2000 386 2728 1.65 84 72.95 60.02 51 99.44 50.11 +2000 389 3307 0.79 56 44.08 38.44 71 85.74 25.46 +2000 391 2262 1.23 97 88.83 12.88 79 38.86 50.59 +2000 395 6785 0.71 27 8.03 1.88 38 37.73 35.91 +2000 401 2890 2.33 70 6 4.19 30 98.22 136.13 +2000 409 2498 0.97 61 17.21 13.97 63 31.17 20.39 +2000 410 6544 0.25 25 68.88 41.53 100 85.53 80.46 +2000 427 1876 1.2 96 17.8 3.56 80 24.74 7.97 +2000 427 2183 1.43 96 87.43 83.72 67 27.04 27.12 +2000 427 6547 1 75 70.45 11.93 75 71.65 23.64 +2000 443 724 11 99 17.74 10.39 9 3.04 0.21 +2000 446 6966 0.33 28 83.09 63.63 84 8.98 7.43 +2000 452 1469 2.34 68 58.91 32.57 29 79.72 87.89 +2000 469 8806 0.4 29 95.79 107.68 73 64.89 2.2 +2000 481 7670 8.13 65 5.95 0.72 8 33.5 16.72 +2000 482 4333 0.37 7 44.78 7.05 19 9.89 13.51 +2000 482 6402 0.07 4 12.77 13.1 57 94.61 45.26 +2000 485 3717 1.22 55 20.98 18.37 45 32.79 34.1 +2000 506 4168 0.95 19 85.98 81.81 20 62.61 3.6 +2000 518 4772 0.61 14 11.42 16.18 23 15.32 35.58 +2000 523 4191 0.52 11 97.39 25.12 21 74.14 187.56 +2000 527 4838 0.04 3 89.04 55.77 71 74.04 110.28 +2000 535 1501 4.18 71 2.58 2.63 17 6.23 6.87 +2000 554 5578 1.65 38 24.17 13.38 23 84.97 67.58 +2000 593 6390 0.37 36 61.07 50.28 98 29.12 37.05 +2000 593 9511 1.06 35 88.27 41.31 33 78.12 23.78 +2000 613 1493 1.02 92 14.43 8.23 90 97.55 28.15 +2000 619 9133 1.49 76 17.14 4.29 51 17.32 23.09 +2000 629 8602 0.62 38 16.26 7.46 61 9.88 6.9 +2000 631 5400 0.28 18 38.73 24.88 65 53.79 68.38 +2000 635 2602 8 64 27.52 1.98 8 87.6 203.99 +2000 637 8271 3.31 86 23.69 5.77 26 6.64 4.85 +2000 644 957 0.21 6 33.89 21.08 28 93.93 43.2 +2000 650 2246 1.04 56 46.23 43.5 54 25.44 21.66 +2000 653 2720 3.22 29 49.61 6.07 9 40.06 0 +2000 655 7424 1.66 58 99.24 39.65 35 74 9.81 +2000 667 9939 0.17 7 13.11 5.1 42 69.11 40.74 +2000 673 7901 0.73 38 13.27 18.97 52 1.23 0.44 +2000 677 239 0.76 58 30.39 29.36 76 3.98 5.47 +2000 679 5047 1.88 94 89.69 32.28 50 60.29 28.59 +2000 685 6682 0.22 21 25.8 7.79 97 35.61 90.31 +2000 689 7110 0.79 46 41.76 41.52 58 46.92 17.47 +2000 692 8311 0.08 8 1.78 2.26 98 1.72 1.28 +2000 695 2821 2.48 99 99.85 16.67 40 82.81 156.67 +2000 697 8762 0.74 49 32.29 20.68 66 40.66 22.46 +2000 704 1375 4 88 92.79 30.98 22 19.38 4.88 +2000 710 9318 0.89 74 30.99 23.97 83 12.49 0.98 +2000 716 9030 0.95 56 72.4 24.32 59 42.78 44.96 +2000 731 4333 3.54 92 79.71 39.75 26 34.62 19.08 +2000 733 7348 1.25 25 16.84 18.22 20 6.15 6.19 +2000 739 7247 1.16 94 38.61 41.91 81 42 30.84 +2000 749 9946 0.73 72 31.24 21.38 98 40.87 51.26 +2000 781 173 1.34 47 55.58 11.43 35 15.4 7.54 +2000 809 895 1.17 96 45.73 68.36 82 64.21 102.97 +2000 817 1846 0.41 26 22.81 20.38 63 65.39 13.75 +2000 835 63 1.31 46 26.44 33.68 35 74.49 12.2 +2000 836 8960 2.64 87 79.96 137.56 33 53.25 12.26 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q79.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q79.slt.no new file mode 100644 index 00000000000..951204ab2e7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q79.slt.no @@ -0,0 +1,143 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIRR +SELECT c_last_name, + c_first_name, + SUBSTRING(s_city,1,30), + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + store.s_city , + sum(ss_coupon_amt) amt , + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count > 2) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + store.s_city) ms, + customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + SUBSTRING(s_city,1,30) NULLS FIRST, + profit NULLS FIRST, + ss_ticket_number +LIMIT 100; +---- +NULL NULL Midway 7696 0 NULL +NULL NULL Midway 12121 6853.63 -30041.98 +NULL NULL Midway 2636 5300.7 -25774.14 +NULL NULL Midway 6542 7545.83 -24610.07 +NULL NULL Midway 11623 5712.51 -14900.28 +NULL NULL Midway 19793 698.94 -13610.1 +NULL NULL Midway 6637 831.38 -12213.15 +NULL NULL Midway 23768 4962.51 -11916.4 +NULL NULL Midway 20142 5211.62 -10686.78 +NULL NULL Midway 14527 9283.62 -10397.22 +NULL NULL Midway 12890 2494.11 -10339.8 +NULL NULL Midway 19260 1291.42 -9533.87 +NULL NULL Midway 7696 2093.28 -9202.28 +NULL NULL Midway 5904 3772.87 -4797.28 +NULL NULL Midway 9251 278.97 -4249.96 +NULL NULL Midway 20098 2113.91 -3411.71 +NULL Ada Midway 14864 2654.34 -14134.68 +NULL Angel Midway 5358 160.48 -14248.42 +NULL Bobby Midway 18053 751.03 -15237.11 +NULL Carrie Midway 21097 0 -8840.06 +NULL Kathleen Midway 19126 2417.06 -8452.79 +NULL Leonel Midway 5172 1337.45 -7699 +NULL Mable Midway 11598 1417.85 -16896.33 +NULL Margaret Midway 4054 242.7 -5375.15 +NULL Steven Midway 12488 129.94 -24819.68 +NULL Steven Midway 7453 2836.17 -13506.44 +NULL Timothy Midway 9990 2221.38 -20252.86 +NULL William Midway 313 4236.5 -21448.4 +Abrams Dennis Midway 18770 3041.82 -15332.82 +Adair Billy Midway 10311 2131.89 -11184.11 +Adams Pablo Midway 1019 91.18 -8699.05 +Adamson Pauline Midway 5255 455.53 -8557.37 +Adcock Dawn Midway 19523 3596.14 -5224.39 +Adkins Melissa Midway 18097 500.93 -3053.66 +Agee Susanne Midway 20434 3002.61 -11444.41 +Aguilar Jerry Midway 3974 1895.03 -15451.48 +Ainsworth John Midway 12751 2.56 -9084.71 +Alford Roberta Midway 15770 296.73 -14669.82 +Allen Christine Midway 18045 161.78 3938.93 +Allen Harold Midway 23975 2823.36 -1701.54 +Allen Kimberly Midway 4864 854.36 -1994.32 +Allen Michael Midway 19594 460.6 -9537.34 +Allen Michael Midway 22584 1007.72 -6154.76 +Allen Richard Midway 10990 1862.88 -12586.79 +Ambrose Glenn Midway 20298 4024.6 -6532.88 +Anderson Eleanor Midway 8833 1929.92 -4954.47 +Anderson Jason Midway 17429 3617.59 -5833.66 +Andrews Robert Midway 4593 2832.56 -9026.43 +Aponte Joseph Midway 7979 3185.89 -11396.7 +Arndt Vanessa Midway 13951 2561.03 -11753.82 +Arnold Jonathan Midway 18469 1531.04 -12386.88 +Arroyo Earl Midway 19434 1917.73 -16980.72 +Austin Mollie Midway 6232 0 NULL +Austin Mollie Midway 6232 2808.02 -5492.54 +Ayala Larry Midway 22249 6322.6 -13598.81 +Bailey Charlotte Midway 12226 314.5 -750.56 +Bailey Nicole Midway 5902 3806.56 -2938.09 +Baker Albert Midway 12096 2046.14 -4668.79 +Ball Valerie Midway 19560 0 -10164.97 +Banks Margaret Midway 19152 466.75 -6816.2 +Barba Anthony Midway 23677 755.07 -16184.07 +Barba Anthony Midway 12483 1079.54 -10292.98 +Barnes Byron Midway 15056 16516.45 -18151.42 +Barnes James Midway 5065 3219.07 -7644.46 +Barnes Joseph Midway 22341 669.46 1300.51 +Barnett William Midway 9977 2485.38 -15850.07 +Barr Kyle Midway 20206 2425.6 -6805.83 +Barrett Amy Midway 19458 165.41 -3156.37 +Baskin Vida Midway 8300 35.76 -4371.64 +Baum Dean Midway 14409 7180.23 -11349.75 +Becker Suzanne Midway 10744 1043.56 -6282.91 +Bell Lacey Midway 22034 4939.81 -8340.27 +Benitez Michele Midway 2008 597.65 -3632.03 +Benitez Rickie Midway 11249 3400.83 -8636.67 +Benjamin NULL Midway 2308 5313.58 -19422.37 +Bennett Kimberly Midway 20002 1763.93 -4430.36 +Betts Violet Midway 15060 1828.72 -1041.95 +Betz Adriene Midway 1127 372.06 -6675.73 +Bingham Michael Midway 17574 1.8 -15929.64 +Bingham Michael Midway 1089 123.71 -5598.58 +Bird Frederick Midway 6952 916.78 -10831.27 +Bivins Sandra Midway 15910 1886.75 146.47 +Black Danny Midway 22229 2179.65 -5237.65 +Black Jeremy Midway 9238 2760.56 -29499.47 +Blackburn Katherine Midway 9076 4537.17 -11682.05 +Blair David Midway 6257 1054.82 -9610.17 +Blair John Midway 5297 3454.05 -20926.06 +Blevins Juanita Midway 10452 149.8 -7988.98 +Bliss Heidi Midway 22937 4584.99 -11104.08 +Boisvert Benjamin Midway 20440 4682.3 -4644.43 +Bolt Leonard Midway 18206 44.77 -21027.94 +Bond Larry Midway 15614 1316.87 -11740.43 +Bond Rhonda Midway 14764 1480.49 -7401.73 +Bowman Harry Midway 19319 212.85 -12580.17 +Box Rina Midway 16981 1337.11 -7116.36 +Boyd Jose Midway 10709 1661.67 -12143.15 +Bradford Joseph Midway 20489 0 -3376.6 +Bradford Susan Midway 14526 3410.07 -10906.11 +Branch Byron Midway 16980 51.18 -3529.18 +Bratton Fannie Midway 14115 7515.49 -27661.75 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q8.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q8.slt.no new file mode 100644 index 00000000000..9864393598a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q8.slt.no @@ -0,0 +1,432 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +SELECT s_store_name, + sum(ss_net_profit) +FROM store_sales, + date_dim, + store, + (SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE SUBSTRING(ca_zip, 1, 5) IN ('24128', + '76232', + '65084', + '87816', + '83926', + '77556', + '20548', + '26231', + '43848', + '15126', + '91137', + '61265', + '98294', + '25782', + '17920', + '18426', + '98235', + '40081', + '84093', + '28577', + '55565', + '17183', + '54601', + '67897', + '22752', + '86284', + '18376', + '38607', + '45200', + '21756', + '29741', + '96765', + '23932', + '89360', + '29839', + '25989', + '28898', + '91068', + '72550', + '10390', + '18845', + '47770', + '82636', + '41367', + '76638', + '86198', + '81312', + '37126', + '39192', + '88424', + '72175', + '81426', + '53672', + '10445', + '42666', + '66864', + '66708', + '41248', + '48583', + '82276', + '18842', + '78890', + '49448', + '14089', + '38122', + '34425', + '79077', + '19849', + '43285', + '39861', + '66162', + '77610', + '13695', + '99543', + '83444', + '83041', + '12305', + '57665', + '68341', + '25003', + '57834', + '62878', + '49130', + '81096', + '18840', + '27700', + '23470', + '50412', + '21195', + '16021', + '76107', + '71954', + '68309', + '18119', + '98359', + '64544', + '10336', + '86379', + '27068', + '39736', + '98569', + '28915', + '24206', + '56529', + '57647', + '54917', + '42961', + '91110', + '63981', + '14922', + '36420', + '23006', + '67467', + '32754', + '30903', + '20260', + '31671', + '51798', + '72325', + '85816', + '68621', + '13955', + '36446', + '41766', + '68806', + '16725', + '15146', + '22744', + '35850', + '88086', + '51649', + '18270', + '52867', + '39972', + '96976', + '63792', + '11376', + '94898', + '13595', + '10516', + '90225', + '58943', + '39371', + '94945', + '28587', + '96576', + '57855', + '28488', + '26105', + '83933', + '25858', + '34322', + '44438', + '73171', + '30122', + '34102', + '22685', + '71256', + '78451', + '54364', + '13354', + '45375', + '40558', + '56458', + '28286', + '45266', + '47305', + '69399', + '83921', + '26233', + '11101', + '15371', + '69913', + '35942', + '15882', + '25631', + '24610', + '44165', + '99076', + '33786', + '70738', + '26653', + '14328', + '72305', + '62496', + '22152', + '10144', + '64147', + '48425', + '14663', + '21076', + '18799', + '30450', + '63089', + '81019', + '68893', + '24996', + '51200', + '51211', + '45692', + '92712', + '70466', + '79994', + '22437', + '25280', + '38935', + '71791', + '73134', + '56571', + '14060', + '19505', + '72425', + '56575', + '74351', + '68786', + '51650', + '20004', + '18383', + '76614', + '11634', + '18906', + '15765', + '41368', + '73241', + '76698', + '78567', + '97189', + '28545', + '76231', + '75691', + '22246', + '51061', + '90578', + '56691', + '68014', + '51103', + '94167', + '57047', + '14867', + '73520', + '15734', + '63435', + '25733', + '35474', + '24676', + '94627', + '53535', + '17879', + '15559', + '53268', + '59166', + '11928', + '59402', + '33282', + '45721', + '43933', + '68101', + '33515', + '36634', + '71286', + '19736', + '58058', + '55253', + '67473', + '41918', + '19515', + '36495', + '19430', + '22351', + '77191', + '91393', + '49156', + '50298', + '87501', + '18652', + '53179', + '18767', + '63193', + '23968', + '65164', + '68880', + '21286', + '72823', + '58470', + '67301', + '13394', + '31016', + '70372', + '67030', + '40604', + '24317', + '45748', + '39127', + '26065', + '77721', + '31029', + '31880', + '60576', + '24671', + '45549', + '13376', + '50016', + '33123', + '19769', + '22927', + '97789', + '46081', + '72151', + '15723', + '46136', + '51949', + '68100', + '96888', + '64528', + '14171', + '79777', + '28709', + '11489', + '25103', + '32213', + '78668', + '22245', + '15798', + '27156', + '37930', + '62971', + '21337', + '51622', + '67853', + '10567', + '38415', + '15455', + '58263', + '42029', + '60279', + '37125', + '56240', + '88190', + '50308', + '26859', + '64457', + '89091', + '82136', + '62377', + '36233', + '63837', + '58078', + '17043', + '30010', + '60099', + '28810', + '98025', + '29178', + '87343', + '73273', + '30469', + '64034', + '39516', + '86057', + '21309', + '90257', + '67875', + '40162', + '11356', + '73650', + '61810', + '72013', + '30431', + '22461', + '19512', + '13375', + '55307', + '30625', + '83849', + '68908', + '26689', + '96451', + '38193', + '46820', + '88885', + '84935', + '69035', + '83144', + '47537', + '56616', + '94983', + '48033', + '69952', + '25486', + '61547', + '27385', + '61860', + '58048', + '56910', + '16807', + '17871', + '35258', + '31387', + '35458', + '35576') INTERSECT + SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip, + count(*) cnt + FROM customer_address, + customer + WHERE ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag='Y' + GROUP BY ca_zip + HAVING count(*) > 10)A1)A2) V1 +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 1998 + AND (SUBSTRING(s_zip, 1, 2) = SUBSTRING(V1.ca_zip, 1, 2)) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q80.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q80.slt.no new file mode 100644 index 00000000000..74df7737be4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q80.slt.no @@ -0,0 +1,191 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRR +WITH ssr AS + (SELECT s_store_id AS store_id, + sum(ss_ext_sales_price) AS sales, + sum(coalesce(sr_return_amt, 0)) AS returns_, + sum(ss_net_profit - coalesce(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN store_returns ON (ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number), date_dim, + store, + item, + promotion + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(coalesce(cr_return_amount, 0)) AS returns_, + sum(cs_net_profit - coalesce(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN catalog_returns ON (cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number), date_dim, + catalog_page, + item, + promotion + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(coalesce(wr_return_amt, 0)) AS returns_, + sum(ws_net_profit - coalesce(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN web_returns ON (ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number), date_dim, + web_site, + item, + promotion + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', store_id) AS id , + sales , + returns_ , + profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', catalog_page_id) AS id , + sales , + returns_ , + profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +NULL NULL 1542653 76093.2 -311488.86 +catalog channel NULL 557749.42 31205.51 -7963.71 +catalog channel catalog_pageAAAAAAAAAAABAAAA 454.71 0 -1092.96 +catalog channel catalog_pageAAAAAAAAABABAAAA 9857.46 0 2874.03 +catalog channel catalog_pageAAAAAAAAADABAAAA 8359.08 0 1573.58 +catalog channel catalog_pageAAAAAAAAAECBAAAA 3355.44 0 2153.88 +catalog channel catalog_pageAAAAAAAAAFABAAAA 746.12 0 439.53 +catalog channel catalog_pageAAAAAAAAAGABAAAA 149.73 0 -817.23 +catalog channel catalog_pageAAAAAAAAAKCBAAAA 836.54 0 82.84 +catalog channel catalog_pageAAAAAAAAAKPAAAAA 921.12 0 -4198.05 +catalog channel catalog_pageAAAAAAAABAABAAAA 3148.98 0 840.79 +catalog channel catalog_pageAAAAAAAABDABAAAA 8125.11 0 2579.57 +catalog channel catalog_pageAAAAAAAABDCBAAAA 1812.72 0 -1528.8 +catalog channel catalog_pageAAAAAAAABEABAAAA 944.64 0 -2490.48 +catalog channel catalog_pageAAAAAAAABKCBAAAA 3059.19 2039.46 -4842.21 +catalog channel catalog_pageAAAAAAAABKPAAAAA 6379.18 0 -5981.76 +catalog channel catalog_pageAAAAAAAABMPAAAAA 5742.29 0 2906.42 +catalog channel catalog_pageAAAAAAAABNCBAAAA 6052.8 4469.76 -4047.63 +catalog channel catalog_pageAAAAAAAABNPAAAAA 19978.7 0 3653.78 +catalog channel catalog_pageAAAAAAAABPCBAAAA 29.24 0 -1285.09 +catalog channel catalog_pageAAAAAAAABPPAAAAA 1385.42 0 144.69 +catalog channel catalog_pageAAAAAAAACCABAAAA 1830.64 0 -4371.78 +catalog channel catalog_pageAAAAAAAACDABAAAA 473.04 0 -267.12 +catalog channel catalog_pageAAAAAAAACGABAAAA 6.35 0 -105.6 +catalog channel catalog_pageAAAAAAAACHABAAAA 992.68 0 -981.64 +catalog channel catalog_pageAAAAAAAACICBAAAA 422.28 73.44 42.8 +catalog channel catalog_pageAAAAAAAACKCBAAAA 2645.37 0 -3021.48 +catalog channel catalog_pageAAAAAAAACKPAAAAA 1957.89 0 -1069.47 +catalog channel catalog_pageAAAAAAAACLPAAAAA 1544.6 693.88 -306.47 +catalog channel catalog_pageAAAAAAAACMPAAAAA 2161.32 0 969.5 +catalog channel catalog_pageAAAAAAAACNCBAAAA 341.7 45.56 -1249.68 +catalog channel catalog_pageAAAAAAAACOPAAAAA 10197.21 575.4 -1648.1 +catalog channel catalog_pageAAAAAAAADAABAAAA 10734.04 0 6740.96 +catalog channel catalog_pageAAAAAAAADCABAAAA 0 0 -2439.5 +catalog channel catalog_pageAAAAAAAADKPAAAAA 491.26 0 -2197.17 +catalog channel catalog_pageAAAAAAAADLCBAAAA 6232.1 0 863.8 +catalog channel catalog_pageAAAAAAAADLPAAAAA 10457.84 0 2598.4 +catalog channel catalog_pageAAAAAAAADMPAAAAA 1968.33 0 -2027.48 +catalog channel catalog_pageAAAAAAAADNCBAAAA 440 0 -1268.2 +catalog channel catalog_pageAAAAAAAADOPAAAAA 214.54 189.3 -257.54 +catalog channel catalog_pageAAAAAAAADPPAAAAA 222.94 192.11 -880.18 +catalog channel catalog_pageAAAAAAAAEBABAAAA 11889.15 0 5534.62 +catalog channel catalog_pageAAAAAAAAECABAAAA 1494.22 0 222.95 +catalog channel catalog_pageAAAAAAAAEDABAAAA 6721.92 0 3306.24 +catalog channel catalog_pageAAAAAAAAEEABAAAA 522.75 0 -840.65 +catalog channel catalog_pageAAAAAAAAEFABAAAA 465.4 0 -5625.1 +catalog channel catalog_pageAAAAAAAAEHABAAAA 5168.4 2368.85 3026.41 +catalog channel catalog_pageAAAAAAAAEMPAAAAA 617.14 0 -5325.11 +catalog channel catalog_pageAAAAAAAAENCBAAAA 77.44 0 -2995.52 +catalog channel catalog_pageAAAAAAAAENPAAAAA 885.43 0 -3031.15 +catalog channel catalog_pageAAAAAAAAEOPAAAAA 1186.8 0 -1466.94 +catalog channel catalog_pageAAAAAAAAFAABAAAA 2244 0 -897.6 +catalog channel catalog_pageAAAAAAAAFBABAAAA 2328.96 0 1095.04 +catalog channel catalog_pageAAAAAAAAFFABAAAA 84.48 0 21.72 +catalog channel catalog_pageAAAAAAAAFGABAAAA 7921.2 0 3830.22 +catalog channel catalog_pageAAAAAAAAFGCBAAAA 7032.55 0 2664.63 +catalog channel catalog_pageAAAAAAAAFICBAAAA 3524.7 0 1095.9 +catalog channel catalog_pageAAAAAAAAFKPAAAAA 7830.22 0 4543.45 +catalog channel catalog_pageAAAAAAAAFLPAAAAA 2567.04 0 -14.14 +catalog channel catalog_pageAAAAAAAAFNPAAAAA 3046.14 0 1136.34 +catalog channel catalog_pageAAAAAAAAFOPAAAAA 1735.24 0 47.94 +catalog channel catalog_pageAAAAAAAAFPPAAAAA 638.78 0 -153.75 +catalog channel catalog_pageAAAAAAAAGDABAAAA 2952.68 0 -3874.18 +catalog channel catalog_pageAAAAAAAAGECBAAAA 1077.13 7.84 -1596.65 +catalog channel catalog_pageAAAAAAAAGGABAAAA 655.38 105.92 -5956.79 +catalog channel catalog_pageAAAAAAAAGJCBAAAA 2534.47 0 -1055.74 +catalog channel catalog_pageAAAAAAAAGLPAAAAA 1752.3 1323.96 -554.38 +catalog channel catalog_pageAAAAAAAAGMPAAAAA 7952.04 0 3570.48 +catalog channel catalog_pageAAAAAAAAGOPAAAAA 7483.41 0 3730.32 +catalog channel catalog_pageAAAAAAAAGPCBAAAA 545.8 0 -1079 +catalog channel catalog_pageAAAAAAAAHAABAAAA 38.1 0 -296.58 +catalog channel catalog_pageAAAAAAAAHBABAAAA 519.68 0 -8.96 +catalog channel catalog_pageAAAAAAAAHCABAAAA 6217.2 0 2927.43 +catalog channel catalog_pageAAAAAAAAHDABAAAA 2093.04 0 -1055.19 +catalog channel catalog_pageAAAAAAAAHDCBAAAA 1643.2 0 547.2 +catalog channel catalog_pageAAAAAAAAHEABAAAA 147.3 0 62.9 +catalog channel catalog_pageAAAAAAAAHJCBAAAA 114.1 0 -555.9 +catalog channel catalog_pageAAAAAAAAHKPAAAAA 20228.49 0 9025.71 +catalog channel catalog_pageAAAAAAAAHLPAAAAA 144.16 93.28 -3864.15 +catalog channel catalog_pageAAAAAAAAHNCBAAAA 12553.86 0 4294.06 +catalog channel catalog_pageAAAAAAAAHOPAAAAA 7021.44 0 -1826.88 +catalog channel catalog_pageAAAAAAAAHPPAAAAA 10 0 -204 +catalog channel catalog_pageAAAAAAAAIAABAAAA 790.97 0 -1863.92 +catalog channel catalog_pageAAAAAAAAICABAAAA 102.68 0 -17.45 +catalog channel catalog_pageAAAAAAAAIEABAAAA 7363.98 0 538.2 +catalog channel catalog_pageAAAAAAAAIGCBAAAA 1515.24 0 -1527.36 +catalog channel catalog_pageAAAAAAAAIJCBAAAA 14209.71 0 7209.69 +catalog channel catalog_pageAAAAAAAAIKCBAAAA 3551.98 0 670.53 +catalog channel catalog_pageAAAAAAAAIKPAAAAA 6706.4 0 -450.4 +catalog channel catalog_pageAAAAAAAAIMPAAAAA 5772.82 1114.36 341.61 +catalog channel catalog_pageAAAAAAAAIOPAAAAA 1093.68 0 -2290.68 +catalog channel catalog_pageAAAAAAAAIPPAAAAA 4819.7 1177.64 -115.69 +catalog channel catalog_pageAAAAAAAAJICBAAAA 2908.88 0 445.12 +catalog channel catalog_pageAAAAAAAAJKCBAAAA 2163.26 0 1243.44 +catalog channel catalog_pageAAAAAAAAJLPAAAAA 5408.69 0 2971.55 +catalog channel catalog_pageAAAAAAAAJMCBAAAA 758.88 0 -1847.9 +catalog channel catalog_pageAAAAAAAAJNPAAAAA 3662.05 0 1963.85 +catalog channel catalog_pageAAAAAAAAJOPAAAAA 479.88 0 -1114.65 +catalog channel catalog_pageAAAAAAAAKAABAAAA 1919.86 0 238.95 +catalog channel catalog_pageAAAAAAAAKDABAAAA 14591.28 0 6241.84 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q81.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q81.slt.no new file mode 100644 index 00000000000..974842b7355 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q81.slt.no @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTTTTTTTTTRTR +WITH customer_total_return AS + (SELECT cr_returning_customer_sk AS ctr_customer_sk , + ca_state AS ctr_state, + sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns , + date_dim , + customer_address + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk , + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1 , + customer_address , + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +LIMIT 100; +---- +AAAAAAAAAEECAAAA Dr. Anne NULL 419 View Miller Wy Suite 360 Pleasant Grove Cobb County GA 34136 United States -5 single family 2379.62 +AAAAAAAAAGBAAAAA Sir Steven Moore 612 5th Elm Boulevard Suite D Riverdale Fayette County GA 39391 United States -5 condo 1760.8 +AAAAAAAAANIBAAAA Miss Luisa Russell 767 6th Road Suite 430 Franklin Rockdale County GA 39101 United States -5 condo 2711.28 +AAAAAAAABLBAAAAA Sir Robert Leatherman 29 11th 4th Pkwy Suite J Walnut Grove Walker County GA 37752 United States -5 condo 2286.79 +AAAAAAAABMCAAAAA Miss Heather Cady 406 Sunset Maple Boulevard Suite Q Oakwood Richmond County GA 30169 United States -5 condo 3231.94 +AAAAAAAACBIAAAAA Dr. Michael Maynard 91 Sunset Lincoln Ln Suite 390 Unionville Tift County GA 31711 United States -5 apartment 3135.73 +AAAAAAAACGCCAAAA Mrs. Sheila Rawlings 128 12th Wy Suite V Wilson Effingham County GA 36971 United States -5 apartment 4345.31 +AAAAAAAACKBAAAAA Dr. Maurice Morales 918 Lake Drive Suite T Shelby Lincoln County GA 36575 United States -5 condo 3317.24 +AAAAAAAADCBAAAAA Mr. Ralph Johnson 492 View Oak Avenue Suite C Walnut Grove Houston County GA 37752 United States -5 apartment 4740.04 +AAAAAAAADLABAAAA Mrs. Sharla Buchanan 227 Adams Dr. Suite 380 Greenwood Wilkinson County GA 38828 United States -5 apartment 2270.49 +AAAAAAAAEFDBAAAA Mrs. Helen Cartwright 29 Ash Avenue Suite 320 Riverside Douglas County GA 39231 United States -5 apartment 4829.73 +AAAAAAAAEJIAAAAA Mr. James Penn 260 Second Sixth Cir. Suite M Oak Hill Oglethorpe County GA 37838 United States -5 single family 1358.75 +AAAAAAAAFEAAAAAA Sir Steven Mcclellan 954 8th Pkwy Suite 30 Hillcrest Bleckley County GA 33003 United States -5 single family 7569.1 +AAAAAAAAFIHAAAAA Miss Dorothy Burrell 453 Davis Pine Way Suite 410 Wildwood Peach County GA 36871 United States -5 condo 9146.12 +AAAAAAAAGFIAAAAA Mr. James Bravo 961 Mill Pkwy Suite P Pleasant Hill Lee County GA 33604 United States -5 apartment 2885.76 +AAAAAAAAGFIAAAAA Mr. James Bravo 961 Mill Pkwy Suite P Pleasant Hill Lee County GA 33604 United States -5 apartment 2925.84 +AAAAAAAAGGDCAAAA Mr. Zachary Hendrickson 530 Sunset Second Way Suite 40 Lincoln Elbert County GA 31289 United States -5 single family 1986.74 +AAAAAAAAGGGBAAAA Dr. Timothy Werner 983 Cedar Johnson Cir. Suite 360 Edgewood Jenkins County GA 30069 United States -5 condo 8088.23 +AAAAAAAAGHABAAAA Mrs. Lina Abbott 173 Woodland Road Suite T Bunker Hill Candler County GA 30150 United States -5 apartment 2877.6 +AAAAAAAAHMOBAAAA Sir Harry Jones 492 View Oak Avenue Suite C Walnut Grove Houston County GA 37752 United States -5 apartment 7524.53 +AAAAAAAAIFEAAAAA Miss Lisa Flannery 321 Valley Maple Ct. Suite 430 Bunker Hill Gordon County GA 30150 United States -5 single family 4362 +AAAAAAAAJEEBAAAA Mrs. Mabel Cunningham 626 Oak Oak Lane Suite E Spring Valley Early County GA 36060 United States -5 condo 3240.57 +AAAAAAAAJFMBAAAA Dr. Donna Chaney 645 Seventh ST Suite 230 Lincoln Rockdale County GA 31289 United States -5 single family 3176.03 +AAAAAAAAJGEAAAAA Miss Kenya Park 571 Oak Miller Ln Suite 290 Newport Rabun County GA 31521 United States -5 single family 5495.04 +AAAAAAAAKAAAAAAA Ms. Albert Brunson 307 7th Hillcrest Street Suite 70 Wildwood Union County GA 36871 United States -5 apartment 1605.24 +AAAAAAAAKGCAAAAA Sir James Mueller 545 Sixth RD Suite U Plainview Long County GA 33683 United States -5 apartment 1257.75 +AAAAAAAALMBAAAAA Dr. Howard Chan 645 Oak Hillcrest ST Suite A Shady Grove Newton County GA 32812 United States -5 apartment 3363.44 +AAAAAAAAMCCCAAAA Dr. Julie Keys 242 North 3rd Pkwy Suite M Oak Ridge Marion County GA 38371 United States -5 single family 2134.59 +AAAAAAAAMJHBAAAA Dr. Cynthia Hutton 942 Sunset Blvd Suite S Concord Wilkes County GA 34107 United States -5 single family 5181.96 +AAAAAAAAMKABAAAA Sir Brandon Fahey 911 Second RD Suite A Harmony Lee County GA 35804 United States -5 apartment 4397.65 +AAAAAAAANBFAAAAA Sir Charles Francis 321 Pine Woodland Avenue Suite 40 Five Points Spalding County GA 36098 United States -5 apartment 5095.19 +AAAAAAAANJFAAAAA Mrs. Tina Jordan 321 Pine Woodland Avenue Suite 40 Five Points Spalding County GA 36098 United States -5 apartment 4259.08 +AAAAAAAAOCLAAAAA Dr. Lori Moore 619 Cedar Cir. Suite N Cedar Grove Camden County GA 30411 United States -5 single family 2992.22 +AAAAAAAAOJIAAAAA Sir Troy Joyner 692 Central Way Suite 270 Riverdale Dougherty County GA 39391 United States -5 condo 2385.06 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q82.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q82.slt.no new file mode 100644 index 00000000000..fb6158ce005 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q82.slt.no @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +SELECT i_item_id , + i_item_desc , + i_current_price +FROM item, + inventory, + date_dim, + store_sales +WHERE i_current_price BETWEEN 62 AND 62+30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-05-25' AS date) AND cast('2000-07-24' AS date) + AND i_manufact_id IN (129, + 270, + 821, + 423) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND ss_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q83.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q83.slt.no new file mode 100644 index 00000000000..3d2df7e941b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q83.slt.no @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRIRIRR +WITH sr_items AS + (SELECT i_item_id item_id, + sum(sr_return_quantity) sr_item_qty + FROM store_returns, + item, + date_dim + WHERE sr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items AS + (SELECT i_item_id item_id, + sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, + item, + date_dim + WHERE cr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items AS + (SELECT i_item_id item_id, + sum(wr_return_quantity) wr_item_qty + FROM web_returns, + item, + date_dim + WHERE wr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT sr_items.item_id , + sr_item_qty , + (sr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 sr_dev , + cr_item_qty , + (cr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 cr_dev , + wr_item_qty , + (wr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 wr_dev , + (sr_item_qty+cr_item_qty+wr_item_qty)/3.0 average +FROM sr_items , + cr_items , + wr_items +WHERE sr_items.item_id=cr_items.item_id + AND sr_items.item_id=wr_items.item_id +ORDER BY sr_items.item_id NULLS FIRST, + sr_item_qty NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q84.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q84.slt.no new file mode 100644 index 00000000000..98b6921d732 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q84.slt.no @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +SELECT c_customer_id AS customer_id , + concat(concat(coalesce(c_last_name, '') , ', '), coalesce(c_first_name, '')) AS customername +FROM customer , + customer_address , + customer_demographics , + household_demographics , + income_band , + store_returns +WHERE ca_city = 'Edgewood' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 38128 + AND ib_upper_bound <= 38128 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id NULLS FIRST +LIMIT 100; +---- +AAAAAAAAEAGCAAAA Martin, Geraldine +AAAAAAAAEAGCAAAA Martin, Geraldine +AAAAAAAAEGECAAAA Ortiz, Tessa +AAAAAAAAIEKAAAAA Cohn, Michael +AAAAAAAAJKPBAAAA Arnold, Sally +AAAAAAAAMGLBAAAA Johnson, Wendy diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q85.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q85.slt.no new file mode 100644 index 00000000000..26e0d94d43a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q85.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRR +SELECT SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) avg1, + avg(wr_refunded_cash) avg2, + avg(wr_fee) +FROM web_sales, + web_returns, + web_page, + customer_demographics cd1, + customer_demographics cd2, + customer_address, + date_dim, + reason +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2000 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( ( cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd1.cd_marital_status = 'S' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'College' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = '2 yr Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ca_country = 'United States' + AND ca_state IN ('IN', + 'OH', + 'NJ') + AND ws_net_profit BETWEEN 100 AND 200) + OR ( ca_country = 'United States' + AND ca_state IN ('WI', + 'CT', + 'KY') + AND ws_net_profit BETWEEN 150 AND 300) + OR ( ca_country = 'United States' + AND ca_state IN ('LA', + 'IA', + 'AR') + AND ws_net_profit BETWEEN 50 AND 250) ) +GROUP BY r_reason_desc +ORDER BY SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) , + avg(wr_refunded_cash) , + avg(wr_fee) +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q86.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q86.slt.no new file mode 100644 index 00000000000..a116bbad2ec --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q86.slt.no @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RTTII +SELECT sum(ws_net_paid) AS total_sum , + i_category , + i_class , + grouping(i_category)+grouping(i_class) AS lochierarchy , + rank() OVER ( PARTITION BY grouping(i_category)+grouping(i_class), + CASE + WHEN grouping(i_class) = 0 THEN i_category + END + ORDER BY sum(ws_net_paid) DESC) AS rank_within_parent +FROM web_sales , + date_dim d1 , + item +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY rollup(i_category,i_class) +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN grouping(i_category)+grouping(i_class) = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +33524177.4 NULL NULL 2 1 +3914061.57 Women NULL 1 1 +3723292.19 Electronics NULL 1 2 +3562592.04 Jewelry NULL 1 3 +3537855.19 Books NULL 1 4 +3464787.84 Men NULL 1 5 +3402491.77 Music NULL 1 6 +3122925.57 Shoes NULL 1 7 +3021726.62 Home NULL 1 8 +2872728.67 Sports NULL 1 9 +2809935.79 Children NULL 1 10 +91780.15 NULL NULL 1 11 +91780.15 NULL NULL 0 1 +408043.38 Books romance 0 1 +380601.08 Books reference 0 2 +313980.74 Books travel 0 3 +258279.16 Books arts 0 4 +238672.7 Books computers 0 5 +226340.44 Books self-help 0 6 +221596.6 Books mystery 0 7 +207320.35 Books fiction 0 8 +198144.84 Books entertainments 0 9 +187238.69 Books home repair 0 10 +179185.2 Books cooking 0 11 +179068.37 Books history 0 12 +145685.77 Books business 0 13 +130183.52 Books parenting 0 14 +119539.3 Books science 0 15 +115536.29 Books sports 0 16 +28438.76 Books NULL 0 17 +821633.3 Children school-uniforms 0 1 +704372.82 Children infants 0 2 +694988.41 Children toddlers 0 3 +588941.26 Children newborn 0 4 +501039.23 Electronics dvd/vcr players 0 1 +388380.33 Electronics televisions 0 2 +298812.54 Electronics stereo 0 3 +280245.34 Electronics karoke 0 4 +250154.17 Electronics cameras 0 5 +248384.32 Electronics musical 0 6 +240773.08 Electronics monitors 0 7 +222135.85 Electronics automotive 0 8 +198211.95 Electronics disk drives 0 9 +197554.69 Electronics memory 0 10 +196394.91 Electronics personal 0 11 +175646.11 Electronics camcorders 0 12 +171833.15 Electronics wireless 0 13 +164666.4 Electronics portable 0 14 +100308.3 Electronics scanners 0 15 +88751.82 Electronics audio 0 16 +401607.02 Home lighting 0 1 +347159.96 Home paint 0 2 +273846.35 Home decor 0 3 +273266.19 Home furniture 0 4 +267976.53 Home bedding 0 5 +266486.32 Home rugs 0 6 +208539.6 Home blinds/shades 0 7 +206655.62 Home flatware 0 8 +162311.64 Home curtains/drapes 0 9 +137826.91 Home wallpaper 0 10 +129423.21 Home glassware 0 11 +92300.94 Home bathroom 0 12 +76026.15 Home mattresses 0 13 +71838.96 Home accent 0 14 +63474.37 Home kids 0 15 +42986.85 Home tables 0 16 +394550.33 Jewelry pendants 0 1 +358709.25 Jewelry costume 0 2 +338028.13 Jewelry gold 0 3 +320709.39 Jewelry diamonds 0 4 +283641.53 Jewelry jewelry boxes 0 5 +236690.69 Jewelry bracelets 0 6 +235719.63 Jewelry womens watch 0 7 +216968.36 Jewelry mens watch 0 8 +211846.22 Jewelry earings 0 9 +197845.79 Jewelry loose stones 0 10 +195560.8 Jewelry estate 0 11 +173185.15 Jewelry birdal 0 12 +151245.69 Jewelry semi-precious 0 13 +104491.58 Jewelry consignment 0 14 +82889.09 Jewelry custom 0 15 +60510.41 Jewelry rings 0 16 +1010416.64 Men sports-apparel 0 1 +1003263.51 Men accessories 0 2 +781211.01 Men shirts 0 3 +669896.68 Men pants 0 4 +1038698.68 Music rock 0 1 +925564.57 Music pop 0 2 +725558.58 Music country 0 3 +712669.94 Music classical 0 4 +868660.92 Shoes athletic 0 1 +783356.28 Shoes womens 0 2 +778920.84 Shoes mens 0 3 +690225.27 Shoes kids 0 4 +1762.26 Shoes NULL 0 5 +274798.71 Sports archery 0 1 +274386.55 Sports outdoor 0 2 +260445.72 Sports camping 0 3 +257138.96 Sports fishing 0 4 +256330.09 Sports hockey 0 5 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q87.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q87.slt.no new file mode 100644 index 00000000000..266f29f9af6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q87.slt.no @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT count(*) +FROM ((SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11)) cool_cust ; +---- +4789 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q88.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q88.slt.no new file mode 100644 index 00000000000..e4f8d8e0883 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q88.slt.no @@ -0,0 +1,144 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIIIIII +SELECT * +FROM + (SELECT count(*) h8_30_to_9 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 8 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s1, + (SELECT count(*) h9_to_9_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s2, + (SELECT count(*) h9_30_to_10 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s3, + (SELECT count(*) h10_to_10_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s4, + (SELECT count(*) h10_30_to_11 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s5, + (SELECT count(*) h11_to_11_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s6, + (SELECT count(*) h11_30_to_12 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s7, + (SELECT count(*) h12_to_12_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 12 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s8 ; +---- +0 0 0 0 0 0 0 0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q89.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q89.slt.no new file mode 100644 index 00000000000..90e3d7fa452 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q89.slt.no @@ -0,0 +1,124 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTIRR +SELECT * from + (SELECT i_category, i_class, i_brand, s_store_name, s_company_name, d_moy, sum(ss_sales_price) sum_sales, avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name) avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year = 1999 + AND ((i_category IN ('Books','Electronics','Sports') + AND i_class IN ('computers','stereo','football') ) + OR (i_category IN ('Men','Jewelry','Women') + AND i_class IN ('shirts','birdal','dresses'))) + GROUP BY i_category, i_class, i_brand, s_store_name, s_company_name, d_moy) tmp1 +WHERE CASE + WHEN (avg_monthly_sales <> 0) THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + s_store_name, 1, 2, 3, 5, 6, 7, 8 +LIMIT 100; +---- +Women dresses amalgamalg #1 ought Unknown 3 923.47 2408.735833 +Women dresses amalgamalg #1 ought Unknown 6 982.71 2408.735833 +Men shirts importoimporto #1 ought Unknown 7 1188.25 2423.258333 +Women dresses amalgamalg #1 ought Unknown 5 1184.1 2408.735833 +Women dresses amalgamalg #1 ought Unknown 1 1354.43 2408.735833 +Men shirts importoimporto #1 ought Unknown 3 1406.02 2423.258333 +Men shirts importoimporto #1 ought Unknown 5 1411.01 2423.258333 +Women dresses amalgamalg #1 ought Unknown 2 1422.83 2408.735833 +Women dresses amalgamalg #1 ought Unknown 7 1448.62 2408.735833 +Men shirts importoimporto #1 ought Unknown 2 1507.7 2423.258333 +Men shirts importoimporto #1 ought Unknown 6 1549.04 2423.258333 +Women dresses amalgamalg #2 ought Unknown 2 801.22 1672.928333 +Women dresses amalgamalg #1 ought Unknown 4 1540.59 2408.735833 +Women dresses amalgamalg #2 ought Unknown 7 883.66 1672.928333 +Men shirts importoimporto #2 ought Unknown 5 477.76 1184.171666 +Men shirts importoimporto #2 ought Unknown 6 487.48 1184.171666 +Women dresses amalgamalg #2 ought Unknown 1 1023.68 1672.928333 +Men shirts importoimporto #1 ought Unknown 1 1779.64 2423.258333 +Women dresses amalgamalg #2 ought Unknown 3 1052.57 1672.928333 +Men shirts importoimporto #2 ought Unknown 7 564.29 1184.171666 +Women dresses amalgamalg #2 ought Unknown 5 1092.26 1672.928333 +Women dresses amalgamalg #2 ought Unknown 6 1139.04 1672.928333 +Men shirts importoimporto #1 ought Unknown 4 1893.82 2423.258333 +Men shirts importoimporto #1 ought Unknown 8 2064.33 2423.258333 +Women dresses amalgamalg #2 ought Unknown 4 1347.3 1672.928333 +Men shirts importoimporto #2 ought Unknown 1 866.84 1184.171666 +Jewelry birdal amalgcorp #8 ought Unknown 3 31.01 348.130833 +Books computers exportimaxi #3 ought Unknown 7 31.96 346.941666 +Men shirts importoimporto #2 ought Unknown 4 871.59 1184.171666 +Men shirts importoimporto #2 ought Unknown 2 884.78 1184.171666 +Jewelry birdal amalgcorp #8 ought Unknown 4 62.61 348.130833 +Books computers exportimaxi #3 ought Unknown 2 69.21 346.941666 +Men shirts importoimporto #2 ought Unknown 3 912.7 1184.171666 +Jewelry birdal amalgcorp #8 ought Unknown 7 91.82 348.130833 +Books computers exportimaxi #3 ought Unknown 10 91.14 346.941666 +Sports football corpnameless #5 ought Unknown 3 162.36 393.48 +Jewelry birdal amalgcorp #8 ought Unknown 6 124.78 348.130833 +Books computers exportimaxi #5 ought Unknown 4 1.37 224.351666 +Sports football corpnameless #1 ought Unknown 9 11.51 233.448181 +Sports football corpnameless #1 ought Unknown 6 11.75 233.448181 +Books computers exportimaxi #11 ought Unknown 5 13.99 217.664545 +Books computers exportimaxi #5 ought Unknown 7 25.81 224.351666 +Sports football corpnameless #5 ought Unknown 5 198.53 393.48 +Sports football corpnameless #1 ought Unknown 7 41.26 233.448181 +Jewelry birdal amalgcorp #1 ought Unknown 6 4.58 194.534166 +Electronics stereo exportiamalgamalg #5 ought Unknown 2 29.1 216.578181 +Books computers exportimaxi #5 ought Unknown 3 38.24 224.351666 +Books computers exportimaxi #2 ought Unknown 7 12.44 197.853636 +Sports football corpnameless #5 ought Unknown 2 210.6 393.48 +Jewelry birdal amalgcorp #2 ought Unknown 11 15.29 196.894545 +Electronics stereo exportiamalgamalg #6 ought Unknown 5 35.77 217.23 +Electronics stereo exportiamalgamalg #16 ought Unknown 6 1.07 179.7825 +Books computers exportimaxi #8 ought Unknown 5 17.15 194.200833 +Sports football corpnameless #1 ought Unknown 3 56.43 233.448181 +Sports football corpnameless #8 ought Unknown 2 21.41 196.005 +Books computers exportimaxi #2 ought Unknown 1 23.44 197.853636 +Electronics stereo exportiamalgamalg #6 ought Unknown 3 42.95 217.23 +Books computers exportimaxi #11 ought Unknown 1 44.82 217.664545 +Jewelry birdal amalgcorp #2 ought Unknown 5 24.85 196.894545 +Sports football corpnameless #5 ought Unknown 7 224.86 393.48 +Books computers exportimaxi #3 ought Unknown 6 179.63 346.941666 +Sports football corpnameless #8 ought Unknown 7 30.63 196.005 +Jewelry birdal amalgcorp #1 ought Unknown 4 33.17 194.534166 +Jewelry birdal amalgcorp #2 ought Unknown 6 36.29 196.894545 +Jewelry birdal amalgcorp #1 ought Unknown 7 36.26 194.534166 +Jewelry birdal amalgcorp #5 ought Unknown 6 19.56 177.540909 +Books computers exportimaxi #2 ought Unknown 3 40.18 197.853636 +Electronics stereo exportiamalgamalg #14 ought Unknown 7 8.7 165.399166 +Electronics stereo exportiamalgamalg #6 ought Unknown 1 60.73 217.23 +Jewelry birdal amalgcorp #5 ought Unknown 1 22.45 177.540909 +Jewelry birdal amalgcorp #5 ought Unknown 3 22.69 177.540909 +Electronics stereo exportiamalgamalg #5 ought Unknown 9 65.06 216.578181 +Jewelry birdal amalgcorp #2 ought Unknown 2 46.24 196.894545 +Jewelry birdal amalgcorp #5 ought Unknown 7 27.94 177.540909 +Books computers exportimaxi #8 ought Unknown 6 46.87 194.200833 +Jewelry birdal amalgcorp #8 ought Unknown 5 202.09 348.130833 +Electronics stereo exportiamalgamalg #5 ought Unknown 3 71.77 216.578181 +Electronics stereo exportiamalgamalg #14 ought Unknown 5 21.66 165.399166 +Books computers exportimaxi #11 ought Unknown 3 74.6 217.664545 +Books computers exportimaxi #11 ought Unknown 2 83.35 217.664545 +Sports football corpnameless #2 ought Unknown 5 41.22 173.356666 +Electronics stereo exportiamalgamalg #16 ought Unknown 7 47.79 179.7825 +Sports football corpnameless #1 ought Unknown 2 103.22 233.448181 +Electronics stereo exportiamalgamalg #5 ought Unknown 6 90.83 216.578181 +Electronics stereo exportiamalgamalg #14 ought Unknown 1 41.92 165.399166 +Jewelry birdal amalgcorp #1 ought Unknown 2 74.1 194.534166 +Electronics stereo exportiamalgamalg #16 ought Unknown 2 59.96 179.7825 +Sports football corpnameless #2 ought Unknown 7 56.48 173.356666 +Electronics stereo exportiamalgamalg #12 ought Unknown 1 42.33 157.264545 +Books computers exportimaxi #5 ought Unknown 10 111.05 224.351666 +Sports football corpnameless #8 ought Unknown 9 85.51 196.005 +Books computers exportimaxi #3 ought Unknown 3 240.65 346.941666 +Jewelry birdal amalgcorp #2 ought Unknown 4 93.76 196.894545 +Electronics stereo exportiamalgamalg #16 ought Unknown 5 77.28 179.7825 +Electronics stereo exportiamalgamalg #16 ought Unknown 1 77.8 179.7825 +Sports football corpnameless #5 ought Unknown 4 291.71 393.48 +Electronics stereo exportiamalgamalg #6 ought Unknown 4 115.84 217.23 +Sports football corpnameless #1 ought Unknown 1 132.75 233.448181 +Sports football corpnameless #8 ought Unknown 4 95.69 196.005 +Electronics stereo exportiamalgamalg #5 ought Unknown 8 118.38 216.578181 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q9.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q9.slt.no new file mode 100644 index 00000000000..47cf4ccb2a0 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q9.slt.no @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RRRRR +SELECT CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) > 74129 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) > 122840 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) > 56580 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) > 10097 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) > 165306 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM reason +WHERE r_reason_sk = 1 ; +---- +360.362443 1030.431489 1727.681323 267.128745 3087.216814 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q90.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q90.slt.no new file mode 100644 index 00000000000..7199e4d90fe --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q90.slt.no @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query R +SELECT case when pmc=0 then null else cast(amc AS decimal(15,4))/cast(pmc AS decimal(15,4)) end am_pm_ratio +FROM + (SELECT count(*) amc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 8 AND 8+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) "at", + (SELECT count(*) pmc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 19 AND 19+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +ORDER BY am_pm_ratio +LIMIT 100; +---- +NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q91.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q91.slt.no new file mode 100644 index 00000000000..1b9daeb6dcc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q91.slt.no @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTR +SELECT cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + sum(cr_net_loss) Returns_Loss +FROM call_center, + catalog_returns, + date_dim, + customer, + customer_address, + customer_demographics, + household_demographics +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk= c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1998 + AND d_moy = 11 + AND ((cd_marital_status = 'M' + AND cd_education_status = 'Unknown') or(cd_marital_status = 'W' + AND cd_education_status = 'Advanced Degree')) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, + cc_name, + cc_manager, + cd_marital_status, + cd_education_status +ORDER BY sum(cr_net_loss) DESC; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q92.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q92.slt.no new file mode 100644 index 00000000000..b3fc00b717c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q92.slt.no @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query R +SELECT sum(ws_ext_discount_amt) AS "Excess Discount Amount" +FROM web_sales, + item, + date_dim +WHERE i_manufact_id = 350 + AND i_item_sk = ws_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk + AND ws_ext_discount_amt > + (SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100; +---- +NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q93.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q93.slt.no new file mode 100644 index 00000000000..fe95c1b4fdc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q93.slt.no @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IR +SELECT ss_customer_sk, + sum(act_sales) sumsales +FROM + (SELECT ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL THEN (ss_quantity-sr_return_quantity)*ss_sales_price + ELSE (ss_quantity*ss_sales_price) + END act_sales + FROM store_sales + LEFT OUTER JOIN store_returns ON (sr_item_sk = ss_item_sk + AND sr_ticket_number = ss_ticket_number) ,reason + WHERE sr_reason_sk = r_reason_sk + AND r_reason_desc = 'reason 28') t +GROUP BY ss_customer_sk +ORDER BY sumsales NULLS FIRST, + ss_customer_sk NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q94.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q94.slt.no new file mode 100644 index 00000000000..6db39958691 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q94.slt.no @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND EXISTS + (SELECT * + FROM web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) + AND NOT exists + (SELECT * + FROM web_returns wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +0 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q95.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q95.slt.no new file mode 100644 index 00000000000..67b5a49b8bd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q95.slt.no @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +WITH ws_wh AS + (SELECT ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, + web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND ws1.ws_order_number IN + (SELECT ws_order_number + FROM ws_wh) + AND ws1.ws_order_number IN + (SELECT wr_order_number + FROM web_returns, + ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +0 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q96.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q96.slt.no new file mode 100644 index 00000000000..e539a33b8cf --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q96.slt.no @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT count(*) +FROM store_sales , + household_demographics, + time_dim, + store +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 20 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY count(*) +LIMIT 100; +---- +0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q97.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q97.slt.no new file mode 100644 index 00000000000..c7d49b7abee --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q97.slt.no @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query III +WITH ssci AS + (SELECT ss_customer_sk customer_sk , + ss_item_sk item_sk + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ss_customer_sk , + ss_item_sk), + csci as + ( SELECT cs_bill_customer_sk customer_sk ,cs_item_sk item_sk + FROM catalog_sales,date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY cs_bill_customer_sk ,cs_item_sk) +SELECT sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NULL THEN 1 + ELSE 0 + END) store_only , + sum(CASE + WHEN ssci.customer_sk IS NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) catalog_only , + sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) store_and_catalog +FROM ssci +FULL OUTER JOIN csci ON (ssci.customer_sk=csci.customer_sk + AND ssci.item_sk = csci.item_sk) +LIMIT 100; +---- +54150 28203 169 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q98.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q98.slt.no new file mode 100644 index 00000000000..825ff77a018 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q98.slt.no @@ -0,0 +1,281 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(ss_ext_sales_price) AS itemrevenue, + sum(ss_ext_sales_price)*100.0000/sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM store_sales , + item, + date_dim +WHERE ss_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST; +---- +AAAAAAAAOJGAAAAA NULL Books NULL NULL 3915.12 100 +AAAAAAAACKEAAAAA Physical, local rates cannot explain; quickly lovely horses used to take. Quick, various subjects keep usually; please easy sources ought to thin Books arts 35.27 5719.26 27.839185510847 +AAAAAAAAIJGAAAAA Industrial figures shall not meet still. Live, civil years ought to spend tiny groups. Brief years know again unfortunately present texts. So as prime terms become. Effective sets get other oth Books arts 4.1 1910.06 9.297446641147 +AAAAAAAAKGBAAAAA Important, scientific words replace sure united friends. Important areas list fresh, gross directions. Mild services leave sadly commercial, appropriate ju Books arts 5.6 6876.6 33.472677074288 +AAAAAAAAMFFAAAAA So tiny sales obtain as ill tons. Constant others increase women. New Books arts 8.22 4509.34 21.949754477237 +AAAAAAAANIBAAAAA Open, real terms should avoid discussions. Just obvious adults will say strong, poor drawings. Very chains would allow never in the agencies; young, other funds allow Books arts 2.72 1528.66 7.440936296481 +AAAAAAAAADFAAAAA Good groups steal respective chapters. Components could rely needs. Men need only wide, private courts. New, sudden forms see only. Letters will not find at the faces. Just fascinating humans s Books business 78.25 9384.78 38.46744721003 +AAAAAAAAEICAAAAA Contemporary, signific Books business 2.42 4439.48 18.197066158182 +AAAAAAAAIKEAAAAA Complex, complete doubts say as eyes. Desperately general missiles ought Books business 9.44 9034.12 37.030120491805 +AAAAAAAAKMAAAAAA Conservative women ought to beat positions. Agai Books business 0.19 429.66 1.761141270042 +AAAAAAAALDFAAAAA Dramatically particular charts used to boost unusually false organisers. I Books business 3.68 1108.64 4.544224869941 +AAAAAAAAFEEAAAAA Directly good effects could not complete. Implications may not investigate individually; electrical husba Books computers 3.83 7141.32 15.277710923405 +AAAAAAAAGMCAAAAA Now old phenomena will suppress sufficiently by a arguments. C Books computers 9.23 10362.09 22.16803274217 +AAAAAAAALCDAAAAA Groups see legs. Systems lead hot, golden hands. Then general enquiries comply often social houses. Relentlessly annual ministers should not minimise suf Books computers 4.34 14729.89 31.512241623896 +AAAAAAAAMJEAAAAA Advantages w Books computers 1.04 5060.32 10.825744559819 +AAAAAAAAOGFAAAAA Similar months should want available, normal points; powers make. Soviet books will not enter indepe Books computers 99.41 6042.6 12.927175371748 +AAAAAAAAOMDAAAAA Ev Books computers 4.99 3407.17 7.289094778962 +AAAAAAAAGOCAAAAA Frantically necess Books cooking 4.37 502.5 8.018292877522 +AAAAAAAAKCCAAAAA Bitter reasons may not bear cuts. Marine, normal shares make also. Trying contracts lift numerous reports. Also general feelings argue rights; still quiet techniques Books cooking 4.44 5649.86 90.15369591442 +AAAAAAAALIGAAAAA Visitors will determine reluctant forms. Laws could not need fresh paths. Social, critical police must not thin Books cooking 0.88 114.56 1.828011208058 +AAAAAAAACIDAAAAA Magic, dead sports call; recently european wives o Books entertainments 3.51 4821.84 20.903818866864 +AAAAAAAAJKGAAAAA Most final departments will attempt also other customers. Severe units put increased years; flights Books entertainments 4.92 3270.6 14.178825922463 +AAAAAAAAKDEAAAAA Free activities might act on a years. Other, new fingers can claim specifically at the alternatives. Great, straightforward features come now; sure, little stand Books entertainments 6.46 12091.88 52.42116480013 +AAAAAAAAMKDAAAAA More local leaders Books entertainments 1.52 2419.13 10.487501728676 +AAAAAAAAOOEAAAAA True, sole women market far except for a depths. Dif Books entertainments 1.45 463.34 2.008688681867 +AAAAAAAABGAAAAAA More reg Books fiction 57.09 3355.17 4.166692021555 +AAAAAAAACEFAAAAA Bottom, national fea Books fiction 4.25 4199.82 5.215639292784 +AAAAAAAADEAAAAAA Already Books fiction 1.47 5987.53 7.43574646883 +AAAAAAAAHDDAAAAA Partially great points will fulfil at least big, recent years. Solicitors ought to achieve cases. Hidden, major Books fiction 45.99 13517.5 16.787006143169 +AAAAAAAALIAAAAAA Lines shall describe explicitly northern, firm systems. Later Books fiction 2.99 7234.25 8.98401325624 +AAAAAAAAMLAAAAAA Very national teams shall not treat as important remaining details. Outdoor, good calls would not say. Various, unpleasant plants will not pass legal, final courts. Likely, Books fiction 0.47 15813.19 19.637959509754 +AAAAAAAANDDAAAAA Voters can write today dealers. Women see very other years. Able, russian barriers use systems. So young fingers would say primary, new companies. Only disabled children ought to renew fol Books fiction 2.73 7092.26 8.807679836431 +AAAAAAAAOCGAAAAA National, suitable weeks tax yet personal, subjective groups. White, likely boys drive states; de Books fiction 8.69 14767.87 18.339805763752 +AAAAAAAAPMBAAAAA Unlikely, interested chemicals control likely countries. Assistant, medical museums choose horses. Far fierce waters should touch significantly publishers. At first foreign entries may unde Books fiction 8.79 8556 10.625457707487 +AAAAAAAAAJFAAAAA Prayers wait exactly at a rules. Books history 2.5 6759.47 28.823225153903 +AAAAAAAAAMEAAAAA Lexical, religious days would go pregnant, natural employees; lines raise v Books history 9.64 6022.95 25.682611793632 +AAAAAAAACIBAAAAA Correct concentrations might not come questions. Economic, pure shelves should track. Only, long feet might not like much Books history 4.94 5670.77 24.180872243829 +AAAAAAAAJGEAAAAA Periods indicate regularly emotional, entire positions. Women mount originally large, religious refugees. Industrial, present wi Books history 0.65 1750.84 7.465800651302 +AAAAAAAALAFAAAAA Substantial flowers make perhaps regular negotiations. For example basic victims ought to cease below technological young troops. Citizens shall let carefully hostile, other characte Books history 5.91 3247.44 13.847490157333 +AAAAAAAAOGGAAAAA Inner friends used to love. New, european tables must not choose long, present pp.; about Books history 0.66 0 0 +AAAAAAAAEIBAAAAA Legal, eligible concessions take still however conservative profits. Books home repair 0.82 7719.88 40.439731291619 +AAAAAAAAFDFAAAAA Import Books home repair 7.18 343.98 1.801900906451 +AAAAAAAAGBEAAAAA Y Books home repair 2.1 1168.95 6.123414339774 +AAAAAAAAMBGAAAAA More available quantities fit also in a interests. As foreign representations reflect darling sides Books home repair 3.33 5944.62 31.140229567141 +AAAAAAAAPNGAAAAA Ancient firms shall not show all thence emotional affairs. Ever annual revenues used to sta Books home repair 1.73 3912.41 20.494723895014 +AAAAAAAAADCAAAAA Possibly dependent prices might laugh also financial careers. Contrary, clever costs could sense; reliable, d Books mystery 1.55 12411.62 40.595395558835 +AAAAAAAACLBAAAAA Foreign, successful books might see bri Books mystery 3 7528.52 24.623961043973 +AAAAAAAAIGAAAAAA Connections must constitute only eastern leaves. Primary, elderly times make expectations. Never tory stores build very points. Books mystery 2.33 3912.47 12.796739447556 +AAAAAAAAMABAAAAA Children argue naturally already unable thanks. Low cars improve either light, powerful tools. Lar Books mystery 3.73 3765.96 12.317540809238 +AAAAAAAAOFBAAAAA Dependent, high weeks accept through an proposals. Ric Books mystery 3.1 2955.39 9.666363140398 +AAAAAAAAEFEAAAAA Extern Books parenting 2.15 5150.4 21.021277186257 +AAAAAAAAGFCAAAAA Royal versions restore oddly in a travellers; inc measures should play enough complex kinds. Necessary, local stations mean quite serious stones. Econo Books parenting 2.09 4976.9 20.313139645131 +AAAAAAAAIHFAAAAA Permanent cards act again. Christian cases should not include positions. Quite multiple films should locate physical risks; by now negative leaders shall give duties. Victor Books parenting 4.64 8267 33.74163142645 +AAAAAAAAKHAAAAAA Well lovely hands know even Books parenting 2.62 1755.09 7.163372432593 +AAAAAAAANMAAAAAA Very detailed points can mention then. Miles could not know very as a inhabitants. Still nearb Books parenting 7.3 4351.5 17.760579309568 +AAAAAAAAAODAAAAA Successful subjects might se Books reference 3.68 14561.72 30.890539489611 +AAAAAAAACLGAAAAA Failures think just eventually top factors. Animals ought to lose nearly terrible, necessary books. Public principles must not go sometimes else commercial wages. Serious oth Books reference 2.23 608.38 1.29058836557 +AAAAAAAAEPBAAAAA Developers suggest even aspects. Most human teachers dive Books reference 6.28 9331.29 19.794954320919 +AAAAAAAAHFBAAAAA Difficult, ready masses ought to take tools. Attempts must receive immediately. Pilots s Books reference 38.26 7671.27 16.27346693045 +AAAAAAAAHMGAAAAA White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Books reference 4.95 5025.56 10.660983705044 +AAAAAAAALIDAAAAA German, ultimate personnel want even. Asian, old hospitals could not open far applicable, logical seeds. Years worry schemes. Perhaps li Books reference 1.55 1858.24 3.94198186074 +AAAAAAAANJAAAAAA Recent performances get yet other publications; current patients could not carry comparatively intense, vital times. Wide problems smooth truly. Tomorrow used years catch a Books reference 2.21 8083.28 17.147485327666 +AAAAAAAABOBAAAAA Solutions gain. Various shares create elsewhere. Specific, excellent police sa Books romance 2.38 1703.64 9.797233766884 +AAAAAAAAFCDAAAAA Bombs ensure once members. Even national effects can get quickly new extraordinary clubs. Main, occupational barriers tackle just equal ser Books romance 4.5 1924.97 11.07005064699 +AAAAAAAALLDAAAAA Officials must prevent openly local, federal elements. Expenses sleep lines; russian, young conclusions cost actually up the leaders. Regulations Books romance 90.72 3538.78 20.350693168493 +AAAAAAAAMOAAAAAA Industries feel however. Domestic statements slide firms. European figures must plead now strong languages. Dangerous meetings set toda Books romance 0.75 7189.84 41.347082262972 +AAAAAAAAMPEAAAAA Skills eat great, soviet provinces. Male, widespread months must help in public responsible cells. Widely main responses might appear Books romance 2.81 1489.55 8.566052427427 +AAAAAAAAOKCAAAAA Detailed, married powers argue unique actions. Cr Books romance 2.33 1542.21 8.868887727234 +AAAAAAAACDFAAAAA Narrow, basic investors matter together. Uniquely wide parents feel surely severe properties. Only huge arrangements will not last miles. Urban months enhance. Members might not stop personnel. Books science 4.18 3809.78 13.968167604226 +AAAAAAAACPCAAAAA Elections grow arab, domestic initiatives. Wide courses shall order involved, new services. Compulsory, concerne Books science 0.31 7185.85 26.346181978703 +AAAAAAAADAHAAAAA Similar fields run old cities. Golden, warm opportunities compare by a wives. Initial, regular libraries touch sometimes. Still unemployed stations contribute below Books science 2.33 795.85 2.917902395367 +AAAAAAAADPEAAAAA Double effects put. Long, personal keys vote national metres; other, logical residents decide especially. Materials provide different, different families. Clearly open systems take pa Books science 0.45 11.52 0.042236898404 +AAAAAAAAENFAAAAA Quite clean scores write well lesser, important acti Books science 1.51 4772.7 17.49861501837 +AAAAAAAAIPFAAAAA Babies might attend open problems. Just private sections should mean truly industrial alone factors. Others suggest yet terms. Able, small properties would not know moreover diff Books science 2.51 2985.1 10.944562970926 +AAAAAAAAMAEAAAAA Especially british years feed; children expand small spirits. Assets include both previous effects. For example Books science 7.92 7713.93 28.282333134004 +AAAAAAAABJAAAAAA Prospects know Books self-help 59.77 2222.64 9.166886630593 +AAAAAAAAEMGAAAAA Changes would not go especially Books self-help 27.81 256.78 1.059043816814 +AAAAAAAAFGCAAAAA Pp. would agree thus processes. Married plans should want most in the houses. Ministers could write very foreign, level features. Ot Books self-help 1.89 5337.85 22.015020786591 +AAAAAAAAJHAAAAAA However increasing dates meet. Large, ready goals mean now blind structures. Crea Books self-help 38.79 14626.06 60.322604592847 +AAAAAAAAKGEAAAAA In order interesting ingredients get more. Young, in Books self-help 9.23 1739.72 7.175168272403 +AAAAAAAAMPBAAAAA Beautiful, short women could occur consciously women. Books self-help 2.94 63.35 0.261275900752 +AAAAAAAAAGCAAAAA Facilities form busy years. Women meet rather on the benefits. Only remarkable factors cannot start supreme, crucial skills; stairs take Books sports 7.52 5325.02 100 +AAAAAAAAAHDAAAAA National reasons Books travel 4.02 6797.59 19.713501866196 +AAAAAAAADJEAAAAA Good, domestic authorities can drink only blue, old findings. Historical, Books travel 84.79 12905.88 37.427983956801 +AAAAAAAAKPAAAAAA Flowers suffer following, subst Books travel 4.16 1183.69 3.432786476383 +AAAAAAAALCAAAAAA Resources shall not continue thus similar, practical results. Practical words f Books travel 6.08 1225.22 3.553226475339 +AAAAAAAALFGAAAAA Poor, Books travel 3.95 2847 8.256505586989 +AAAAAAAAMEAAAAAA Original interests see of course british, important terms. Yet appropriate principles conclude in a arrangements; good countries would get sometimes; Books travel 3.84 5804.95 16.834774185877 +AAAAAAAAMGBAAAAA White trees grow simply. Then possible banks used to get happily unhappy accused minds. Very fires should touch then particular towns. National systems watch actively victorian papers. Con Books travel 8.58 2781.25 8.065825839063 +AAAAAAAAMODAAAAA Months provide firmly whole, historical characters. Relatively perfect centres find tomorrow products. Others dream linguistic, good visitor Books travel 0.23 936.32 2.715395613351 +AAAAAAAAABDAAAAA Great, wonderful lakes must not arrange already to the rules. Easy, cultural elections need rather sensible orders. Hardly favorable prospects take at Home accent 1.06 12151.52 43.962576789216 +AAAAAAAAEAGAAAAA Over other countries cannot remai Home accent 9.45 8364.5 30.261644103239 +AAAAAAAAGPFAAAAA Potential, late services could hide. Feet take enough arms; running degrees diagnose especially persons. Close types should not re Home accent 3.2 6960.58 25.182449006172 +AAAAAAAAOLDAAAAA So old proposals could not reconsider varieties. Sentences Home accent 0.48 164 0.593330101373 +AAAAAAAAADEAAAAA International colleges shall mind large, outer hundreds. Technical, major times shall turn afterwards even medical questions. Alone members oug Home bathroom 2.57 650.24 18.381394717724 +AAAAAAAAHBFAAAAA There young things should not compete small, relative problems. Sources find right dealers. Late authorities must find groups. Feet fall continually major courses. Now Home bathroom 7.89 2887.25 81.618605282276 +AAAAAAAAAOGAAAAA As prime legs proceed probably orange, historic experiments. Here different skills may not appease usually continental terms. Cheerful daughters take on a shops. Far Home bedding 3.51 2578.8 38.904142654558 +AAAAAAAAHHCAAAAA Trades shall become. Terms provide yesterday black investigations. Industrial lines mean. Bri Home bedding 1.65 1342.4 20.251636846393 +AAAAAAAAMDFAAAAA Really evil methods see abroad present diseases. Here good police will not sit now alternatively strong markets. Then fascinating years mean Home bedding 1.79 2558.06 38.591256072172 +AAAAAAAAMPFAAAAA Issues go new banks. Significant, ordina Home bedding 79.19 149.34 2.252964426877 +AAAAAAAACAFAAAAA Western, young groups could understand more never important police; general years emerge broad talks. Findings insure so waiting problems Home blinds/shades 29.09 4006.01 15.801354668922 +AAAAAAAADOFAAAAA New needs write as. Back drivers like but for a years. Times perform soon economic odds. Very cold windows used to know occasionally. Cases must take Home blinds/shades 2.08 3486.69 13.752942531492 +AAAAAAAAEJGAAAAA Th Home blinds/shades 5.49 2416.2 9.530488728448 +AAAAAAAAFOAAAAAA Inevitably general children must focus Home blinds/shades 3.2 4401.98 17.363223562972 +AAAAAAAAGHDAAAAA Low men ought to try really. Just natural relationships shall not relate slightly other Home blinds/shades 6.97 8574.86 33.822782293691 +AAAAAAAAIJFAAAAA Ty Home blinds/shades 1.08 2466.58 9.729208214475 +AAAAAAAAPOCAAAAA Top options care tomorrow dangerous emotions. Cool deputies establish t Home blinds/shades 3.71 NULL NULL +AAAAAAAAACAAAAAA Ce Home curtains/drapes 1.77 880.85 2.332905340482 +AAAAAAAAAGEAAAAA Medium rights put enough sufficient elections; certain children will pick dark, wild men. New terms help today actu Home curtains/drapes 7.02 5668.09 15.011769803409 +AAAAAAAAAIAAAAAA Great, tiny animals adopt then outcomes. Terms sweep less dry, physical signs. National, black terms adapt for a reasons; groups shall Home curtains/drapes 4.06 9044.62 23.954410286236 +AAAAAAAACMFAAAAA Literally available ages stand never unusual bo Home curtains/drapes 42.98 404.26 1.07067073048 +AAAAAAAAGKDAAAAA Once again real differences can make black offenders. Consequen Home curtains/drapes 0.46 11861.12 31.413827771015 +AAAAAAAAIAGAAAAA Full, japanese pages must admit; fixed farms Home curtains/drapes 0.79 721.36 1.91050076223 +AAAAAAAAINFAAAAA Happy products provide mediterranean figures. Home curtains/drapes 5.48 1970.31 5.218308135784 +AAAAAAAAMMBAAAAA Recent flowers should trace alike hard questions. Small areas could not give easy, enthusiastic ends. Obvious concessions shall relate never reasons. Italian, acute officers c Home curtains/drapes 8.88 3217.93 8.522593043421 +AAAAAAAAOPFAAAAA Limited ey Home curtains/drapes 4.92 3989.1 10.565014126942 +AAAAAAAABJGAAAAA Objectives ignore today never responsible sites. Academic, Home decor 2.87 3738.95 12.078237270921 +AAAAAAAAJNGAAAAA Financial, clear nations ought to come. As private men imply; arbitrary, past days should colour quiet, financial men. Lips come by a questions. Deep years must not connec Home decor 4.49 1071.6 3.461677492216 +AAAAAAAAKPGAAAAA Hours afford together days. Future, important hundreds may hope overall for a services. Black breasts stop wives. Numbers s Home decor 4.76 5856.72 18.919443637746 +AAAAAAAALLGAAAAA Aspects acc Home decor 3.23 3610.26 11.662519394407 +AAAAAAAAMBEAAAAA However recent matt Home decor 0.69 11689.3 37.760905850836 +AAAAAAAAMOFAAAAA Certainly only priorities help definitely top arguments. Full years need abroad. Local functions get e Home decor 1.89 1184.46 3.826258419587 +AAAAAAAAPBDAAAAA Rarely social women will not stand chosen, sure bodies. Responsible directors ought to see then for a effo Home decor 6.27 3804.8 12.290957934287 +AAAAAAAAANDAAAAA Low, left communities send always so gothic operations. Too significant colours remove for a pounds. Eggs go scientific levels. Results sleep short, black partic Home flatware 7.13 9281.08 23.458206788339 +AAAAAAAABNCAAAAA Words shall not avoid then thick inches. Nevertheless gold facilities shall panic however. Good govern Home flatware 9.67 9706.43 24.533291612241 +AAAAAAAAEBGAAAAA Relations shall know head, decent weaknesses. Systematic implications might not keep in a managers. Much great others Home flatware 6.97 2848.32 7.199213837114 +AAAAAAAAEGBAAAAA Then central estimates can solve too central equal sentences; clear weeks join. Clean, remaining systems may not ask then terribly big affairs. Inevitably big pp. commen Home flatware 7.82 13963.4 35.292910379857 +AAAAAAAAMCDAAAAA Ago foreign arguments stress other materials; possible, optimistic sides must l Home flatware 9.51 99.2 0.250730961634 +AAAAAAAANMDAAAAA Players shall not ensue still rational, public losses. Uncertain times walk anywhere. Costs get. Nearly white sales remove available ends. Rivers will think then customers. Families trust together sig Home flatware 2.03 905.95 2.289815672303 +AAAAAAAAODFAAAAA Domestic years refuse strictly more selective years. Studies become schools. Almost clear countries end unknown, special images; further little men may no Home flatware 9.22 2759.94 6.975830748513 +AAAAAAAAABBAAAAA Benefits used to influence a little fields. There foreign figures must know radically new patients. American, genetic workers deter special, other boys; local Home furniture 1.71 394.56 1.031620032505 +AAAAAAAAABEAAAAA Less short parts can mention careful groups. Even successful tons say in a rights. Then chinese traditions repair. Attit Home furniture 8.76 1788.98 4.677482780187 +AAAAAAAAABGAAAAA Extra millions should condemn. Uncomfortable nurses should not joi Home furniture 4.64 52.68 0.137737589498 +AAAAAAAAAFDAAAAA Most increased shares may not examine sometimes evident, environmental roots. Minerals may live ge Home furniture 0.85 3547.96 9.276527297561 +AAAAAAAACBBAAAAA Lovely teachers would demo Home furniture 4.69 19874.51 51.964067954728 +AAAAAAAADHAAAAAA Policies used to decrease social forms; well massive parts admire lacking, necessary cities. More rational areas deceive therefore only facilities. Yet persist Home furniture 2.68 3872.06 10.123921996808 +AAAAAAAAFNBAAAAA Superior years can need yesterday radical points. Brothers might not clear more. Seriously present armies can perform too main real residents. Rarely public contacts could lock Home furniture 0.16 2359.25 6.168515717982 +AAAAAAAAKHFAAAAA Usually artistic shapes would not Home furniture 4.93 219.92 0.575004758588 +AAAAAAAAMOCAAAAA Black meals challenge vast roles. Common, recent men k Home furniture 23.89 2915.33 7.622447357467 +AAAAAAAAONEAAAAA Recent models cannot make warml Home furniture 2.18 3221.39 8.422674514676 +AAAAAAAAEAEAAAAA Suggest Home glassware 9.5 3368.18 23.316965716616 +AAAAAAAAGLFAAAAA As available thoughts satisfy even both criminal courses. Sure ways could not construct everywhere residents. Points could not ask downstairs pres Home glassware 2.84 891.59 6.172227571946 +AAAAAAAAJFFAAAAA Close, small reports will expand seriously men. Serious, a Home glassware 0.82 2399.91 16.613904005416 +AAAAAAAAOOAAAAAA Previously recent expectations win over true minutes. Extra perc Home glassware 2.39 7785.51 53.896902706022 +AAAAAAAAEHFAAAAA Kids used to know even. Homes require i Home kids 3.14 10076.37 58.53100472599 +AAAAAAAALPCAAAAA Networks mention organisms. Kilometres used to conduct as with a clients; somehow old teachers shall develop african, scientific institutions. Precisely national supporters tra Home kids 1.54 106.38 0.617933668846 +AAAAAAAAPHAAAAAA High, black homes shall not greet also magnificent facts; inc, environmental areas say well howev Home kids 3.66 7032.69 40.851061605164 +AAAAAAAAGKBAAAAA English, effective thousands make Home lighting 1.87 6853.47 15.530517878812 +AAAAAAAAICAAAAAA Usually other children must stop shares. Relations Home lighting 9.93 12724.77 28.835359020872 +AAAAAAAALBBAAAAA Democrats pay papers. Moving, conventional seats could not mind instead. Alone activit Home lighting 9.13 6127.08 13.884459330078 +AAAAAAAALBEAAAAA Gently contemporary operations can occur with the doubts; circumstances may feel high. Hard countries would no Home lighting 48.57 3093.83 7.010869257326 +AAAAAAAALCGAAAAA Hours influence in a interests. Years should choo Home lighting 3.18 5983.8 13.55977525009 +AAAAAAAAOJAAAAAA Great, absent relations should participate alone wonderful issues; chains will care on behalf of a police. Substantial activities exert grey, free Home lighting 9.17 9346.1 21.179019262821 +AAAAAAAAALGAAAAA Big, western sentences could use; prices bring average board Home mattresses 4.48 10486.75 56.344449184552 +AAAAAAAAHAGAAAAA Great tons expect so ever continuous doubts. Old, initial vehicles ought to die more laboratories. Elected, useful girls be Home mattresses 2.75 4829.15 25.946627580478 +AAAAAAAALGCAAAAA Different, new tests could not warn able, great bodies. Good, moving years might convey; permanently confident e Home mattresses 9.27 3295.96 17.70892323497 +AAAAAAAABDGAAAAA New sites shou Home paint 4.83 8207.26 18.184617988885 +AAAAAAAAILEAAAAA Sweet days allow theoretical, conventional events. Simple, useful offences w Home paint 0.76 8807.78 19.515174934161 +AAAAAAAAKDGAAAAA Things used to support yet early conditions; minutes must make halfway critical masters. Open trials m Home paint 36.48 10908.01 24.168601319922 +AAAAAAAAKOBAAAAA Elsewhere minimum hands stay about between a forms. Various relations will not like by a authorities. Products may begin secondary, other Home paint 6.55 13457.75 29.817995620941 +AAAAAAAAMGFAAAAA Resources could not provide ai Home paint 7.56 3348.86 7.419984233259 +AAAAAAAANAGAAAAA Light suggestions lie human, educational employees. Strong wounds might come new words. Important scenes will affect like a columns. Then principal farmers could not worry exceptio Home paint 7.24 403.32 0.893625902832 +AAAAAAAAGIGAAAAA Actually keen visitors shall inject just to Home rugs 1.24 2445.12 21.611493037817 +AAAAAAAAHKFAAAAA Relevant farmers can become various, fresh methods. Genuinely special women take british experienc Home rugs 4.43 2030.06 17.94293431666 +AAAAAAAAKECAAAAA Possible countries see ever. Never particular users ought to encourage in a casualties. Still upper proposals will see though succe Home rugs 87.61 3972.09 35.107804680581 +AAAAAAAANGAAAAAA Solutions may not go central, interesting sectors. Enterprises resist inte Home rugs 9.46 760.74 6.723893802181 +AAAAAAAAPCFAAAAA Standard women sit however sale Home rugs 7.34 2105.97 18.613874162761 +AAAAAAAAAEDAAAAA Modern farmers decide wild, usual efforts. Great needs matter without the communities; levels might abandon on a pa Home tables 7.16 11404.99 64.829847790412 +AAAAAAAAOEBAAAAA Over different children would provide successfully important international forms; well particular birds list in order. Horses used to pay never cert Home tables 1.94 6187.2 35.170152209588 +AAAAAAAAAICAAAAA Only, other occasions can work also birds. General women get si Home wallpaper 4.82 10701.57 17.641656555799 +AAAAAAAAGCFAAAAA Medical, proposed friends suggest then even arbitrary years. Governments continue upon the yea Home wallpaper 8.17 4654.63 7.673209057579 +AAAAAAAAJKDAAAAA Hardly well-known agencies might eat now similar british circumstances; institutions tell eventually. Informal problems will per Home wallpaper 57.16 17245.24 28.42896895524 +AAAAAAAAKABAAAAA Certainly difficult fields like for a fields. Old, ideal committees should experiment out of a messages. Hearts see geo Home wallpaper 8.59 3970.18 6.544885659273 +AAAAAAAAKEFAAAAA Important, awful changes shall determine then awful, possible respondents. Children clear especially. Really saf Home wallpaper 0.75 11302.36 18.632065518424 +AAAAAAAAKPBAAAAA For example flat users lower very new developments; animals enter systems. Male courses want Home wallpaper 6.27 3810.46 6.281585472002 +AAAAAAAAMNDAAAAA Compatible kids go at the acts. Massive operations may not mark brilliantly. Minds used to control severe, local boxes; therefore male issues must not live flatly new local officers. Substantial Home wallpaper 4.16 8976.36 14.797628781684 +AAAAAAAADCFAAAAA Police might not generate completely now personal newspapers. Levels settle widely furthermore basic f Sports archery 6.79 5069.42 14.258399636383 +AAAAAAAAEFCAAAAA Statistical, Sports archery 0.35 18161.83 51.082496669847 +AAAAAAAAEKFAAAAA Sure schools might fit as essential organisations; feelings average lazily modest aspects. British difficulties should enable Sports archery 0.14 72.54 0.204028135294 +AAAAAAAAMNGAAAAA Conscious, c Sports archery 4.8 6111.44 17.189215703922 +AAAAAAAAPIFAAAAA Trials shall opt now main ba Sports archery 4.72 6138.69 17.265859854553 +AAAAAAAACPAAAAAA At all lengthy sales must not restore poor, clean calculations; also alone inves Sports athletic shoes 1.76 3992.25 28.925428220958 +AAAAAAAAGAEAAAAA Equations may not lea Sports athletic shoes 6.16 4312.6 31.246490511793 +AAAAAAAAOFGAAAAA Real, sure elections tell as en route british services. Fi Sports athletic shoes 2.14 1111.5 8.053256551467 +AAAAAAAAPDBAAAAA Poor, serious years help bare, great days. Wide institutions detach carefully needs. Supreme models find almost new changes. Businesses assume just even experimental words. Mos Sports athletic shoes 0.45 4385.52 31.774824715781 +AAAAAAAAALFAAAAA Dir Sports baseball 5.85 14974.79 38.609298074407 +AAAAAAAAAPEAAAAA Indian days should not Sports baseball 0.57 5152.16 13.283744290707 +AAAAAAAADBGAAAAA Unfair years may survive then against a pictures. Previous stars write sure, new boys. Complete holidays shall not send at all barely growing stands. Early centres help economic concentrations. For Sports baseball 4.32 4700.93 12.120344098109 +AAAAAAAAPBGAAAAA Now empty authorities shall not Sports baseball 0.58 13957.57 35.986613536777 +AAAAAAAAAAHAAAAA Then sensible months would go other, profitable systems. For instance easy cigarettes accommodate perhaps holy changes. Persistent schools should eat. Away white schools would give under. Able grou Sports basketball 2.16 2081.01 47.08018298063 +AAAAAAAACBFAAAAA Primary, front circumstances may no Sports basketball 1.19 2339.13 52.91981701937 +AAAAAAAAAIDAAAAA Instead local goods heat better metropolitan nations; however different posts remember normally in a minds. So good visitors Sports camping 3.26 1294.83 9.198313255409 +AAAAAAAAFLGAAAAA Immediate co Sports camping 5.38 1025 7.281474082925 +AAAAAAAAKFFAAAAA Numerous, specific courts top even on a machines. Children could not endure too payable acc Sports camping 51.7 1562.4 11.099097665524 +AAAAAAAAKLCAAAAA Top, correct qualifications grab parts Sports camping 2.43 5768.31 40.977365626612 +AAAAAAAAOKEAAAAA Good titles can expect. Nuclear, attractive pupils might not tell political, dull moments. Attitudes used to grow usually chemicals. Police might not wish in a policies. Econom Sports camping 4.28 4426.28 31.443749369531 +AAAAAAAACIAAAAAA Final orders give else. International, living personnel may miss significant companies. Black, american numbers put then Sports fishing 1.7 3767.86 12.775607177527 +AAAAAAAACNCAAAAA Cells will say quite with the manufacturers. Immediate steps shall assess hardly. Legal, high policies recognize also significant politicians. Only, political companies must not run d Sports fishing 3.38 11626.7 39.422418022684 +AAAAAAAADEDAAAAA Institutional, ethical minutes say sources. Great lectures shall buy of course therefore steep men. Social sources go. Members meet all. All heavy tons will concentrate in the books; Sports fishing 5.52 1651.38 5.599300977431 +AAAAAAAAEDGAAAAA Modern numbers stop various, old programs; children must not reinstate always in a tanks; passive, financia Sports fishing 2.45 27.52 0.093311510917 +AAAAAAAAMAFAAAAA Less political cases establish in the surfaces. Waiting, important games need very. Alone, academic customers may not see for a c Sports fishing 5.13 1718.82 5.827968430058 +AAAAAAAANNCAAAAA Effects used to look in a aspects. More domestic changes could turn away medieval, financial families. Domestic, alone techniques should we Sports fishing 1.4 3846.9 13.043606517022 +AAAAAAAAOBBAAAAA Reasonable, parliamentary fires could Sports fishing 1.21 6471.09 21.941394810429 +AAAAAAAAPBAAAAAA Bright advisers explain i Sports fishing 8.48 382.34 1.296392553931 +AAAAAAAAANEAAAAA Pictures see below increased pupils. Again experimental preferences will not set of course foreign unions; stones take ago negotiations. Others might not take still together wi Sports fitness 0.9 3581.94 33.240162807143 +AAAAAAAACNEAAAAA Connections agree structures. Good minds incorporate more early, national lights; young, young p Sports fitness 3.45 1868.82 17.342524178865 +AAAAAAAAFPFAAAAA Groups hurt children. Organisms would not pick somehow too square examples. Environmental years counteract further into a arguments. Nuclear, unawa Sports fitness 4.01 2613.33 24.251527012957 +AAAAAAAAICDAAAAA Valuable officers must not put for the defences; purposes hurt in particular by a structures; Sports fitness 7.42 2711.85 25.165786001036 +AAAAAAAAFBBAAAAA Owners restore very ancient, new themes. Possible millions used to carry op Sports football 3.83 8540.51 44.599081334676 +AAAAAAAAIIDAAAAA Weeks must twist. Children fall for a girls; gr Sports football 3.3 3708.63 19.36669953085 +AAAAAAAANOEAAAAA Nasty customers pick in a considerations; surprised positions sacrifice principal players. Grounds would not offer together only individuals. Therefore glad negotiations can underst Sports football 4.83 5110.64 26.688084087747 +AAAAAAAAOHEAAAAA Subsequent schools ensure more useful hours. Statistical ways may not undertake much relationships. Fa Sports football 1.83 1789.74 9.346135046727 +AAAAAAAADICAAAAA Long old elements consider often just great conservatives; likely, foreign consequences may remember; massive Sports golf 32.36 4947.79 62.917443418948 +AAAAAAAADLFAAAAA Available problems could keep late, great risks. Supreme situations ought to follow once even beautiful systems. Narrow, late authorities should tell e Sports golf 3.04 681.91 8.671353036773 +AAAAAAAAJDEAAAAA Borders may stay too b Sports golf 8.11 1845.35 23.465972527766 +AAAAAAAAKJEAAAAA Hot seeds should ask significant, l Sports golf 7.66 388.89 4.945231016513 +AAAAAAAACJGAAAAA Apparently literary pounds ought to come welsh, large d Sports guns 7.02 2261.92 27.696968286952 +AAAAAAAADMEAAAAA Dry words make already yet costly friends; interesting courts send again. Either pleasa Sports guns 5.4 4802.22 58.802669876461 +AAAAAAAAGGBAAAAA Australian countries disappear more low Sports guns 3.75 567.45 6.948364510872 +AAAAAAAAOODAAAAA Prime years should ask short for long simple bits. Sports guns 6 535.08 6.551997325715 +AAAAAAAACHBAAAAA Sec Sports hockey 2.13 6690.03 18.607063142744 +AAAAAAAADLCAAAAA French nations demonstrate in an skills. Rooms carry rural guidelines; options pay splendid, square fields; prices overcome small, racial parts. Weeks cannot preserve all but lakes. F Sports hockey 0.09 3799.34 10.567151310346 +AAAAAAAAHLEAAAAA Then friendly specialists may work early for a rocks. Years describe enor Sports hockey 7 5486.49 15.259642462296 +AAAAAAAALEEAAAAA Marks shall not ensure little too dry groups. More clear relations ought to make in private concerning the reports. Careers Sports hockey 5.9 2676.32 7.443681901305 +AAAAAAAAMKAAAAAA Automatic, black developments get thus new profits. Chemicals describe widely similar temperatures. Easy features used to emphasize different Sports hockey 0.83 6838.16 19.019058942962 +AAAAAAAAOAAAAAAA Important grounds rip there just big vehicles. Journalists w Sports hockey 1.85 10463.91 29.103402240347 +AAAAAAAAAEAAAAAA Public, annual h Sports optics 2.02 5797.43 18.164884308891 +AAAAAAAABKCAAAAA Past, adequate years may not worry also open male Sports optics 0.79 11150.1 34.93621769173 +AAAAAAAADFFAAAAA Gastric ends go personal, official years; concentrat Sports optics 1.51 3900.05 12.219890028666 +AAAAAAAAINEAAAAA Talks might not react now populations. Powerful effects would take more wide, dangerous seconds. Less common patients could come just Sports optics 3.09 4096.27 12.834699280195 +AAAAAAAAMFAAAAAA New, quick observations merge too worth a children; shares could live there crucial mountains. Simply eastern pounds shall crush immediately married long wives. Corporate, import Sports optics 4.48 6971.74 21.844308690518 +AAAAAAAACGAAAAAA Years know merely religious reasons. New animals modernise well racial pieces. Various, chi Sports outdoor 3.16 6743.55 14.066686886445 +AAAAAAAAEMDAAAAA Small, full states might not join forward both sure possibilities. Top women achieve true ya Sports outdoor 4.66 4318.93 9.009058432795 +AAAAAAAAGCCAAAAA Arguments used to make originally discussions. Clear, great strategies will want geographical railways. Important patients ought to protect right also western children. French circumstances get up to Sports outdoor 3.72 7196.03 15.010536117544 +AAAAAAAAGDFAAAAA Much poor companies must offer equal powers; parliamentary terms seek so. Social men beat british clothes. Under Sports outdoor 1.75 7052.22 14.710556100915 +AAAAAAAAILGAAAAA Positive reasons Sports outdoor 5.25 107.1 0.223404907732 +AAAAAAAAJCFAAAAA Unusual, good courses Sports outdoor 84.32 10749.3 22.422468484472 +AAAAAAAALLAAAAAA Benefits may show only goods. More economic issues may fetch then human, political pilots. British, appropriate friends must make. Cultural forces believe. Much obvious numbers make rough Sports outdoor 0.79 4066.79 8.483107793807 +AAAAAAAAMLCAAAAA Now silly doctors make units. Evenly natural figures cannot rectify so unpleasant eyes. Top proceedings follow. Steps try quite dependent, financial tanks. Already Sports outdoor 2.43 4150.64 8.658014437255 +AAAAAAAAPNAAAAAA Common cha Sports outdoor 5.87 3555.3 7.416166839035 +AAAAAAAACLDAAAAA Voters should control provisions. Parliamentary days Sports pools 6.33 5203.81 10.939116674017 +AAAAAAAAGLCAAAAA Regular, Sports pools 0.7 2426.48 5.100791117887 +AAAAAAAAGMFAAAAA Present, individual substances take so at a appointments. True aut Sports pools 1.76 10657.17 22.40282140294 +AAAAAAAAMEGAAAAA Short owners may become further obvious markets. Important, various thoughts might meet below so educational resources. Other, modern games determine slightly inside a benefits. Long likely instrument Sports pools 76.51 10293.66 21.638673922119 +AAAAAAAAOFEAAAAA Too concerned seats must judge. Afterwards lucky families must work sound defences. Services know in the others. Surprised, other horses think Sports pools 2.34 18989.54 39.918596883037 +AAAAAAAAAKAAAAAA Legs cannot make much across a children. Well industrial ports see so. Equal, full systems rise police. Labour departments will leave. Political, social Sports sailing 1.17 4953.59 9.880384397514 +AAAAAAAACJCAAAAA Ever informal books suffice as available developments. Outside patterns might drive like a organisations. Generally political characters might not know finally new interests. Recently old shops wo Sports sailing 82.11 30433.67 60.702714238984 +AAAAAAAAEIFAAAAA Police could no Sports sailing 3.94 4036.3 8.050766321735 +AAAAAAAAEKGAAAAA Minerals used to leave american flowers; so wrong questions activate rigid dishes. Records should involve teachers. Significant, difficult cri Sports sailing 1.58 10712.04 21.366135041767 +AAAAAAAAALCAAAAA Long managerial powers could make also lexical principal children. Very blank authors used Sports tennis 2.87 11158.53 100 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/results/q99.slt.no b/vortex-sqllogictest/slt/tpcds/datafusion/results/q99.slt.no new file mode 100644 index 00000000000..0e17f8af911 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/results/q99.slt.no @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIIII +SELECT w_substr , + sm_type , + LOWER(cc_name) cc_name_lower , + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 30) + AND (cs_ship_date_sk - cs_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 60) + AND (cs_ship_date_sk - cs_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 90) + AND (cs_ship_date_sk - cs_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM catalog_sales , + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, * + FROM warehouse) AS sq1 , + ship_mode , + call_center , + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY w_substr , + sm_type , + cc_name +ORDER BY w_substr NULLS FIRST, + sm_type NULLS FIRST, + cc_name_lower NULLS FIRST +LIMIT 100; +---- +Conventional childr EXPRESS ny metro 1810 2036 1851 0 0 +Conventional childr LIBRARY ny metro 1299 1478 1409 0 0 +Conventional childr NEXT DAY ny metro 1804 1911 1871 0 0 +Conventional childr OVERNIGHT ny metro 1423 1425 1370 0 0 +Conventional childr REGULAR ny metro 1397 1420 1395 0 0 +Conventional childr TWO DAY ny metro 1374 1449 1421 0 0 diff --git a/vortex-sqllogictest/slt/tpcds/datafusion/tpcds.slt b/vortex-sqllogictest/slt/tpcds/datafusion/tpcds.slt new file mode 100644 index 00000000000..e1b2afe11c8 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/datafusion/tpcds.slt @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +include ../../setup.slt.no + +let FILE_FORMAT +SELECT 'vortex'; + +include ./create.slt.no +include ./results/*.slt.no +include ./plans/*.slt.no +include ./drop.slt.no diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/create.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/create.slt.no new file mode 100644 index 00000000000..583d4c797f5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/create.slt.no @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +statement ok +CREATE VIEW call_center AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/call_center.${FILE_FORMAT}'); + +statement ok +CREATE VIEW catalog_page AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/catalog_page.${FILE_FORMAT}'); + +statement ok +CREATE VIEW catalog_returns AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/catalog_returns.${FILE_FORMAT}'); + +statement ok +CREATE VIEW catalog_sales AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/catalog_sales.${FILE_FORMAT}'); + +statement ok +CREATE VIEW customer AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/customer.${FILE_FORMAT}'); + +statement ok +CREATE VIEW customer_address AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/customer_address.${FILE_FORMAT}'); + +statement ok +CREATE VIEW customer_demographics AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/customer_demographics.${FILE_FORMAT}'); + +statement ok +CREATE VIEW date_dim AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/date_dim.${FILE_FORMAT}'); + +statement ok +CREATE VIEW household_demographics AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/household_demographics.${FILE_FORMAT}'); + +statement ok +CREATE VIEW income_band AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/income_band.${FILE_FORMAT}'); + +statement ok +CREATE VIEW inventory AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/inventory.${FILE_FORMAT}'); + +statement ok +CREATE VIEW item AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/item.${FILE_FORMAT}'); + +statement ok +CREATE VIEW promotion AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/promotion.${FILE_FORMAT}'); + +statement ok +CREATE VIEW reason AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/reason.${FILE_FORMAT}'); + +statement ok +CREATE VIEW ship_mode AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/ship_mode.${FILE_FORMAT}'); + +statement ok +CREATE VIEW store AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/store.${FILE_FORMAT}'); + +statement ok +CREATE VIEW store_returns AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/store_returns.${FILE_FORMAT}'); + +statement ok +CREATE VIEW store_sales AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/store_sales.${FILE_FORMAT}'); + +statement ok +CREATE VIEW time_dim AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/time_dim.${FILE_FORMAT}'); + +statement ok +CREATE VIEW warehouse AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/warehouse.${FILE_FORMAT}'); + +statement ok +CREATE VIEW web_page AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/web_page.${FILE_FORMAT}'); + +statement ok +CREATE VIEW web_returns AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/web_returns.${FILE_FORMAT}'); + +statement ok +CREATE VIEW web_sales AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/web_sales.${FILE_FORMAT}'); + +statement ok +CREATE VIEW web_site AS SELECT * FROM read_${FILE_FORMAT}('slt/tpcds/data/web_site.${FILE_FORMAT}'); diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/drop.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/drop.slt.no new file mode 100644 index 00000000000..906b4f25193 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/drop.slt.no @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +statement ok +DROP VIEW web_site; + +statement ok +DROP VIEW web_sales; + +statement ok +DROP VIEW web_returns; + +statement ok +DROP VIEW web_page; + +statement ok +DROP VIEW warehouse; + +statement ok +DROP VIEW time_dim; + +statement ok +DROP VIEW store_sales; + +statement ok +DROP VIEW store_returns; + +statement ok +DROP VIEW store; + +statement ok +DROP VIEW ship_mode; + +statement ok +DROP VIEW reason; + +statement ok +DROP VIEW promotion; + +statement ok +DROP VIEW item; + +statement ok +DROP VIEW inventory; + +statement ok +DROP VIEW income_band; + +statement ok +DROP VIEW household_demographics; + +statement ok +DROP VIEW date_dim; + +statement ok +DROP VIEW customer_demographics; + +statement ok +DROP VIEW customer_address; + +statement ok +DROP VIEW customer; + +statement ok +DROP VIEW catalog_sales; + +statement ok +DROP VIEW catalog_returns; + +statement ok +DROP VIEW catalog_page; + +statement ok +DROP VIEW call_center; diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/parity.slt b/vortex-sqllogictest/slt/tpcds/duckdb/parity.slt new file mode 100644 index 00000000000..437b1004783 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/parity.slt @@ -0,0 +1,536 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +# Checks that every Vortex table produced by generate_data.sh holds exactly the +# same rows as the Parquet table it was converted from. generate_data.sh runs +# this file right after the conversion, and it also runs as part of the suite. + +include ../../setup.slt.no + +# call_center +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/call_center.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/call_center.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/call_center.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/call_center.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/call_center.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/call_center.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/call_center.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/call_center.parquet')); +---- +0 + +# catalog_page +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/catalog_page.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/catalog_page.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/catalog_page.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/catalog_page.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/catalog_page.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/catalog_page.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/catalog_page.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/catalog_page.parquet')); +---- +0 + +# catalog_returns +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/catalog_returns.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/catalog_returns.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/catalog_returns.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/catalog_returns.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/catalog_returns.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/catalog_returns.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/catalog_returns.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/catalog_returns.parquet')); +---- +0 + +# catalog_sales +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/catalog_sales.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/catalog_sales.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/catalog_sales.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/catalog_sales.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/catalog_sales.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/catalog_sales.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/catalog_sales.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/catalog_sales.parquet')); +---- +0 + +# customer +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/customer.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/customer.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/customer.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/customer.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/customer.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/customer.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/customer.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/customer.parquet')); +---- +0 + +# customer_address +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/customer_address.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/customer_address.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/customer_address.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/customer_address.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/customer_address.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/customer_address.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/customer_address.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/customer_address.parquet')); +---- +0 + +# customer_demographics +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/customer_demographics.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/customer_demographics.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/customer_demographics.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/customer_demographics.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/customer_demographics.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/customer_demographics.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/customer_demographics.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/customer_demographics.parquet')); +---- +0 + +# date_dim +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/date_dim.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/date_dim.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/date_dim.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/date_dim.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/date_dim.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/date_dim.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/date_dim.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/date_dim.parquet')); +---- +0 + +# household_demographics +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/household_demographics.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/household_demographics.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/household_demographics.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/household_demographics.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/household_demographics.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/household_demographics.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/household_demographics.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/household_demographics.parquet')); +---- +0 + +# income_band +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/income_band.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/income_band.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/income_band.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/income_band.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/income_band.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/income_band.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/income_band.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/income_band.parquet')); +---- +0 + +# inventory +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/inventory.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/inventory.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/inventory.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/inventory.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/inventory.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/inventory.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/inventory.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/inventory.parquet')); +---- +0 + +# item +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/item.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/item.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/item.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/item.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/item.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/item.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/item.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/item.parquet')); +---- +0 + +# promotion +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/promotion.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/promotion.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/promotion.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/promotion.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/promotion.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/promotion.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/promotion.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/promotion.parquet')); +---- +0 + +# reason +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/reason.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/reason.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/reason.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/reason.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/reason.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/reason.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/reason.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/reason.parquet')); +---- +0 + +# ship_mode +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/ship_mode.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/ship_mode.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/ship_mode.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/ship_mode.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/ship_mode.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/ship_mode.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/ship_mode.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/ship_mode.parquet')); +---- +0 + +# store +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/store.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/store.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/store.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/store.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/store.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/store.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/store.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/store.parquet')); +---- +0 + +# store_returns +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/store_returns.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/store_returns.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/store_returns.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/store_returns.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/store_returns.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/store_returns.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/store_returns.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/store_returns.parquet')); +---- +0 + +# store_sales +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/store_sales.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/store_sales.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/store_sales.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/store_sales.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/store_sales.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/store_sales.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/store_sales.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/store_sales.parquet')); +---- +0 + +# time_dim +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/time_dim.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/time_dim.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/time_dim.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/time_dim.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/time_dim.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/time_dim.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/time_dim.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/time_dim.parquet')); +---- +0 + +# warehouse +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/warehouse.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/warehouse.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/warehouse.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/warehouse.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/warehouse.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/warehouse.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/warehouse.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/warehouse.parquet')); +---- +0 + +# web_page +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/web_page.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/web_page.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/web_page.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/web_page.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/web_page.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/web_page.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/web_page.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/web_page.parquet')); +---- +0 + +# web_returns +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/web_returns.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/web_returns.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/web_returns.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/web_returns.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/web_returns.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/web_returns.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/web_returns.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/web_returns.parquet')); +---- +0 + +# web_sales +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/web_sales.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/web_sales.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/web_sales.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/web_sales.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/web_sales.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/web_sales.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/web_sales.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/web_sales.parquet')); +---- +0 + +# web_site +query TT rowsort +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_parquet('slt/tpcds/data/web_site.parquet')) +EXCEPT +SELECT column_name, column_type FROM (DESCRIBE SELECT * FROM read_vortex('slt/tpcds/data/web_site.vortex')); +---- + +query I +SELECT (SELECT COUNT(*) FROM read_parquet('slt/tpcds/data/web_site.parquet')) - (SELECT COUNT(*) FROM read_vortex('slt/tpcds/data/web_site.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_parquet('slt/tpcds/data/web_site.parquet') EXCEPT ALL SELECT * FROM read_vortex('slt/tpcds/data/web_site.vortex')); +---- +0 + +query I +SELECT COUNT(*) FROM (SELECT * FROM read_vortex('slt/tpcds/data/web_site.vortex') EXCEPT ALL SELECT * FROM read_parquet('slt/tpcds/data/web_site.parquet')); +---- +0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/parquet.slt b/vortex-sqllogictest/slt/tpcds/duckdb/parquet.slt new file mode 100644 index 00000000000..e02dc31fe45 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/parquet.slt @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +include ../../setup.slt.no + +let FILE_FORMAT +SELECT 'parquet'; + +include ./create.slt.no +include ./results/*.slt.no +include ./drop.slt.no diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q1.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q1.slt.no new file mode 100644 index 00000000000..6cfe866fb9d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q1.slt.no @@ -0,0 +1,890 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH customer_total_return AS + (SELECT sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + sum(sr_return_amt) AS ctr_total_return + FROM store_returns, + date_dim + WHERE sr_returned_date_sk = d_date_sk + AND d_year = 2000 + GROUP BY sr_customer_sk, + sr_store_sk) +SELECT c_customer_id +FROM customer_total_return ctr1, + store, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(sr_returned_date_sk = d_date_sk)", + "(d_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "sr_customer_sk", + "sr_store_sk" + ], + "Expressions": "sum(sr_return_amt)" + } + } + ], + "extra_info": { + "Expressions": [ + "ctr_customer_sk", + "ctr_store_sk", + "ctr_total_return" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "(ctr_store_sk = ctr_store_sk)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ctr_total_return)" + } + } + ], + "extra_info": { + "Expressions": "(avg(ctr_total_return) * CAST(1.2 AS DOUBLE))" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "(s_store_sk = ctr_store_sk)", + "(s_state = CAST('TN' AS VARCHAR))", + "(ctr_customer_sk = c_customer_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": "c_customer_id" + } + } + ], + "extra_info": { + "Order By": "memory.main.customer.c_customer_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_customer_sk", + "sr_store_sk", + "sr_return_amt" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_usmallint(#3, 2450821)" + ], + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Groups": [ + "sr_customer_sk", + "sr_store_sk" + ], + "Expressions": "sum(sr_return_amt)", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Expressions": [ + "ctr_customer_sk", + "ctr_store_sk", + "ctr_total_return" + ], + "Estimated Cardinality": "5712" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "5712" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_state = \"TN\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ctr_store_sk = s_store_sk)", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ctr_customer_sk)", + "Estimated Cardinality": "5712" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "5712" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "5177" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ctr_store_sk = ctr_store_sk)", + "Estimated Cardinality": "1034" + } + } + ], + "extra_info": { + "Groups": "ctr_store_sk", + "Expressions": "avg(ctr_total_return)", + "Estimated Cardinality": "517" + } + } + ], + "extra_info": { + "Expressions": [ + "(avg(ctr_total_return) * 1.2)", + "ctr_store_sk" + ], + "Estimated Cardinality": "517" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(ctr_store_sk IS NOT DISTINCT FROM ctr_store_sk)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Expressions": "c_customer_id", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_customer_sk", + "sr_store_sk", + "sr_return_amt" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_usmallint(#3, 2450821)" + ], + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Projections": [ + "sr_customer_sk", + "sr_store_sk", + "sr_return_amt" + ], + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "5712" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "5712" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_state='TN'", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ctr_store_sk = s_store_sk", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ctr_customer_sk", + "Estimated Cardinality": "5712" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "5712" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "5177" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ctr_store_sk = ctr_store_sk", + "Estimated Cardinality": "1034" + } + } + ], + "extra_info": { + "Projections": [ + "ctr_store_sk", + "ctr_total_return" + ], + "Estimated Cardinality": "1034" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "517" + } + } + ], + "extra_info": { + "Projections": [ + "(avg(ctr_total_return) * 1.2)", + "ctr_store_sk" + ], + "Estimated Cardinality": "517" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "ctr_store_sk IS NOT DISTINCT FROM ctr_store_sk", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#1", + "Aggregates": "", + "Estimated Cardinality": "5177" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "ctr_store_sk IS NOT DISTINCT FROM ctr_store_sk", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "5712" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.customer.c_customer_id ASC" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q10.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q10.slt.no new file mode 100644 index 00000000000..09de4e841c9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q10.slt.no @@ -0,0 +1,1785 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3, + cd_dep_count, + count(*) cnt4, + cd_dep_employed_count, + count(*) cnt5, + cd_dep_college_count, + count(*) cnt6 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ('Rush County', + 'Toole County', + 'Jefferson County', + 'Dona Ana County', + 'La Porte County') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_moy >= CAST(1 AS BIGINT))", + "(d_moy <= CAST((1 + 3) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ws_bill_customer_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_moy >= CAST(1 AS BIGINT))", + "(d_moy <= CAST((1 + 3) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = cs_ship_customer_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_moy >= CAST(1 AS BIGINT))", + "(d_moy <= CAST((1 + 3) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_current_addr_sk = ca_address_sk)", + "(ca_county IN (CAST('Rush County' AS VARCHAR), CAST('Toole County' AS VARCHAR), CAST('Jefferson County' AS VARCHAR), CAST('Dona Ana County' AS VARCHAR), CAST('La Porte County' AS VARCHAR)))", + "(cd_demo_sk = c_current_cdemo_sk)", + "SUBQUERY", + "(SUBQUERY OR SUBQUERY)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cnt1", + "cd_purchase_estimate", + "cnt2", + "cd_credit_rating", + "cnt3", + "cd_dep_count", + "cnt4", + "cd_dep_employed_count", + "cnt5", + "cd_dep_college_count", + "cnt6" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer_demographics.cd_gender", + "memory.main.customer_demographics.cd_marital_status", + "memory.main.customer_demographics.cd_education_status", + "memory.main.customer_demographics.cd_purchase_estimate", + "memory.main.customer_demographics.cd_credit_rating", + "memory.main.customer_demographics.cd_dep_count", + "memory.main.customer_demographics.cd_dep_employed_count", + "memory.main.customer_demographics.cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Rush County\", \"Toole County\", \"Jefferson County\", \"Dona Ana County\", \"La Porte County\"], $.ca_county)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "192080" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "(1i64 <= $.d_moy <= 4i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "(1i64 <= $.d_moy <= 4i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_ship_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "(1i64 <= $.d_moy <= 4i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_customer_sk = c_customer_sk)", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)" + } + } + ], + "extra_info": { + "Expressions": "(SUBQUERY OR SUBQUERY)", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 500)", + "#4", + "__internal_compress_integral_utinyint(#5, 0)", + "__internal_compress_integral_utinyint(#6, 0)", + "__internal_compress_integral_utinyint(#7, 0)" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Groups": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Expressions": "count_star()", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 500)", + "#4", + "__internal_decompress_integral_bigint(#5, 0)", + "__internal_decompress_integral_bigint(#6, 0)", + "__internal_decompress_integral_integer(#7, 0)", + "#8" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cnt1", + "cd_purchase_estimate", + "cnt2", + "cd_credit_rating", + "cnt3", + "cd_dep_count", + "cnt4", + "cd_dep_employed_count", + "cnt5", + "cd_dep_college_count", + "cnt6" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Projections": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Rush County\", \"Toole County\", \"Jefferson County\", \"Dona Ana County\", \"La Porte County\"], $.ca_county)", + "Projections": "ca_address_sk", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#8", + "Aggregates": "", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416", + "Delim Index": "1" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "2", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#8", + "Aggregates": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416", + "Delim Index": "2" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_ship_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "3", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_customer_sk = c_customer_sk", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#8", + "Aggregates": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "0", + "Delim Index": "3" + } + } + ], + "extra_info": { + "Expression": "(SUBQUERY OR SUBQUERY)", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 500)", + "#4", + "__internal_compress_integral_utinyint(#5, 0)", + "__internal_compress_integral_utinyint(#6, 0)", + "__internal_compress_integral_utinyint(#7, 0)" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "count_star()", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 500)", + "#4", + "__internal_decompress_integral_bigint(#5, 0)", + "__internal_decompress_integral_bigint(#6, 0)", + "__internal_decompress_integral_integer(#7, 0)", + "#8" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cnt1", + "cd_purchase_estimate", + "cnt2", + "cd_credit_rating", + "cnt3", + "cd_dep_count", + "cnt4", + "cd_dep_employed_count", + "cnt5", + "cd_dep_college_count", + "cnt6" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer_demographics.cd_gender ASC", + "memory.main.customer_demographics.cd_marital_status ASC", + "memory.main.customer_demographics.cd_education_status ASC", + "memory.main.customer_demographics.cd_purchase_estimate ASC", + "memory.main.customer_demographics.cd_credit_rating ASC", + "memory.main.customer_demographics.cd_dep_count ASC", + "memory.main.customer_demographics.cd_dep_employed_count ASC", + "memory.main.customer_demographics.cd_dep_college_count ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q11.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q11.slt.no new file mode 100644 index 00000000000..1952b86551c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q11.slt.no @@ -0,0 +1,1739 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ss_ext_list_price-ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ws_ext_list_price-ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN (t_w_secyear.year_total*1.0000) / t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN (t_s_secyear.year_total*1.0000) / t_s_firstyear.year_total + ELSE 0.0 + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((ss_ext_list_price - ss_ext_discount_amt))" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "customer_birth_country", + "customer_login", + "customer_email_address", + "dyear", + "year_total", + "sale_type" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ws_bill_customer_sk)", + "(ws_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((ws_ext_list_price - ws_ext_discount_amt))" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "customer_birth_country", + "customer_login", + "customer_email_address", + "dyear", + "year_total", + "sale_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(sale_type = CAST('s' AS VARCHAR))", + "(sale_type = CAST('w' AS VARCHAR))", + "(sale_type = CAST('s' AS VARCHAR))", + "(sale_type = CAST('w' AS VARCHAR))", + "(dyear = CAST(2001 AS BIGINT))", + "(dyear = CAST((2001 + 1) AS BIGINT))", + "(dyear = CAST(2001 AS BIGINT))", + "(dyear = CAST((2001 + 1) AS BIGINT))", + "(year_total > CAST(0 AS DECIMAL(38,2)))", + "(year_total > CAST(0 AS DECIMAL(38,2)))", + "(CASE WHEN ((year_total > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST((year_total * CAST(1.0000 AS DECIMAL(38,4))) AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE CAST(0.0 AS DOUBLE) END > CASE WHEN ((year_total > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST((year_total * CAST(1.0000 AS DECIMAL(38,4))) AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE CAST(0.0 AS DOUBLE) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag" + ] + } + } + ], + "extra_info": { + "Order By": [ + "t_s_secyear.customer_id", + "t_s_secyear.customer_first_name", + "t_s_secyear.customer_last_name", + "t_s_secyear.customer_preferred_cust_flag" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_ext_discount_amt", + "ss_ext_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_compress_integral_utinyint(#2, 1900)", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((ss_ext_list_price - ss_ext_discount_amt))", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk", + "ws_ext_discount_amt", + "ws_ext_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_compress_integral_utinyint(#2, 1900)", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((ws_ext_list_price - ws_ext_discount_amt))", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ] + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2001)", + "(year_total > 0.00)", + "(sale_type = 's')" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2002)", + "(sale_type = 's')" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "518659" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2001)", + "(year_total > 0.00)", + "(sale_type = 'w')" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2002)", + "(sale_type = 'w')" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "518659" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(customer_id = customer_id)", + "(CASE WHEN ((year_total > 0.00)) THEN ((CAST((year_total * 1.0000) AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE 0.0 END < CASE WHEN ((year_total > 0.00)) THEN ((CAST((year_total * 1.0000) AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE 0.0 END)" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_ext_discount_amt", + "ss_ext_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_compress_integral_utinyint(#2, 1900)", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year", + "(ss_ext_list_price - ss_ext_discount_amt)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "sum(#8)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#7", + "#8" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk", + "ws_ext_discount_amt", + "ws_ext_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_compress_integral_utinyint(#2, 1900)", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year", + "(ws_ext_list_price - ws_ext_discount_amt)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "sum(#8)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#7", + "#8" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": {} + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2001) AND (year_total > 0.00) AND (sale_type = 's'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) AND (sale_type = 's'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#5" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "518659" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2001) AND (year_total > 0.00) AND (sale_type = 'w'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) AND (sale_type = 'w'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "518659" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "customer_id = customer_id", + "CASE WHEN ((year_total > 0.00)) THEN ((CAST((year_total * 1.0000) AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE 0.0 END < CASE WHEN ((year_total > 0.00)) THEN ((CAST((year_total * 1.0000) AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE 0.0 END" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "t_s_secyear.customer_id ASC", + "t_s_secyear.customer_first_name ASC", + "t_s_secyear.customer_last_name ASC", + "t_s_secyear.customer_preferred_cust_flag ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q12.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q12.slt.no new file mode 100644 index 00000000000..7167dd1ab5d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q12.slt.no @@ -0,0 +1,606 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ws_ext_sales_price) AS itemrevenue, + sum(ws_ext_sales_price)*100.0000/sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM web_sales, + item, + date_dim +WHERE ws_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price +ORDER BY i_category, + i_class, + i_item_id, + i_item_desc, + revenueratio +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_item_sk = i_item_sk)", + "(i_category IN (CAST('Sports' AS VARCHAR), CAST('Books' AS VARCHAR), CAST('Home' AS VARCHAR)))", + "(ws_sold_date_sk = d_date_sk)", + "(d_date >= CAST('1999-02-22' AS DATE))", + "(d_date <= CAST('1999-03-24' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price" + ], + "Expressions": "sum(ws_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_category", + "memory.main.item.i_class", + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "((sum(memory.main.web_sales.ws_ext_sales_price) * 100.0000) / sum(sum(memory.main.web_sales.ws_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class))" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Sports\", \"Books\", \"Home\"], $.i_category)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999-02-22 <= $.d_date <= 1999-03-24)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 2450816)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price" + ], + "Expressions": "sum(ws_ext_sales_price)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Sports\", \"Books\", \"Home\"], $.i_category)", + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999-02-22 <= $.d_date <= 1999-03-24)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 2450816)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "sum(#5)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": "sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.item.i_category ASC", + "memory.main.item.i_class ASC", + "memory.main.item.i_item_id ASC", + "memory.main.item.i_item_desc ASC", + "((sum(memory.main.web_sales.ws_ext_sales_price) * 100.0000) / sum(sum(memory.main.web_sales.ws_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class)) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q13.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q13.slt.no new file mode 100644 index 00000000000..5e794eac6a6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q13.slt.no @@ -0,0 +1,775 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT avg(ss_quantity) avg1, + avg(ss_ext_sales_price) avg2, + avg(ss_ext_wholesale_cost) avg3, + sum(ss_ext_wholesale_cost) +FROM store_sales , + store , + customer_demographics , + household_demographics , + customer_address , + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 and((ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 ) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1)) and((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('TX', 'OH', 'TX') + AND ss_net_profit BETWEEN 100 AND 200) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'NM', 'KY') + AND ss_net_profit BETWEEN 150 AND 300) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'TX', 'MS') + AND ss_net_profit BETWEEN 50 AND 250)) ; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(s_store_sk = ss_store_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(((ss_hdemo_sk = hd_demo_sk) AND (cd_demo_sk = ss_cdemo_sk) AND (cd_marital_status = CAST('M' AS VARCHAR)) AND (cd_education_status = CAST('Advanced Degree' AS VARCHAR)) AND ((ss_sales_price >= CAST(100.00 AS DECIMAL(7,2))) AND (ss_sales_price <= CAST(150.00 AS DECIMAL(7,2)))) AND (hd_dep_count = CAST(3 AS BIGINT))) OR ((ss_hdemo_sk = hd_demo_sk) AND (cd_demo_sk = ss_cdemo_sk) AND (cd_marital_status = CAST('S' AS VARCHAR)) AND (cd_education_status = CAST('College' AS VARCHAR)) AND ((ss_sales_price >= CAST(50.00 AS DECIMAL(7,2))) AND (ss_sales_price <= CAST(100.00 AS DECIMAL(7,2)))) AND (hd_dep_count = CAST(1 AS BIGINT))) OR ((ss_hdemo_sk = hd_demo_sk) AND (cd_demo_sk = ss_cdemo_sk) AND (cd_marital_status = CAST('W' AS VARCHAR)) AND (cd_education_status = CAST('2 yr Degree' AS VARCHAR)) AND ((ss_sales_price >= CAST(150.00 AS DECIMAL(7,2))) AND (ss_sales_price <= CAST(200.00 AS DECIMAL(7,2)))) AND (hd_dep_count = CAST(1 AS BIGINT))))", + "(((ss_addr_sk = ca_address_sk) AND (ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('TX' AS VARCHAR), CAST('OH' AS VARCHAR), CAST('TX' AS VARCHAR))) AND ((CAST(ss_net_profit AS DECIMAL(12,2)) >= CAST(100 AS DECIMAL(12,2))) AND (CAST(ss_net_profit AS DECIMAL(12,2)) <= CAST(200 AS DECIMAL(12,2))))) OR ((ss_addr_sk = ca_address_sk) AND (ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('OR' AS VARCHAR), CAST('NM' AS VARCHAR), CAST('KY' AS VARCHAR))) AND ((CAST(ss_net_profit AS DECIMAL(12,2)) >= CAST(150 AS DECIMAL(12,2))) AND (CAST(ss_net_profit AS DECIMAL(12,2)) <= CAST(300 AS DECIMAL(12,2))))) OR ((ss_addr_sk = ca_address_sk) AND (ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('VA' AS VARCHAR), CAST('TX' AS VARCHAR), CAST('MS' AS VARCHAR))) AND ((CAST(ss_net_profit AS DECIMAL(12,2)) >= CAST(50 AS DECIMAL(12,2))) AND (CAST(ss_net_profit AS DECIMAL(12,2)) <= CAST(250 AS DECIMAL(12,2))))))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_quantity)", + "avg(ss_ext_sales_price)", + "avg(ss_ext_wholesale_cost)", + "sum(ss_ext_wholesale_cost)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "avg1", + "avg2", + "avg3", + "sum(ss_ext_wholesale_cost)" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2i64 <= $.cd_demo_sk <= 192076i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_quantity", + "ss_sales_price", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_country = \"United States\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": "((((ss_net_profit >= 100.00) AND (ss_net_profit <= 200.00)) AND ((ca_state = 'TX') OR (ca_state = 'OH') OR (ca_state = 'TX'))) OR (((ss_net_profit >= 150.00) AND (ss_net_profit <= 300.00)) AND ((ca_state = 'OR') OR (ca_state = 'NM') OR (ca_state = 'KY'))) OR (((ss_net_profit >= 50.00) AND (ss_net_profit <= 250.00)) AND ((ca_state = 'VA') OR (ca_state = 'TX') OR (ca_state = 'MS'))))", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = ss_cdemo_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_dep_count" + ], + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": "(((hd_dep_count = 3) AND ((ss_sales_price >= 100.00) AND (ss_sales_price <= 150.00)) AND (cd_marital_status = 'M') AND (cd_education_status = 'Advanced Degree')) OR ((hd_dep_count = 1) AND ((ss_sales_price >= 50.00) AND (ss_sales_price <= 100.00)) AND (cd_marital_status = 'S') AND (cd_education_status = 'College')) OR ((hd_dep_count = 1) AND ((ss_sales_price >= 150.00) AND (ss_sales_price <= 200.00)) AND (cd_marital_status = 'W') AND (cd_education_status = '2 yr Degree')))", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_quantity)", + "avg(ss_ext_sales_price)", + "avg(ss_ext_wholesale_cost)", + "sum(ss_ext_wholesale_cost)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "avg1", + "avg2", + "avg3", + "sum(ss_ext_wholesale_cost)" + ], + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2i64 <= $.cd_demo_sk <= 192076i64)", + "Projections": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_quantity", + "ss_sales_price", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_country='United States'", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expression": "((((ss_net_profit >= 100.00) AND (ss_net_profit <= 200.00)) AND ((ca_state = 'TX') OR (ca_state = 'OH') OR (ca_state = 'TX'))) OR (((ss_net_profit >= 150.00) AND (ss_net_profit <= 300.00)) AND ((ca_state = 'OR') OR (ca_state = 'NM') OR (ca_state = 'KY'))) OR (((ss_net_profit >= 50.00) AND (ss_net_profit <= 250.00)) AND ((ca_state = 'VA') OR (ca_state = 'TX') OR (ca_state = 'MS'))))", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = ss_cdemo_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "hd_demo_sk", + "hd_dep_count" + ], + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expression": "(((hd_dep_count = 3) AND ((ss_sales_price >= 100.00) AND (ss_sales_price <= 150.00)) AND (cd_marital_status = 'M') AND (cd_education_status = 'Advanced Degree')) OR ((hd_dep_count = 1) AND ((ss_sales_price >= 50.00) AND (ss_sales_price <= 100.00)) AND (cd_marital_status = 'S') AND (cd_education_status = 'College')) OR ((hd_dep_count = 1) AND ((ss_sales_price >= 150.00) AND (ss_sales_price <= 200.00)) AND (cd_marital_status = 'W') AND (cd_education_status = '2 yr Degree')))", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "#2", + "#4", + "#5" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "ss_quantity", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_wholesale_cost" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "avg(#1)", + "avg(#2)", + "sum(#3)" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q14.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q14.slt.no new file mode 100644 index 00000000000..9585cd9a3b5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q14.slt.no @@ -0,0 +1,4778 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH cross_items AS + (SELECT i_item_sk ss_item_sk + FROM item, + (SELECT iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, + item iss, + date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, + item ics, + date_dim d2 WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, + item iws, + date_dim d3 WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) sq1 + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id ), + avg_sales AS + (SELECT avg(quantity*list_price) average_sales + FROM + (SELECT ss_quantity quantity, + ss_list_price list_price + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT ws_quantity quantity, + ws_list_price list_price + FROM web_sales, + date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) sq2) +SELECT channel, + i_brand_id, + i_class_id, + i_category_id, + sum(sales) AS sum_sales, + sum(number_sales) AS sum_number_sales +FROM + (SELECT 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity*ss_list_price) sales, + count(*) number_sales + FROM store_sales, + item, + date_dim + WHERE ss_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ss_quantity*ss_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(cs_quantity*cs_list_price) sales, + count(*) number_sales + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(cs_quantity*cs_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ws_quantity*ws_list_price) sales, + count(*) number_sales + FROM web_sales, + item, + date_dim + WHERE ws_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ws_quantity*ws_list_price) > + (SELECT average_sales + FROM avg_sales)) y +GROUP BY ROLLUP (channel, + i_brand_id, + i_class_id, + i_category_id) +ORDER BY channel NULLS FIRST, + i_brand_id NULLS FIRST, + i_class_id NULLS FIRST, + i_category_id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year >= CAST(1999 AS BIGINT))", + "(d_year <= CAST((1999 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "class_id", + "category_id" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_item_sk = i_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year >= CAST(1999 AS BIGINT))", + "(d_year <= CAST((1999 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "brand_id", + "class_id", + "category_id" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_item_sk = i_item_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year >= CAST(1999 AS BIGINT))", + "(d_year <= CAST((1999 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "brand_id", + "class_id", + "category_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_brand_id = brand_id)", + "(i_class_id = class_id)", + "(i_category_id = category_id)" + ] + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_year >= CAST(1999 AS BIGINT))", + "(d_year <= CAST((1999 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "quantity", + "list_price" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(d_year >= CAST(1999 AS BIGINT))", + "(d_year <= CAST((1999 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "quantity", + "list_price" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(d_year >= CAST(1999 AS BIGINT))", + "(d_year <= CAST((1999 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "quantity", + "list_price" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg((CAST(quantity AS DECIMAL(26,0)) * CAST(list_price AS DECIMAL(26,2))))" + } + } + ], + "extra_info": { + "Expressions": "average_sales" + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(ss_item_sk = #[127.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST((1999 + 2) AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_list_price AS DECIMAL(26,2))))", + "count_star()" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[201.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[208.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[208.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(CAST(sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(cs_item_sk = #[239.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(cs_item_sk = i_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST((1999 + 2) AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2))))", + "count_star()" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[246.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[253.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[253.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(CAST(sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(ws_item_sk = #[284.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ws_item_sk = i_item_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST((1999 + 2) AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2))))", + "count_star()" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[291.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[298.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[298.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(CAST(sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum(sales)", + "sum(number_sales)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sum_sales", + "sum_number_sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "y.channel", + "y.i_brand_id", + "y.i_class_id", + "y.i_category_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "avg_sales", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "cross_items", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "class_id", + "category_id" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_uinteger(#0, 1001001)", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_utinyint(#2, 1)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143657", + "Distinct Targets": [ + "brand_id", + "class_id", + "category_id" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_uinteger(#0, 1001001)", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_utinyint(#2, 1)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "71632", + "Distinct Targets": [ + "brand_id", + "class_id", + "category_id" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(brand_id = i_brand_id)", + "(class_id = i_class_id)", + "(category_id = i_category_id)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_quantity", + "ss_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "quantity", + "list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_quantity", + "cs_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "quantity", + "list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_quantity", + "ws_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "quantity", + "list_price" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "503753" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg((CAST(quantity AS DECIMAL(26,0)) * CAST(list_price AS DECIMAL(26,2))))", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales", + "Estimated Cardinality": "1" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_quantity", + "ss_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 11i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(ss_item_sk = #0)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 2450816)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 2450816)", + "__internal_compress_integral_usmallint(#5, 1)", + "__internal_compress_integral_uinteger(#6, 1001001)", + "__internal_compress_integral_utinyint(#7, 1)", + "__internal_compress_integral_utinyint(#8, 1)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_list_price AS DECIMAL(26,2))))", + "count_star()" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(CAST(sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_quantity", + "cs_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 11i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "(#0 = cs_item_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 2450815)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 2450815)", + "__internal_compress_integral_usmallint(#5, 1)", + "__internal_compress_integral_uinteger(#6, 1001001)", + "__internal_compress_integral_utinyint(#7, 1)", + "__internal_compress_integral_utinyint(#8, 1)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2))))", + "count_star()" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "5743" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(CAST(sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "5743" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_quantity", + "ws_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 11i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "(#0 = ws_item_sk)", + "Estimated Cardinality": "2864" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 2450816)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 2450816)", + "__internal_compress_integral_usmallint(#5, 1)", + "__internal_compress_integral_uinteger(#6, 1001001)", + "__internal_compress_integral_utinyint(#7, 1)", + "__internal_compress_integral_utinyint(#8, 1)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Groups": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2))))", + "count_star()" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "2864" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "average_sales", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(CAST(sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "20141" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Expressions": [ + "sum(sales)", + "sum(number_sales)" + ], + "Estimated Cardinality": "20140" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sum_sales", + "sum_number_sales" + ], + "Estimated Cardinality": "20140" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "avg_sales", + "Table Index": "1", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "cross_items", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "brand_id", + "class_id", + "category_id" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": [ + "#0 IS NOT DISTINCT FROM #0", + "#1 IS NOT DISTINCT FROM #1", + "#2 IS NOT DISTINCT FROM #2" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_uinteger(#0, 1001001)", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_utinyint(#2, 1)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "brand_id", + "class_id", + "category_id" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": [ + "#0 IS NOT DISTINCT FROM #0", + "#1 IS NOT DISTINCT FROM #1", + "#2 IS NOT DISTINCT FROM #2" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_uinteger(#0, 1001001)", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_utinyint(#2, 1)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "brand_id", + "class_id", + "category_id" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "brand_id = i_brand_id", + "class_id = i_class_id", + "category_id = i_category_id" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": "ss_item_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_quantity", + "ss_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "quantity", + "list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_quantity", + "cs_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "quantity", + "list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_quantity", + "ws_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999i64 <= $.d_year <= 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "quantity", + "list_price" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": "(CAST(quantity AS DECIMAL(26,0)) * CAST(list_price AS DECIMAL(26,2)))", + "Estimated Cardinality": "503753" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_quantity", + "ss_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "ss_item_sk = #0", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 2450816)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 2450816)", + "__internal_compress_integral_usmallint(#5, 1)", + "__internal_compress_integral_uinteger(#6, 1001001)", + "__internal_compress_integral_utinyint(#7, 1)", + "__internal_compress_integral_utinyint(#8, 1)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand_id", + "i_class_id", + "i_category_id", + "(CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_list_price AS DECIMAL(26,2)))" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "count_star()" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "CAST(sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "71632" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_quantity", + "cs_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "#0 = cs_item_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 2450815)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 2450815)", + "__internal_compress_integral_usmallint(#5, 1)", + "__internal_compress_integral_uinteger(#6, 1001001)", + "__internal_compress_integral_utinyint(#7, 1)", + "__internal_compress_integral_utinyint(#8, 1)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand_id", + "i_class_id", + "i_category_id", + "(CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2)))" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "count_star()" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "5743" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "CAST(sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY", + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "5743" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "71632" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_quantity", + "ws_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "#0 = ws_item_sk", + "Estimated Cardinality": "2864" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 2450816)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 2450816)", + "__internal_compress_integral_usmallint(#5, 1)", + "__internal_compress_integral_uinteger(#6, 1001001)", + "__internal_compress_integral_utinyint(#7, 1)", + "__internal_compress_integral_utinyint(#8, 1)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand_id", + "i_class_id", + "i_category_id", + "(CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2)))" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "count_star()" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "2864" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "CAST(sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2)))) AS DOUBLE) > SUBQUERY", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "channel", + "i_brand_id", + "i_class_id", + "i_category_id", + "sales", + "number_sales" + ], + "Estimated Cardinality": "20141" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "sum(#4)", + "sum(#5)" + ], + "Estimated Cardinality": "20140" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "y.channel ASC", + "y.i_brand_id ASC", + "y.i_class_id ASC", + "y.i_category_id ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "avg_sales", + "Table Index": "1", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "cross_items", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q15.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q15.slt.no new file mode 100644 index 00000000000..9729f724c9e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q15.slt.no @@ -0,0 +1,639 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT ca_zip, + sum(cs_sales_price) +FROM catalog_sales, + customer, + customer_address, + date_dim +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND (SUBSTRING(ca_zip, 1, 5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR ca_state IN ('CA', + 'WA', + 'GA') + OR cs_sales_price > 500) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip +ORDER BY ca_zip NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_bill_customer_sk = c_customer_sk)", + "(c_current_addr_sk = ca_address_sk)", + "((\"substring\"(ca_zip, CAST(1 AS BIGINT), CAST(5 AS BIGINT)) IN (CAST('85669' AS VARCHAR), CAST('86197' AS VARCHAR), CAST('88274' AS VARCHAR), CAST('83405' AS VARCHAR), CAST('86475' AS VARCHAR), CAST('85392' AS VARCHAR), CAST('85460' AS VARCHAR), CAST('80348' AS VARCHAR), CAST('81792' AS VARCHAR))) OR (ca_state IN (CAST('CA' AS VARCHAR), CAST('WA' AS VARCHAR), CAST('GA' AS VARCHAR))) OR (CAST(cs_sales_price AS DECIMAL(12,2)) > CAST(500 AS DECIMAL(12,2))))", + "(cs_sold_date_sk = d_date_sk)", + "(d_qoy = CAST(2 AS BIGINT))", + "(d_year = CAST(2001 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "ca_zip", + "Expressions": "sum(cs_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_zip", + "sum(cs_sales_price)" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.customer_address.ca_zip" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "CHUNK_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(\"substring\"(ca_zip, 1, 5) = #0)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "(IN (...) OR (cs_sales_price > 500.00) OR ((ca_state = 'CA') OR (ca_state = 'WA') OR (ca_state = 'GA')))", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_qoy = 2i64)", + "($.d_year = 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 2450815)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": "ca_zip", + "Expressions": "sum(cs_sales_price)", + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_zip", + "sum(cs_sales_price)" + ], + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_state", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "\"substring\"(ca_zip, 1, 5) = #0", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expression": "(IN (...) OR (cs_sales_price > 500.00) OR ((ca_state = 'CA') OR (ca_state = 'WA') OR (ca_state = 'GA')))", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#3" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_qoy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 2450815)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "ca_zip", + "cs_sales_price" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.customer_address.ca_zip ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q16.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q16.slt.no new file mode 100644 index 00000000000..08eab8fe6e8 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q16.slt.no @@ -0,0 +1,1051 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT count(DISTINCT cs_order_number) AS "order count", + sum(cs_ext_ship_cost) AS "total shipping cost", + sum(cs_net_profit) AS "total net profit" +FROM catalog_sales cs1, + date_dim, + customer_address, + call_center +WHERE d_date BETWEEN '2002-02-01' AND cast('2002-04-02' AS date) + AND cs1.cs_ship_date_sk = d_date_sk + AND cs1.cs_ship_addr_sk = ca_address_sk + AND ca_state = 'GA' + AND cs1.cs_call_center_sk = cc_call_center_sk + AND cc_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 cs_order_number) +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_call_center_id", + "cc_rec_start_date", + "cc_rec_end_date", + "cc_closed_date_sk", + "cc_open_date_sk", + "cc_name", + "cc_class", + "cc_employees", + "cc_sq_ft", + "cc_hours", + "cc_manager", + "cc_mkt_id", + "cc_mkt_class", + "cc_mkt_desc", + "cc_market_manager", + "cc_division", + "cc_division_name", + "cc_company", + "cc_company_name", + "cc_street_number", + "cc_street_name", + "cc_street_type", + "cc_suite_number", + "cc_city", + "cc_county", + "cc_state", + "cc_zip", + "cc_country", + "cc_gmt_offset", + "cc_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_order_number = cs_order_number)", + "(cs_warehouse_sk != cs_warehouse_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "(cs_order_number = cr_order_number)" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date >= CAST('2002-02-01' AS DATE))", + "(cs_ship_date_sk = d_date_sk)", + "(cs_ship_addr_sk = ca_address_sk)", + "(ca_state = CAST('GA' AS VARCHAR))", + "(cs_call_center_sk = cc_call_center_sk)", + "(cc_county = CAST('Williamson County' AS VARCHAR))", + "SUBQUERY", + "(NOT SUBQUERY)", + "(d_date <= CAST('2002-04-02' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "count(DISTINCT cs_order_number)", + "sum(cs_ext_ship_cost)", + "sum(cs_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "order count", + "total shipping cost", + "total net profit" + ] + } + } + ], + "extra_info": { + "Order By": "count(DISTINCT cs1.cs_order_number)" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "28730" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cs_order_number = cs_order_number)", + "(cs_warehouse_sk != cs_warehouse_sk)" + ], + "Estimated Cardinality": "1504681" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_warehouse_sk", + "cs_order_number" + ], + "Estimated Cardinality": "1504681" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_warehouse_sk", + "cs_order_number" + ], + "Estimated Cardinality": "1504681" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_ship_date_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_warehouse_sk", + "cs_order_number", + "cs_ext_ship_cost", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_state = \"GA\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_addr_sk = ca_address_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2002-02-01 <= $.d_date <= 2002-04-02)", + "(2450817i64 <= $.d_date_sk <= 2452740i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_date_sk = d_date_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.cc_county = \"Williamson County\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "cc_call_center_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_call_center_sk = cc_call_center_sk)", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": [ + "(cs_warehouse_sk IS NOT DISTINCT FROM cs_warehouse_sk)", + "(cs_order_number IS NOT DISTINCT FROM cs_order_number)" + ], + "Estimated Cardinality": "5746" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_order_number = cs_order_number)", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Expressions": "cs_order_number", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Expressions": "cs_order_number", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "(cs_order_number IS NOT DISTINCT FROM cs_order_number)", + "Estimated Cardinality": "1149" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "count(DISTINCT cs_order_number)", + "sum(cs_ext_ship_cost)", + "sum(cs_net_profit)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "order count", + "total shipping cost", + "total net profit" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "RIGHT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_ship_date_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_warehouse_sk", + "cs_order_number", + "cs_ext_ship_cost", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_state='GA'", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_addr_sk = ca_address_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2002-02-01 <= $.d_date <= 2002-04-02)", + "(2450817i64 <= $.d_date_sk <= 2452740i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_date_sk = d_date_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "cc_county='Williamson County'", + "Projections": "cc_call_center_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_call_center_sk = cc_call_center_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_warehouse_sk", + "cs_order_number" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "28730" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cs_order_number = cs_order_number", + "cs_warehouse_sk != cs_warehouse_sk" + ], + "Estimated Cardinality": "1504681" + } + } + ], + "extra_info": { + "Projections": [ + "cs_warehouse_sk", + "cs_order_number" + ], + "Estimated Cardinality": "1504681" + } + }, + { + "name": "DUMMY_SCAN", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": [ + "cs_warehouse_sk IS NOT DISTINCT FROM cs_warehouse_sk", + "cs_order_number IS NOT DISTINCT FROM cs_order_number" + ], + "Estimated Cardinality": "5746" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "", + "Estimated Cardinality": "28730" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": [ + "cs_warehouse_sk IS NOT DISTINCT FROM cs_warehouse_sk", + "cs_order_number IS NOT DISTINCT FROM cs_order_number" + ], + "Estimated Cardinality": "5746", + "Delim Index": "1" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "1149" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "cr_order_number", + "Estimated Cardinality": "14275" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "2", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_order_number = cs_order_number", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Projections": "cs_order_number", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "cs_order_number IS NOT DISTINCT FROM cs_order_number", + "Estimated Cardinality": "1149" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "5632" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "cs_order_number IS NOT DISTINCT FROM cs_order_number", + "Estimated Cardinality": "1149", + "Delim Index": "2" + } + } + ], + "extra_info": { + "Projections": [ + "cs_order_number", + "cs_ext_ship_cost", + "cs_net_profit" + ], + "Estimated Cardinality": "1149" + } + } + ], + "extra_info": { + "Aggregates": [ + "count(DISTINCT #0)", + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "count(DISTINCT cs1.cs_order_number) ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q17.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q17.slt.no new file mode 100644 index 00000000000..dd217bc2399 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q17.slt.no @@ -0,0 +1,1132 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + i_item_desc, + s_state, + count(ss_quantity) AS store_sales_quantitycount, + avg(ss_quantity) AS store_sales_quantityave, + stddev_samp(ss_quantity) AS store_sales_quantitystdev, + stddev_samp(ss_quantity)/avg(ss_quantity) AS store_sales_quantitycov, + count(sr_return_quantity) AS store_returns_quantitycount, + avg(sr_return_quantity) AS store_returns_quantityave, + stddev_samp(sr_return_quantity) AS store_returns_quantitystdev, + stddev_samp(sr_return_quantity)/avg(sr_return_quantity) AS store_returns_quantitycov, + count(cs_quantity) AS catalog_sales_quantitycount, + avg(cs_quantity) AS catalog_sales_quantityave, + stddev_samp(cs_quantity) AS catalog_sales_quantitystdev, + stddev_samp(cs_quantity)/avg(cs_quantity) AS catalog_sales_quantitycov +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_quarter_name = '2001Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') +GROUP BY i_item_id, + i_item_desc, + s_state +ORDER BY i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_quarter_name = CAST('2001Q1' AS VARCHAR))", + "(d_date_sk = ss_sold_date_sk)", + "(i_item_sk = ss_item_sk)", + "(s_store_sk = ss_store_sk)", + "(ss_customer_sk = sr_customer_sk)", + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)", + "(sr_returned_date_sk = d_date_sk)", + "(d_quarter_name IN (CAST('2001Q1' AS VARCHAR), CAST('2001Q2' AS VARCHAR), CAST('2001Q3' AS VARCHAR)))", + "(sr_customer_sk = cs_bill_customer_sk)", + "(sr_item_sk = cs_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_quarter_name IN (CAST('2001Q1' AS VARCHAR), CAST('2001Q2' AS VARCHAR), CAST('2001Q3' AS VARCHAR)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "s_state" + ], + "Expressions": [ + "count(ss_quantity)", + "avg(ss_quantity)", + "stddev_samp(CAST(ss_quantity AS DOUBLE))", + "count(sr_return_quantity)", + "avg(sr_return_quantity)", + "stddev_samp(CAST(sr_return_quantity AS DOUBLE))", + "count(cs_quantity)", + "avg(cs_quantity)", + "stddev_samp(CAST(cs_quantity AS DOUBLE))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "s_state", + "store_sales_quantitycount", + "store_sales_quantityave", + "store_sales_quantitystdev", + "store_sales_quantitycov", + "store_returns_quantitycount", + "store_returns_quantityave", + "store_returns_quantitystdev", + "store_returns_quantitycov", + "catalog_sales_quantitycount", + "catalog_sales_quantityave", + "catalog_sales_quantitystdev", + "catalog_sales_quantitycov" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "memory.main.store.s_state" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_quantity" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([\"2001Q1\", \"2001Q2\", \"2001Q3\"], $.d_quarter_name)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_quantity" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_quarter_name = \"2001Q1\")", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([\"2001Q1\", \"2001Q2\", \"2001Q3\"], $.d_quarter_name)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_item_sk = i_item_sk)", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_item_sk = i_item_sk)", + "(ss_customer_sk = sr_customer_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cs_item_sk = ss_item_sk)", + "(cs_bill_customer_sk = ss_customer_sk)" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "s_state" + ], + "Expressions": [ + "count(ss_quantity)", + "avg(ss_quantity)", + "stddev_samp(CAST(ss_quantity AS DOUBLE))", + "count(sr_return_quantity)", + "avg(sr_return_quantity)", + "stddev_samp(CAST(sr_return_quantity AS DOUBLE))", + "count(cs_quantity)", + "avg(cs_quantity)", + "stddev_samp(CAST(cs_quantity AS DOUBLE))" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "s_state", + "store_sales_quantitycount", + "store_sales_quantityave", + "store_sales_quantitystdev", + "store_sales_quantitycov", + "store_returns_quantitycount", + "store_returns_quantityave", + "store_returns_quantitystdev", + "store_returns_quantitycov", + "catalog_sales_quantitycount", + "catalog_sales_quantityave", + "catalog_sales_quantitystdev", + "catalog_sales_quantitycov" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_quantity" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([\"2001Q1\", \"2001Q2\", \"2001Q3\"], $.d_quarter_name)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_quantity" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_quarter_name='2001Q1'", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([\"2001Q1\", \"2001Q2\", \"2001Q3\"], $.d_quarter_name)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_item_sk = i_item_sk", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_item_sk = i_item_sk", + "ss_customer_sk = sr_customer_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cs_item_sk = ss_item_sk", + "cs_bill_customer_sk = ss_customer_sk" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "s_state", + "ss_quantity", + "ss_quantity", + "CAST(ss_quantity AS DOUBLE)", + "sr_return_quantity", + "sr_return_quantity", + "CAST(sr_return_quantity AS DOUBLE)", + "cs_quantity", + "cs_quantity", + "CAST(cs_quantity AS DOUBLE)" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "count(#3)", + "avg(#4)", + "stddev_samp(#5)", + "count(#6)", + "avg(#7)", + "stddev_samp(#8)", + "count(#9)", + "avg(#10)", + "stddev_samp(#11)" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "s_state", + "store_sales_quantitycount", + "store_sales_quantityave", + "store_sales_quantitystdev", + "store_sales_quantitycov", + "store_returns_quantitycount", + "store_returns_quantityave", + "store_returns_quantitystdev", + "store_returns_quantitycov", + "catalog_sales_quantitycount", + "catalog_sales_quantityave", + "catalog_sales_quantitystdev", + "catalog_sales_quantitycov" + ], + "Estimated Cardinality": "289953" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.item.i_item_id ASC", + "memory.main.item.i_item_desc ASC", + "memory.main.store.s_state ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q18.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q18.slt.no new file mode 100644 index 00000000000..16d96cfb2d2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q18.slt.no @@ -0,0 +1,931 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + ca_country, + ca_state, + ca_county, + avg(cast(cs_quantity AS decimal(12, 2))) agg1, + avg(cast(cs_list_price AS decimal(12, 2))) agg2, + avg(cast(cs_coupon_amt AS decimal(12, 2))) agg3, + avg(cast(cs_sales_price AS decimal(12, 2))) agg4, + avg(cast(cs_net_profit AS decimal(12, 2))) agg5, + avg(cast(c_birth_year AS decimal(12, 2))) agg6, + avg(cast(cd1.cd_dep_count AS decimal(12, 2))) agg7 +FROM catalog_sales, + customer_demographics cd1, + customer_demographics cd2, + customer, + customer_address, + date_dim, + item +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Unknown' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN (1, + 6, + 8, + 9, + 12, + 2) + AND d_year = 1998 + AND ca_state IN ('MS', + 'IN', + 'ND', + 'OK', + 'NM', + 'VA', + 'MS') +GROUP BY ROLLUP (i_item_id, + ca_country, + ca_state, + ca_county) +ORDER BY ca_country NULLS FIRST, + ca_state NULLS FIRST, + ca_county NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(cs_item_sk = i_item_sk)", + "(cs_bill_cdemo_sk = cd_demo_sk)", + "(cs_bill_customer_sk = c_customer_sk)", + "(cd_gender = CAST('F' AS VARCHAR))", + "(cd_education_status = CAST('Unknown' AS VARCHAR))", + "(c_current_cdemo_sk = cd_demo_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(c_birth_month IN (CAST(1 AS BIGINT), CAST(6 AS BIGINT), CAST(8 AS BIGINT), CAST(9 AS BIGINT), CAST(12 AS BIGINT), CAST(2 AS BIGINT)))", + "(d_year = CAST(1998 AS BIGINT))", + "(ca_state IN (CAST('MS' AS VARCHAR), CAST('IN' AS VARCHAR), CAST('ND' AS VARCHAR), CAST('OK' AS VARCHAR), CAST('NM' AS VARCHAR), CAST('VA' AS VARCHAR), CAST('MS' AS VARCHAR)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "ca_country", + "ca_state", + "ca_county" + ], + "Expressions": [ + "avg(CAST(cs_quantity AS DECIMAL(12,2)))", + "avg(CAST(cs_list_price AS DECIMAL(12,2)))", + "avg(CAST(cs_coupon_amt AS DECIMAL(12,2)))", + "avg(CAST(cs_sales_price AS DECIMAL(12,2)))", + "avg(CAST(cs_net_profit AS DECIMAL(12,2)))", + "avg(CAST(c_birth_year AS DECIMAL(12,2)))", + "avg(CAST(cd_dep_count AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "ca_country", + "ca_state", + "ca_county", + "agg1", + "agg2", + "agg3", + "agg4", + "agg5", + "agg6", + "agg7" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer_address.ca_country", + "memory.main.customer_address.ca_state", + "memory.main.customer_address.ca_county", + "memory.main.item.i_item_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": "cd_demo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_item_sk", + "cs_quantity", + "cs_list_price", + "cs_sales_price", + "cs_coupon_amt", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.cd_gender = \"F\")", + "($.cd_education_status = \"Unknown\")", + "($.cd_demo_sk >= 16i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_dep_count" + ], + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([1i64, 6i64, 8i64, 9i64, 12i64, 2i64], $.c_birth_month)", + "Function": "Vortex Scan", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk", + "c_birth_year" + ], + "Estimated Cardinality": "2000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"MS\", \"IN\", \"ND\", \"OK\", \"NM\", \"VA\", \"MS\"], $.ca_state)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_county", + "ca_state", + "ca_country" + ], + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "551707" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "ca_country", + "ca_state", + "ca_county" + ], + "Expressions": [ + "avg(CAST(cs_quantity AS DECIMAL(12,2)))", + "avg(CAST(cs_list_price AS DECIMAL(12,2)))", + "avg(CAST(cs_coupon_amt AS DECIMAL(12,2)))", + "avg(CAST(cs_sales_price AS DECIMAL(12,2)))", + "avg(CAST(cs_net_profit AS DECIMAL(12,2)))", + "avg(CAST(c_birth_year AS DECIMAL(12,2)))", + "avg(CAST(cd_dep_count AS DECIMAL(12,2)))" + ], + "Estimated Cardinality": "551707" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "ca_country", + "ca_state", + "ca_county", + "agg1", + "agg2", + "agg3", + "agg4", + "agg5", + "agg6", + "agg7" + ], + "Estimated Cardinality": "551707" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Projections": "cd_demo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_item_sk", + "cs_quantity", + "cs_list_price", + "cs_sales_price", + "cs_coupon_amt", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=1998", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "cd_gender='F'", + "cd_education_status='Unknown'" + ], + "Projections": [ + "cd_demo_sk", + "cd_dep_count" + ], + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([1i64, 6i64, 8i64, 9i64, 12i64, 2i64], $.c_birth_month)", + "Projections": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk", + "c_birth_year" + ], + "Estimated Cardinality": "2000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"MS\", \"IN\", \"ND\", \"OK\", \"NM\", \"VA\", \"MS\"], $.ca_state)", + "Projections": [ + "ca_address_sk", + "ca_county", + "ca_state", + "ca_country" + ], + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "551707" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ca_country", + "ca_state", + "ca_county", + "CAST(cs_quantity AS DECIMAL(12,2))", + "CAST(cs_list_price AS DECIMAL(12,2))", + "CAST(cs_coupon_amt AS DECIMAL(12,2))", + "CAST(cs_sales_price AS DECIMAL(12,2))", + "CAST(cs_net_profit AS DECIMAL(12,2))", + "CAST(c_birth_year AS DECIMAL(12,2))", + "CAST(cd_dep_count AS DECIMAL(12,2))" + ], + "Estimated Cardinality": "551707" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "avg(#4)", + "avg(#5)", + "avg(#6)", + "avg(#7)", + "avg(#8)", + "avg(#9)", + "avg(#10)" + ], + "Estimated Cardinality": "551707" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer_address.ca_country ASC", + "memory.main.customer_address.ca_state ASC", + "memory.main.customer_address.ca_county ASC", + "memory.main.item.i_item_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q19.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q19.slt.no new file mode 100644 index 00000000000..8b0ef829d01 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q19.slt.no @@ -0,0 +1,867 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item, + customer, + customer_address, + store +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=8 + AND d_moy=11 + AND d_year=1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND SUBSTRING(ca_zip, 1, 5) <> SUBSTRING(s_zip, 1, 5) + AND ss_store_sk = s_store_sk +GROUP BY i_brand, + i_brand_id, + i_manufact_id, + i_manufact +ORDER BY ext_price DESC, + i_brand, + i_brand_id, + i_manufact_id, + i_manufact +LIMIT 100 ; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(ss_item_sk = i_item_sk)", + "(i_manager_id = CAST(8 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(1998 AS BIGINT))", + "(ss_customer_sk = c_customer_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(\"substring\"(ca_zip, CAST(1 AS BIGINT), CAST(5 AS BIGINT)) != \"substring\"(s_zip, CAST(1 AS BIGINT), CAST(5 AS BIGINT)))", + "(ss_store_sk = s_store_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_brand", + "i_brand_id", + "i_manufact_id", + "i_manufact" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "brand", + "i_manufact_id", + "i_manufact", + "ext_price" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sum(memory.main.store_sales.ss_ext_sales_price)", + "memory.main.item.i_brand", + "memory.main.item.i_brand_id", + "memory.main.item.i_manufact_id", + "memory.main.item.i_manufact" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 1998i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manager_id = 8i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_brand", + "i_manufact_id", + "i_manufact" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(\"substring\"(ca_zip, 1, 5) != \"substring\"(s_zip, 1, 5))", + "Estimated Cardinality": "5000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_address_sk = c_current_addr_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_store_sk = s_store_sk)", + "(ss_customer_sk = c_customer_sk)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_uinteger(#1, 1001001)", + "#2", + "__internal_compress_integral_usmallint(#3, 1)", + "#4", + "__internal_compress_integral_utinyint(#5, 1)", + "__internal_compress_integral_usmallint(#6, 1)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "i_brand", + "i_brand_id", + "i_manufact_id", + "i_manufact" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "11533" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "11533" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "brand", + "i_manufact_id", + "i_manufact", + "ext_price" + ], + "Estimated Cardinality": "11533" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manager_id=8", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_brand", + "i_manufact_id", + "i_manufact" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "\"substring\"(ca_zip, 1, 5) != \"substring\"(s_zip, 1, 5)", + "Estimated Cardinality": "5000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_address_sk = c_current_addr_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_store_sk = s_store_sk", + "ss_customer_sk = c_customer_sk" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_uinteger(#1, 1001001)", + "#2", + "__internal_compress_integral_usmallint(#3, 1)", + "#4", + "__internal_compress_integral_utinyint(#5, 1)", + "__internal_compress_integral_usmallint(#6, 1)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand", + "i_brand_id", + "i_manufact_id", + "i_manufact", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": "sum(#4)", + "Estimated Cardinality": "11533" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4" + ], + "Estimated Cardinality": "11533" + } + } + ], + "extra_info": { + "Projections": [ + "brand_id", + "brand", + "i_manufact_id", + "i_manufact", + "ext_price" + ], + "Estimated Cardinality": "11533" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sum(memory.main.store_sales.ss_ext_sales_price) DESC", + "memory.main.item.i_brand ASC", + "memory.main.item.i_brand_id ASC", + "memory.main.item.i_manufact_id ASC", + "memory.main.item.i_manufact ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q2.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q2.slt.no new file mode 100644 index 00000000000..86ec49cb64b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q2.slt.no @@ -0,0 +1,1183 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH wscs AS + (SELECT sold_date_sk, + sales_price + FROM + (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales + UNION ALL SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales) sq1), + wswscs AS + (SELECT d_week_seq, + sum(CASE + WHEN (d_day_name='Sunday') THEN sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN sales_price + ELSE NULL + END) sat_sales + FROM wscs, + date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + round(sun_sales1/sun_sales2, 2) r1, + round(mon_sales1/mon_sales2, 2) r2, + round(tue_sales1/tue_sales2, 2) r3, + round(wed_sales1/wed_sales2, 2) r4, + round(thu_sales1/thu_sales2, 2) r5, + round(fri_sales1/fri_sales2, 2) r6, + round(sat_sales1/sat_sales2, 2) +FROM + (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001+1) z +WHERE d_week_seq1 = d_week_seq2-53 +ORDER BY d_week_seq1 NULLS FIRST; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "sales_price" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "sales_price" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "sales_price" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(d_date_sk = sold_date_sk)" + } + } + ], + "extra_info": { + "Groups": "d_week_seq", + "Expressions": [ + "sum(CASE WHEN ((d_day_name = CAST('Sunday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Monday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Tuesday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Wednesday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Thursday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Friday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Saturday' AS VARCHAR))) THEN (sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_week_seq = d_week_seq)", + "(d_year = CAST(2001 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq1", + "sun_sales1", + "mon_sales1", + "tue_sales1", + "wed_sales1", + "thu_sales1", + "fri_sales1", + "sat_sales1" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_week_seq = d_week_seq)", + "(d_year = CAST((2001 + 1) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq2", + "sun_sales2", + "mon_sales2", + "tue_sales2", + "wed_sales2", + "thu_sales2", + "fri_sales2", + "sat_sales2" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(d_week_seq1 = (d_week_seq2 - CAST(53 AS BIGINT)))" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq1", + "r1", + "r2", + "r3", + "r4", + "r5", + "r6", + "round((CAST(sat_sales1 AS DOUBLE) / CAST(sat_sales2 AS DOUBLE)), 2)" + ] + } + } + ], + "extra_info": { + "Order By": "y.d_week_seq1" + } + } + ], + "extra_info": { + "CTE Name": "wswscs", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "wscs", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "sales_price" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "215289" + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "sales_price" + ], + "Estimated Cardinality": "215289" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "215289" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450815i64 <= $.d_date_sk <= 2452652i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_week_seq", + "d_day_name" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sold_date_sk = d_date_sk)", + "Estimated Cardinality": "219547" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "219547" + } + } + ], + "extra_info": { + "Groups": "d_week_seq", + "Expressions": [ + "sum(CASE WHEN ((d_day_name = 'Sunday')) THEN (sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Monday')) THEN (sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Tuesday')) THEN (sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Wednesday')) THEN (sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Thursday')) THEN (sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Friday')) THEN (sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Saturday')) THEN (sales_price) ELSE NULL END)" + ], + "Estimated Cardinality": "69431" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "69431" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" + ], + "Estimated Cardinality": "69431" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "69431" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.d_year = 2001i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = d_week_seq)", + "Estimated Cardinality": "13882" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq1", + "sun_sales1", + "mon_sales1", + "tue_sales1", + "wed_sales1", + "thu_sales1", + "fri_sales1", + "sat_sales1" + ], + "Estimated Cardinality": "13882" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "69431" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.d_year = 2002i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = d_week_seq)", + "Estimated Cardinality": "13882" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq2", + "sun_sales2", + "mon_sales2", + "tue_sales2", + "wed_sales2", + "thu_sales2", + "fri_sales2", + "sat_sales2" + ], + "Estimated Cardinality": "13882" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq1 = (d_week_seq2 - 53))", + "Estimated Cardinality": "2690" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq1", + "r1", + "r2", + "r3", + "r4", + "r5", + "r6", + "round((CAST(sat_sales1 AS DOUBLE) / CAST(sat_sales2 AS DOUBLE)), 2)" + ], + "Estimated Cardinality": "2690" + } + } + ], + "extra_info": { + "Order By": "y.d_week_seq1", + "Estimated Cardinality": "2690" + } + } + ], + "extra_info": { + "CTE Name": "wswscs", + "Table Index": "1", + "Estimated Cardinality": "2690" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": {} + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450815i64 <= $.d_date_sk <= 2452652i64)", + "Projections": [ + "d_date_sk", + "d_week_seq", + "d_day_name" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sold_date_sk = d_date_sk", + "Estimated Cardinality": "219547" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "219547" + } + } + ], + "extra_info": { + "Projections": [ + "d_week_seq", + "CASE WHEN ((d_day_name = 'Sunday')) THEN (sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Monday')) THEN (sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Tuesday')) THEN (sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Wednesday')) THEN (sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Thursday')) THEN (sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Friday')) THEN (sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Saturday')) THEN (sales_price) ELSE NULL END" + ], + "Estimated Cardinality": "219547" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)", + "sum(#5)", + "sum(#6)", + "sum(#7)" + ], + "Estimated Cardinality": "69431" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "69431" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "69431" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = d_week_seq", + "Estimated Cardinality": "13882" + } + } + ], + "extra_info": { + "Projections": [ + "d_week_seq1", + "sun_sales1", + "mon_sales1", + "tue_sales1", + "wed_sales1", + "thu_sales1", + "fri_sales1", + "sat_sales1" + ], + "Estimated Cardinality": "13882" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "69431" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = d_week_seq", + "Estimated Cardinality": "13882" + } + } + ], + "extra_info": { + "Projections": [ + "d_week_seq2", + "sun_sales2", + "mon_sales2", + "tue_sales2", + "wed_sales2", + "thu_sales2", + "fri_sales2", + "sat_sales2" + ], + "Estimated Cardinality": "13882" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq1 = (d_week_seq2 - 53)", + "Estimated Cardinality": "2690" + } + } + ], + "extra_info": { + "Projections": [ + "d_week_seq1", + "r1", + "r2", + "r3", + "r4", + "r5", + "r6", + "round((CAST(sat_sales1 AS DOUBLE) / CAST(sat_sales2 AS DOUBLE)), 2)" + ], + "Estimated Cardinality": "2690" + } + } + ], + "extra_info": { + "Order By": "y.d_week_seq1 ASC" + } + } + ], + "extra_info": { + "CTE Name": "wswscs", + "Table Index": "1", + "Estimated Cardinality": "2690" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q20.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q20.slt.no new file mode 100644 index 00000000000..0cac60b6c2d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q20.slt.no @@ -0,0 +1,606 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(cs_ext_sales_price) AS itemrevenue, + sum(cs_ext_sales_price)*100.0000/sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM catalog_sales , + item, + date_dim +WHERE cs_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_item_sk = i_item_sk)", + "(i_category IN (CAST('Sports' AS VARCHAR), CAST('Books' AS VARCHAR), CAST('Home' AS VARCHAR)))", + "(cs_sold_date_sk = d_date_sk)", + "(d_date >= CAST('1999-02-22' AS DATE))", + "(d_date <= CAST('1999-03-24' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price" + ], + "Expressions": "sum(cs_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_category", + "memory.main.item.i_class", + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "((sum(memory.main.catalog_sales.cs_ext_sales_price) * 100.0000) / sum(sum(memory.main.catalog_sales.cs_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class))" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Sports\", \"Books\", \"Home\"], $.i_category)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999-02-22 <= $.d_date <= 1999-03-24)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 2450815)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price" + ], + "Expressions": "sum(cs_ext_sales_price)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Sports\", \"Books\", \"Home\"], $.i_category)", + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999-02-22 <= $.d_date <= 1999-03-24)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 2450815)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "sum(#5)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": "sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.item.i_category ASC", + "memory.main.item.i_class ASC", + "memory.main.item.i_item_id ASC", + "memory.main.item.i_item_desc ASC", + "((sum(memory.main.catalog_sales.cs_ext_sales_price) * 100.0000) / sum(sum(memory.main.catalog_sales.cs_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class)) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q21.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q21.slt.no new file mode 100644 index 00000000000..bbb640f17d4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q21.slt.no @@ -0,0 +1,606 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * +FROM + (SELECT w_warehouse_name, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_after + FROM inventory, + warehouse, + item, + date_dim + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) + GROUP BY w_warehouse_name, + i_item_id) x +WHERE (CASE + WHEN inv_before > 0 THEN (inv_after*1.000) / inv_before + ELSE NULL + END) BETWEEN 2.000/3.000 AND 3.000/2.000 +ORDER BY w_warehouse_name NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_current_price >= CAST(0.99 AS DECIMAL(7,2)))", + "(i_item_sk = inv_item_sk)", + "(inv_warehouse_sk = w_warehouse_sk)", + "(inv_date_sk = d_date_sk)", + "(d_date >= CAST('2000-02-10' AS DATE))", + "(i_current_price <= CAST(1.49 AS DECIMAL(7,2)))", + "(d_date <= CAST('2000-04-10' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "i_item_id" + ], + "Expressions": [ + "sum(CASE WHEN ((d_date < CAST('2000-03-11' AS DATE))) THEN (inv_quantity_on_hand) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((d_date >= CAST('2000-03-11' AS DATE))) THEN (inv_quantity_on_hand) ELSE CAST(0 AS INTEGER) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "i_item_id", + "inv_before", + "inv_after" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(CASE WHEN ((inv_before > CAST(0 AS HUGEINT))) THEN ((CAST((inv_after * CAST(1.000 AS DECIMAL(38,3))) AS DOUBLE) / CAST(inv_before AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END >= (CAST(2.000 AS DOUBLE) / CAST(3.000 AS DOUBLE)))", + "(CASE WHEN ((inv_before > CAST(0 AS HUGEINT))) THEN ((CAST((inv_after * CAST(1.000 AS DECIMAL(38,3))) AS DOUBLE) / CAST(inv_before AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END <= (CAST(3.000 AS DOUBLE) / CAST(2.000 AS DOUBLE)))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "i_item_id", + "inv_before", + "inv_after" + ] + } + } + ], + "extra_info": { + "Order By": [ + "x.w_warehouse_name", + "x.i_item_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "234900" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(decimal128(99, precision=7, scale=2) <= $.i_current_price <= decimal128(149, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_item_sk = i_item_sk)", + "Estimated Cardinality": "234900" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-02-10 <= $.d_date <= 2000-04-10)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "i_item_id" + ], + "Expressions": [ + "sum(CASE WHEN ((d_date < '2000-03-11'::DATE)) THEN (inv_quantity_on_hand) ELSE 0 END)", + "sum(CASE WHEN ((d_date >= '2000-03-11'::DATE)) THEN (inv_quantity_on_hand) ELSE 0 END)" + ], + "Estimated Cardinality": "234899" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "i_item_id", + "inv_before", + "inv_after" + ], + "Estimated Cardinality": "234899" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((inv_before > 0)) THEN ((CAST((inv_after * 1.000) AS DOUBLE) / CAST(inv_before AS DOUBLE))) ELSE NULL END BETWEEN 0.6666666666666666 AND 1.5)", + "Estimated Cardinality": "234899" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "i_item_id", + "inv_before", + "inv_after" + ], + "Estimated Cardinality": "234899" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "234900" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(decimal128(99, precision=7, scale=2) <= $.i_current_price <= decimal128(149, precision=7, scale=2))", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_item_sk = i_item_sk", + "Estimated Cardinality": "234900" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-02-10 <= $.d_date <= 2000-04-10)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_date_sk = d_date_sk", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "i_item_id", + "CASE WHEN ((d_date < '2000-03-11'::DATE)) THEN (inv_quantity_on_hand) ELSE 0 END", + "CASE WHEN ((d_date >= '2000-03-11'::DATE)) THEN (inv_quantity_on_hand) ELSE 0 END" + ], + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)" + ], + "Estimated Cardinality": "234899" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((inv_before > 0)) THEN ((CAST((inv_after * 1.000) AS DOUBLE) / CAST(inv_before AS DOUBLE))) ELSE NULL END BETWEEN 0.6666666666666666 AND 1.5)", + "Estimated Cardinality": "234899" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "x.w_warehouse_name ASC", + "x.i_item_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q22.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q22.slt.no new file mode 100644 index 00000000000..b2d0647c8ad --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q22.slt.no @@ -0,0 +1,446 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_product_name , + i_brand , + i_class , + i_category , + avg(inv_quantity_on_hand) qoh +FROM inventory , + date_dim , + item +WHERE inv_date_sk=d_date_sk + AND inv_item_sk=i_item_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 +GROUP BY rollup(i_product_name ,i_brand ,i_class ,i_category) +ORDER BY qoh NULLS FIRST, + i_product_name NULLS FIRST, + i_brand NULLS FIRST, + i_class NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(inv_date_sk = d_date_sk)", + "(inv_item_sk = i_item_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_product_name", + "i_brand", + "i_class", + "i_category" + ], + "Expressions": "avg(inv_quantity_on_hand)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_product_name", + "i_brand", + "i_class", + "i_category", + "qoh" + ] + } + } + ], + "extra_info": { + "Order By": [ + "avg(memory.main.inventory.inv_quantity_on_hand)", + "memory.main.item.i_product_name", + "memory.main.item.i_brand", + "memory.main.item.i_class", + "memory.main.item.i_category" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)", + "Estimated Cardinality": "234900" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand", + "i_class", + "i_category", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_item_sk = i_item_sk)", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Groups": [ + "i_product_name", + "i_brand", + "i_class", + "i_category" + ], + "Expressions": "avg(inv_quantity_on_hand)", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Expressions": [ + "i_product_name", + "i_brand", + "i_class", + "i_category", + "qoh" + ], + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "inv_date_sk", + "inv_item_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_date_sk = d_date_sk", + "Estimated Cardinality": "234900" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand", + "i_class", + "i_category", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_item_sk = i_item_sk", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Projections": [ + "i_product_name", + "i_brand", + "i_class", + "i_category", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": "avg(#4)", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "avg(memory.main.inventory.inv_quantity_on_hand) ASC", + "memory.main.item.i_product_name ASC", + "memory.main.item.i_brand ASC", + "memory.main.item.i_class ASC", + "memory.main.item.i_category ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q23.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q23.slt.no new file mode 100644 index 00000000000..c97fb96b7ce --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q23.slt.no @@ -0,0 +1,2597 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH frequent_ss_items AS + (SELECT itemdesc, + i_item_sk item_sk, + d_date solddate, + count(*) cnt + FROM store_sales, + date_dim, + (SELECT SUBSTRING(i_item_desc, 1, 30) itemdesc, + * + FROM item) sq1 + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY itemdesc, + i_item_sk, + d_date + HAVING count(*) >4), + max_store_sales AS + (SELECT max(csales) tpcds_cmax + FROM + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) csales + FROM store_sales, + customer, + date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY c_customer_sk) sq2), + best_ss_customer AS + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) ssales + FROM store_sales, + customer, + max_store_sales + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING sum(ss_quantity*ss_sales_price) > (50/100.0) * max(tpcds_cmax)) +SELECT c_last_name, + c_first_name, + sales +FROM + (SELECT c_last_name, + c_first_name, + sum(cs_quantity*cs_list_price) sales + FROM catalog_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = item_sk + AND cs_bill_customer_sk = best_ss_customer.c_customer_sk + AND cs_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name + UNION ALL SELECT c_last_name, + c_first_name, + sum(ws_quantity*ws_list_price) sales + FROM web_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = item_sk + AND ws_bill_customer_sk = best_ss_customer.c_customer_sk + AND ws_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name) sq3 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + sales NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "itemdesc", + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_item_sk = i_item_sk)", + "(d_year IN (CAST(2000 AS BIGINT), CAST((2000 + 1) AS BIGINT), CAST((2000 + 2) AS BIGINT), CAST((2000 + 3) AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "itemdesc", + "i_item_sk", + "d_date" + ], + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "(count_star() > CAST(4 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": [ + "itemdesc", + "item_sk", + "solddate", + "cnt" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_customer_sk = c_customer_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year IN (CAST(2000 AS BIGINT), CAST((2000 + 1) AS BIGINT), CAST((2000 + 2) AS BIGINT), CAST((2000 + 3) AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Groups": "c_customer_sk", + "Expressions": "sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2))))" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "csales" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "max(csales)" + } + } + ], + "extra_info": { + "Expressions": "tpcds_cmax" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(ss_customer_sk = c_customer_sk)" + } + } + ], + "extra_info": { + "Groups": "c_customer_sk", + "Expressions": [ + "sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2))))", + "max(tpcds_cmax)" + ] + } + } + ], + "extra_info": { + "Expressions": "(CAST(sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2)))) AS DOUBLE) > ((CAST(50 AS DOUBLE) / CAST(100.0 AS DOUBLE)) * CAST(max(tpcds_cmax) AS DOUBLE)))" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "ssales" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(2000 AS BIGINT))", + "(d_moy = CAST(2 AS BIGINT))", + "(cs_sold_date_sk = d_date_sk)", + "(cs_item_sk = item_sk)", + "(cs_bill_customer_sk = c_customer_sk)", + "(cs_bill_customer_sk = c_customer_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name" + ], + "Expressions": "sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2))))" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(2000 AS BIGINT))", + "(d_moy = CAST(2 AS BIGINT))", + "(ws_sold_date_sk = d_date_sk)", + "(ws_item_sk = item_sk)", + "(ws_bill_customer_sk = c_customer_sk)", + "(ws_bill_customer_sk = c_customer_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name" + ], + "Expressions": "sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2))))" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sq3.c_last_name", + "sq3.c_first_name", + "sq3.sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "best_ss_customer", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "max_store_sales", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "frequent_ss_items", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([2000i64, 2001i64, 2002i64, 2003i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "itemdesc", + "i_item_sk" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "itemdesc", + "i_item_sk", + "d_date" + ], + "Expressions": "count_star()", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "(count_star() > 4)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "item_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "#0" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_customer_sk", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([2000i64, 2001i64, 2002i64, 2003i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "c_customer_sk", + "Expressions": "sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2))))", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": "csales", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "max(csales)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "tpcds_cmax", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "c_customer_sk", + "Expressions": [ + "sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2))))", + "max(tpcds_cmax)" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": "(CAST(sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2)))) AS DOUBLE) > (0.5 * CAST(max(tpcds_cmax) AS DOUBLE)))", + "Estimated Cardinality": "36468" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "ssales" + ], + "Estimated Cardinality": "36468" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2", + "Estimated Cardinality": "36468" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_quantity", + "cs_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "($.d_moy = 2i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(item_sk = cs_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = cs_bill_customer_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = cs_bill_customer_sk)", + "Estimated Cardinality": "42066" + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name" + ], + "Expressions": "sum((CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2))))", + "Estimated Cardinality": "42065" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "sales" + ], + "Estimated Cardinality": "42065" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2", + "Estimated Cardinality": "36468" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_quantity", + "ws_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "($.d_moy = 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(item_sk = ws_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ws_bill_customer_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ws_bill_customer_sk)", + "Estimated Cardinality": "42066" + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name" + ], + "Expressions": "sum((CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2))))", + "Estimated Cardinality": "42065" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "sales" + ], + "Estimated Cardinality": "42065" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "84130" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "sales" + ], + "Estimated Cardinality": "84130" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "best_ss_customer", + "Table Index": "2", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "frequent_ss_items", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([2000i64, 2001i64, 2002i64, 2003i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Projections": [ + "itemdesc", + "i_item_sk" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "itemdesc", + "i_item_sk", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "count_star()", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expression": "(count_star() > 4)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "#1", + "Estimated Cardinality": "57692" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_customer_sk", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "c_customer_sk", + "Estimated Cardinality": "10000" + } + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "c_customer_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([2000i64, 2001i64, 2002i64, 2003i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_sk", + "(CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2)))" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Projections": "csales", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Projections": "csales", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Aggregates": "max(#0)" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_sk", + "(CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2)))", + "tpcds_cmax" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "max(#2)" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expression": "(CAST(sum((CAST(ss_quantity AS DECIMAL(26,0)) * CAST(ss_sales_price AS DECIMAL(26,2)))) AS DOUBLE) > (0.5 * CAST(max(tpcds_cmax) AS DOUBLE)))", + "Estimated Cardinality": "36468" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1" + ], + "Estimated Cardinality": "36468" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2", + "Estimated Cardinality": "36468" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_quantity", + "cs_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2000", + "d_moy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "item_sk = cs_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = cs_bill_customer_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = cs_bill_customer_sk", + "Estimated Cardinality": "42066" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "(CAST(cs_quantity AS DECIMAL(26,0)) * CAST(cs_list_price AS DECIMAL(26,2)))" + ], + "Estimated Cardinality": "42066" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "42065" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2", + "Estimated Cardinality": "36468" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_quantity", + "ws_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2000", + "d_moy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "item_sk = ws_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ws_bill_customer_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ws_bill_customer_sk", + "Estimated Cardinality": "42066" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "(CAST(ws_quantity AS DECIMAL(26,0)) * CAST(ws_list_price AS DECIMAL(26,2)))" + ], + "Estimated Cardinality": "42066" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "42065" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sq3.c_last_name ASC", + "sq3.c_first_name ASC", + "sq3.sales ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "best_ss_customer", + "Table Index": "2", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "frequent_ss_items", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q24.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q24.slt.no new file mode 100644 index 00000000000..4ff76c8f7d4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q24.slt.no @@ -0,0 +1,1311 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ssales AS + (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_country <> upper(ca_country) + AND s_zip = ca_zip + AND s_market_id=8 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'peach' +GROUP BY c_last_name, + c_first_name, + s_store_name +HAVING sum(netpaid) > + (SELECT 0.05*avg(netpaid) + FROM ssales) +ORDER BY c_last_name, + c_first_name, + s_store_name ; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)", + "(ss_customer_sk = c_customer_sk)", + "(ss_item_sk = i_item_sk)", + "(ss_store_sk = s_store_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(c_birth_country != upper(ca_country))", + "(s_zip = ca_zip)", + "(s_market_id = CAST(8 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name", + "s_store_name", + "ca_state", + "s_state", + "i_color", + "i_current_price", + "i_manager_id", + "i_units", + "i_size" + ], + "Expressions": "sum(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "s_store_name", + "ca_state", + "s_state", + "i_color", + "i_current_price", + "i_manager_id", + "i_units", + "i_size", + "netpaid" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "(i_color = CAST('peach' AS VARCHAR))" + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name", + "s_store_name" + ], + "Expressions": "sum(netpaid)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(netpaid)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(0.05 AS DOUBLE) * avg(netpaid))" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[57.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[63.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[63.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(CAST(sum(netpaid) AS DOUBLE) > SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "s_store_name", + "paid" + ] + } + } + ], + "extra_info": { + "Order By": [ + "ssales.c_last_name", + "ssales.c_first_name", + "ssales.s_store_name" + ] + } + } + ], + "extra_info": { + "CTE Name": "ssales", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_net_paid" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_current_price", + "i_size", + "i_color", + "i_units", + "i_manager_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_item_sk = i_item_sk)", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_item_sk = i_item_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name", + "c_birth_country" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state", + "ca_zip", + "ca_country" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_zip = s_zip)", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(c_current_addr_sk = ca_address_sk)", + "(c_birth_country != upper(ca_country))" + ], + "Estimated Cardinality": "170997" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_customer_sk = c_customer_sk)", + "(ss_store_sk = s_store_sk)" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 1)", + "#9", + "#10", + "#8", + "#6", + "#7" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name", + "s_store_name", + "ca_state", + "s_state", + "i_color", + "i_current_price", + "i_manager_id", + "i_units", + "i_size" + ], + "Expressions": "sum(ss_net_paid)", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1)", + "#8", + "#9", + "#10" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "s_store_name", + "i_color", + "netpaid" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": "(i_color = 'peach')", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Groups": [ + "c_last_name", + "c_first_name", + "s_store_name" + ], + "Expressions": "sum(netpaid)", + "Estimated Cardinality": "4932665" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(netpaid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "(0.05 * avg(netpaid))", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(CAST(sum(netpaid) AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "s_store_name", + "paid" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Order By": [ + "ssales.c_last_name", + "ssales.c_first_name", + "ssales.s_store_name" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "CTE Name": "ssales", + "Table Index": "0", + "Estimated Cardinality": "4932665" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_net_paid" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_item_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_current_price", + "i_size", + "i_color", + "i_units", + "i_manager_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_item_sk = i_item_sk", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_item_sk = i_item_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name", + "c_birth_country" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_state", + "ca_zip", + "ca_country" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_zip = s_zip", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "c_current_addr_sk = ca_address_sk", + "c_birth_country != upper(ca_country)" + ], + "Estimated Cardinality": "170997" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_customer_sk = c_customer_sk", + "ss_store_sk = s_store_sk" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 1)", + "#9", + "#10", + "#8", + "#6", + "#7" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "s_store_name", + "ca_state", + "s_state", + "i_color", + "i_current_price", + "i_manager_id", + "i_units", + "i_size", + "ss_net_paid" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Aggregates": "sum(#10)", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1)", + "#8", + "#9", + "#10" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "s_store_name", + "i_color", + "netpaid" + ], + "Estimated Cardinality": "4932665" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expression": "(i_color = 'peach')", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "s_store_name", + "netpaid" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "sum(#3)", + "Estimated Cardinality": "4932665" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": "netpaid", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "(0.05 * avg(netpaid))", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "CAST(sum(netpaid) AS DOUBLE) > SUBQUERY", + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "s_store_name", + "paid" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Order By": [ + "ssales.c_last_name ASC", + "ssales.c_first_name ASC", + "ssales.s_store_name ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "ssales", + "Table Index": "0", + "Estimated Cardinality": "4932665" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q25.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q25.slt.no new file mode 100644 index 00000000000..ed52639e8cb --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q25.slt.no @@ -0,0 +1,1073 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id , + i_item_desc , + s_store_id , + s_store_name , + sum(ss_net_profit) AS store_sales_profit , + sum(sr_net_loss) AS store_returns_loss , + sum(cs_net_profit) AS catalog_sales_profit +FROM store_sales , + store_returns , + catalog_sales , + date_dim d1 , + date_dim d2 , + date_dim d3 , + store , + item +WHERE d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +ORDER BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_moy = CAST(4 AS BIGINT))", + "(d_year = CAST(2001 AS BIGINT))", + "(d_date_sk = ss_sold_date_sk)", + "(i_item_sk = ss_item_sk)", + "(s_store_sk = ss_store_sk)", + "(ss_customer_sk = sr_customer_sk)", + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)", + "(sr_returned_date_sk = d_date_sk)", + "(d_moy >= CAST(4 AS BIGINT))", + "(d_year = CAST(2001 AS BIGINT))", + "(sr_customer_sk = cs_bill_customer_sk)", + "(sr_item_sk = cs_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_moy >= CAST(4 AS BIGINT))", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy <= CAST(10 AS BIGINT))", + "(d_moy <= CAST(10 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name" + ], + "Expressions": [ + "sum(ss_net_profit)", + "sum(sr_net_loss)", + "sum(cs_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name", + "store_sales_profit", + "store_returns_loss", + "catalog_sales_profit" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "memory.main.store.s_store_id", + "memory.main.store.s_store_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 4i64)", + "($.d_year = 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(4i64 <= $.d_moy <= 10i64)", + "($.d_year = 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(4i64 <= $.d_moy <= 10i64)", + "($.d_year = 2001i64)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "5713" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_item_sk = i_item_sk)", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cs_item_sk = sr_item_sk)", + "(cs_bill_customer_sk = sr_customer_sk)" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_item_sk = i_item_sk)", + "(ss_customer_sk = cs_bill_customer_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "11591" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "11591" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name" + ], + "Expressions": [ + "sum(ss_net_profit)", + "sum(sr_net_loss)", + "sum(cs_net_profit)" + ], + "Estimated Cardinality": "11591" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name", + "store_sales_profit", + "store_returns_loss", + "catalog_sales_profit" + ], + "Estimated Cardinality": "11591" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=4" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "5713" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_item_sk = i_item_sk", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cs_item_sk = sr_item_sk", + "cs_bill_customer_sk = sr_customer_sk" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_item_sk = i_item_sk", + "ss_customer_sk = cs_bill_customer_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "11591" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "11591" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name", + "ss_net_profit", + "sr_net_loss", + "cs_net_profit" + ], + "Estimated Cardinality": "11591" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "sum(#4)", + "sum(#5)", + "sum(#6)" + ], + "Estimated Cardinality": "11591" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.item.i_item_id ASC", + "memory.main.item.i_item_desc ASC", + "memory.main.store.s_store_id ASC", + "memory.main.store.s_store_name ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q26.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q26.slt.no new file mode 100644 index 00000000000..b9fd9c56b92 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q26.slt.no @@ -0,0 +1,705 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + avg(cs_quantity) agg1, + avg(cs_list_price) agg2, + avg(cs_coupon_amt) agg3, + avg(cs_sales_price) agg4 +FROM catalog_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(cs_item_sk = i_item_sk)", + "(cs_bill_cdemo_sk = cd_demo_sk)", + "(cs_promo_sk = p_promo_sk)", + "(cd_gender = CAST('M' AS VARCHAR))", + "(cd_marital_status = CAST('S' AS VARCHAR))", + "(cd_education_status = CAST('College' AS VARCHAR))", + "((p_channel_email = CAST('N' AS VARCHAR)) OR (p_channel_event = CAST('N' AS VARCHAR)))", + "(d_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": [ + "avg(cs_quantity)", + "avg(cs_list_price)", + "avg(cs_coupon_amt)", + "avg(cs_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.item.i_item_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_cdemo_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_quantity", + "cs_list_price", + "cs_sales_price", + "cs_coupon_amt" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.cd_gender = \"M\")", + "($.cd_marital_status = \"S\")", + "($.cd_education_status = \"College\")", + "($.cd_demo_sk >= 16i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Expressions": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(($.p_channel_email = \"N\") or ($.p_channel_event = \"N\"))", + "Function": "Vortex Scan", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_promo_sk = p_promo_sk)", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 1)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": [ + "avg(cs_quantity)", + "avg(cs_list_price)", + "avg(cs_coupon_amt)", + "avg(cs_sales_price)" + ], + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_cdemo_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_quantity", + "cs_list_price", + "cs_sales_price", + "cs_coupon_amt" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "cd_gender='M'", + "cd_marital_status='S'", + "cd_education_status='College'" + ], + "Projections": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(($.p_channel_email = \"N\") or ($.p_channel_event = \"N\"))", + "Projections": "p_promo_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_promo_sk = p_promo_sk", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 1)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "cs_quantity", + "cs_list_price", + "cs_coupon_amt", + "cs_sales_price" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "avg(#1)", + "avg(#2)", + "avg(#3)", + "avg(#4)" + ], + "Estimated Cardinality": "5630" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.item.i_item_id ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q27.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q27.slt.no new file mode 100644 index 00000000000..7cc7f1a6b33 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q27.slt.no @@ -0,0 +1,1169 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH results AS + (SELECT i_item_id, + s_state, + 0 AS g_state, + ss_quantity agg1, + ss_list_price agg2, + ss_coupon_amt agg3, + ss_sales_price agg4 + FROM store_sales, + customer_demographics, + date_dim, + store, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND d_year = 2002 + AND s_state = 'TN' ) +SELECT i_item_id, + s_state, + g_state, + agg1, + agg2, + agg3, + agg4 +FROM + ( SELECT i_item_id, + s_state, + 0 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id , + s_state + UNION ALL SELECT i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id + UNION ALL SELECT NULL AS i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results ) foo +ORDER BY i_item_id NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_item_sk = i_item_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_cdemo_sk = cd_demo_sk)", + "(cd_gender = CAST('M' AS VARCHAR))", + "(cd_marital_status = CAST('S' AS VARCHAR))", + "(cd_education_status = CAST('College' AS VARCHAR))", + "(d_year = CAST(2002 AS BIGINT))", + "(s_state = CAST('TN' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "s_state" + ], + "Expressions": [ + "avg(agg1)", + "avg(agg2)", + "avg(agg3)", + "avg(agg4)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": [ + "avg(agg1)", + "avg(agg2)", + "avg(agg3)", + "avg(agg4)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(agg1)", + "avg(agg2)", + "avg(agg3)", + "avg(agg4)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + } + ], + "extra_info": { + "Order By": [ + "foo.i_item_id", + "foo.s_state" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "results", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_cdemo_sk", + "ss_store_sk", + "ss_quantity", + "ss_list_price", + "ss_sales_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.cd_gender = \"M\")", + "($.cd_marital_status = \"S\")", + "($.cd_education_status = \"College\")", + "(2i64 <= $.cd_demo_sk <= 192076i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Expressions": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_state = \"TN\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ] + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "s_state" + ], + "Expressions": [ + "avg(agg1)", + "avg(agg2)", + "avg(agg3)", + "avg(agg4)" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": [ + "avg(agg1)", + "avg(agg2)", + "avg(agg3)", + "avg(agg4)" + ], + "Estimated Cardinality": "11307" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11307" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(agg1)", + "avg(agg2)", + "avg(agg3)", + "avg(agg4)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "22842" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "22842" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "results", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_cdemo_sk", + "ss_store_sk", + "ss_quantity", + "ss_list_price", + "ss_sales_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "cd_gender='M'", + "cd_marital_status='S'", + "cd_education_status='College'" + ], + "Projections": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_state='TN'", + "Projections": [ + "s_store_sk", + "s_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "s_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11535" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "s_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "avg(#2)", + "avg(#3)", + "avg(#4)", + "avg(#5)" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "avg(#1)", + "avg(#2)", + "avg(#3)", + "avg(#4)" + ], + "Estimated Cardinality": "11307" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11307" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "avg(#1)", + "avg(#2)", + "avg(#3)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "s_state", + "g_state", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "foo.i_item_id ASC", + "foo.s_state ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "results", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q28.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q28.slt.no new file mode 100644 index 00000000000..514888167a2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q28.slt.no @@ -0,0 +1,1261 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * +FROM + (SELECT avg(ss_list_price) B1_LP, + count(ss_list_price) B1_CNT, + count(DISTINCT ss_list_price) B1_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 0 AND 5 + AND (ss_list_price BETWEEN 8 AND 8+10 + OR ss_coupon_amt BETWEEN 459 AND 459+1000 + OR ss_wholesale_cost BETWEEN 57 AND 57+20)) B1, + (SELECT avg(ss_list_price) B2_LP, + count(ss_list_price) B2_CNT, + count(DISTINCT ss_list_price) B2_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 6 AND 10 + AND (ss_list_price BETWEEN 90 AND 90+10 + OR ss_coupon_amt BETWEEN 2323 AND 2323+1000 + OR ss_wholesale_cost BETWEEN 31 AND 31+20)) B2, + (SELECT avg(ss_list_price) B3_LP, + count(ss_list_price) B3_CNT, + count(DISTINCT ss_list_price) B3_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 11 AND 15 + AND (ss_list_price BETWEEN 142 AND 142+10 + OR ss_coupon_amt BETWEEN 12214 AND 12214+1000 + OR ss_wholesale_cost BETWEEN 79 AND 79+20)) B3, + (SELECT avg(ss_list_price) B4_LP, + count(ss_list_price) B4_CNT, + count(DISTINCT ss_list_price) B4_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 16 AND 20 + AND (ss_list_price BETWEEN 135 AND 135+10 + OR ss_coupon_amt BETWEEN 6071 AND 6071+1000 + OR ss_wholesale_cost BETWEEN 38 AND 38+20)) B4, + (SELECT avg(ss_list_price) B5_LP, + count(ss_list_price) B5_CNT, + count(DISTINCT ss_list_price) B5_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 25 + AND (ss_list_price BETWEEN 122 AND 122+10 + OR ss_coupon_amt BETWEEN 836 AND 836+1000 + OR ss_wholesale_cost BETWEEN 17 AND 17+20)) B5, + (SELECT avg(ss_list_price) B6_LP, + count(ss_list_price) B6_CNT, + count(DISTINCT ss_list_price) B6_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 26 AND 30 + AND (ss_list_price BETWEEN 154 AND 154+10 + OR ss_coupon_amt BETWEEN 7326 AND 7326+1000 + OR ss_wholesale_cost BETWEEN 7 AND 7+20)) B6 +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(0 AS BIGINT))", + "(((CAST(ss_list_price AS DECIMAL(12,2)) >= CAST(8 AS DECIMAL(12,2))) AND (CAST(ss_list_price AS DECIMAL(12,2)) <= CAST((8 + 10) AS DECIMAL(12,2)))) OR ((CAST(ss_coupon_amt AS DECIMAL(12,2)) >= CAST(459 AS DECIMAL(12,2))) AND (CAST(ss_coupon_amt AS DECIMAL(12,2)) <= CAST((459 + 1000) AS DECIMAL(12,2)))) OR ((CAST(ss_wholesale_cost AS DECIMAL(12,2)) >= CAST(57 AS DECIMAL(12,2))) AND (CAST(ss_wholesale_cost AS DECIMAL(12,2)) <= CAST((57 + 20) AS DECIMAL(12,2)))))", + "(ss_quantity <= CAST(5 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "B1_LP", + "B1_CNT", + "B1_CNTD" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(6 AS BIGINT))", + "(((CAST(ss_list_price AS DECIMAL(12,2)) >= CAST(90 AS DECIMAL(12,2))) AND (CAST(ss_list_price AS DECIMAL(12,2)) <= CAST((90 + 10) AS DECIMAL(12,2)))) OR ((CAST(ss_coupon_amt AS DECIMAL(12,2)) >= CAST(2323 AS DECIMAL(12,2))) AND (CAST(ss_coupon_amt AS DECIMAL(12,2)) <= CAST((2323 + 1000) AS DECIMAL(12,2)))) OR ((CAST(ss_wholesale_cost AS DECIMAL(12,2)) >= CAST(31 AS DECIMAL(12,2))) AND (CAST(ss_wholesale_cost AS DECIMAL(12,2)) <= CAST((31 + 20) AS DECIMAL(12,2)))))", + "(ss_quantity <= CAST(10 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "B2_LP", + "B2_CNT", + "B2_CNTD" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(11 AS BIGINT))", + "(((CAST(ss_list_price AS DECIMAL(12,2)) >= CAST(142 AS DECIMAL(12,2))) AND (CAST(ss_list_price AS DECIMAL(12,2)) <= CAST((142 + 10) AS DECIMAL(12,2)))) OR ((CAST(ss_coupon_amt AS DECIMAL(12,2)) >= CAST(12214 AS DECIMAL(12,2))) AND (CAST(ss_coupon_amt AS DECIMAL(12,2)) <= CAST((12214 + 1000) AS DECIMAL(12,2)))) OR ((CAST(ss_wholesale_cost AS DECIMAL(12,2)) >= CAST(79 AS DECIMAL(12,2))) AND (CAST(ss_wholesale_cost AS DECIMAL(12,2)) <= CAST((79 + 20) AS DECIMAL(12,2)))))", + "(ss_quantity <= CAST(15 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "B3_LP", + "B3_CNT", + "B3_CNTD" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(16 AS BIGINT))", + "(((CAST(ss_list_price AS DECIMAL(12,2)) >= CAST(135 AS DECIMAL(12,2))) AND (CAST(ss_list_price AS DECIMAL(12,2)) <= CAST((135 + 10) AS DECIMAL(12,2)))) OR ((CAST(ss_coupon_amt AS DECIMAL(12,2)) >= CAST(6071 AS DECIMAL(12,2))) AND (CAST(ss_coupon_amt AS DECIMAL(12,2)) <= CAST((6071 + 1000) AS DECIMAL(12,2)))) OR ((CAST(ss_wholesale_cost AS DECIMAL(12,2)) >= CAST(38 AS DECIMAL(12,2))) AND (CAST(ss_wholesale_cost AS DECIMAL(12,2)) <= CAST((38 + 20) AS DECIMAL(12,2)))))", + "(ss_quantity <= CAST(20 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "B4_LP", + "B4_CNT", + "B4_CNTD" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(21 AS BIGINT))", + "(((CAST(ss_list_price AS DECIMAL(12,2)) >= CAST(122 AS DECIMAL(12,2))) AND (CAST(ss_list_price AS DECIMAL(12,2)) <= CAST((122 + 10) AS DECIMAL(12,2)))) OR ((CAST(ss_coupon_amt AS DECIMAL(12,2)) >= CAST(836 AS DECIMAL(12,2))) AND (CAST(ss_coupon_amt AS DECIMAL(12,2)) <= CAST((836 + 1000) AS DECIMAL(12,2)))) OR ((CAST(ss_wholesale_cost AS DECIMAL(12,2)) >= CAST(17 AS DECIMAL(12,2))) AND (CAST(ss_wholesale_cost AS DECIMAL(12,2)) <= CAST((17 + 20) AS DECIMAL(12,2)))))", + "(ss_quantity <= CAST(25 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "B5_LP", + "B5_CNT", + "B5_CNTD" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(26 AS BIGINT))", + "(((CAST(ss_list_price AS DECIMAL(12,2)) >= CAST(154 AS DECIMAL(12,2))) AND (CAST(ss_list_price AS DECIMAL(12,2)) <= CAST((154 + 10) AS DECIMAL(12,2)))) OR ((CAST(ss_coupon_amt AS DECIMAL(12,2)) >= CAST(7326 AS DECIMAL(12,2))) AND (CAST(ss_coupon_amt AS DECIMAL(12,2)) <= CAST((7326 + 1000) AS DECIMAL(12,2)))) OR ((CAST(ss_wholesale_cost AS DECIMAL(12,2)) >= CAST(7 AS DECIMAL(12,2))) AND (CAST(ss_wholesale_cost AS DECIMAL(12,2)) <= CAST((7 + 20) AS DECIMAL(12,2)))))", + "(ss_quantity <= CAST(30 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "B6_LP", + "B6_CNT", + "B6_CNTD" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "B1_LP", + "B1_CNT", + "B1_CNTD", + "B2_LP", + "B2_CNT", + "B2_CNTD", + "B3_LP", + "B3_CNT", + "B3_CNTD", + "B4_LP", + "B4_CNT", + "B4_CNTD", + "B5_LP", + "B5_CNT", + "B5_CNTD", + "B6_LP", + "B6_CNT", + "B6_CNTD" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.ss_list_price >= decimal128(12200, precision=7, scale=2)) and ($.ss_list_price <= decimal128(13200, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(83600, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(183600, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(1700, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(3700, precision=7, scale=2))))", + "(21i64 <= $.ss_quantity <= 25i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "B5_LP", + "B5_CNT", + "B5_CNTD" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.ss_list_price >= decimal128(15400, precision=7, scale=2)) and ($.ss_list_price <= decimal128(16400, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(732600, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(832600, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(700, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(2700, precision=7, scale=2))))", + "(26i64 <= $.ss_quantity <= 30i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "B6_LP", + "B6_CNT", + "B6_CNTD" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.ss_list_price >= decimal128(13500, precision=7, scale=2)) and ($.ss_list_price <= decimal128(14500, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(607100, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(707100, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(3800, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(5800, precision=7, scale=2))))", + "(16i64 <= $.ss_quantity <= 20i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "B4_LP", + "B4_CNT", + "B4_CNTD" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.ss_list_price >= decimal128(14200, precision=7, scale=2)) and ($.ss_list_price <= decimal128(15200, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(1221400, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(1321400, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(7900, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(9900, precision=7, scale=2))))", + "(11i64 <= $.ss_quantity <= 15i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "B3_LP", + "B3_CNT", + "B3_CNTD" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.ss_list_price >= decimal128(9000, precision=7, scale=2)) and ($.ss_list_price <= decimal128(10000, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(232300, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(332300, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(3100, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(5100, precision=7, scale=2))))", + "(6i64 <= $.ss_quantity <= 10i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "B2_LP", + "B2_CNT", + "B2_CNTD" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.ss_list_price >= decimal128(800, precision=7, scale=2)) and ($.ss_list_price <= decimal128(1800, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(45900, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(145900, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(5700, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(7700, precision=7, scale=2))))", + "(0i64 <= $.ss_quantity <= 5i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "avg(ss_list_price)", + "count(ss_list_price)", + "count(DISTINCT ss_list_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "B1_LP", + "B1_CNT", + "B1_CNTD" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "B1_LP", + "B1_CNT", + "B1_CNTD", + "B2_LP", + "B2_CNT", + "B2_CNTD", + "B3_LP", + "B3_CNT", + "B3_CNTD", + "B4_LP", + "B4_CNT", + "B4_CNTD", + "B5_LP", + "B5_CNT", + "B5_CNTD", + "B6_LP", + "B6_CNT", + "B6_CNTD" + ], + "Estimated Cardinality": "0" + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "STREAMING_LIMIT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.ss_list_price >= decimal128(12200, precision=7, scale=2)) and ($.ss_list_price <= decimal128(13200, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(83600, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(183600, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(1700, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(3700, precision=7, scale=2))))", + "(21i64 <= $.ss_quantity <= 25i64)" + ], + "Projections": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_list_price", + "ss_list_price", + "ss_list_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "count(#1)", + "count(DISTINCT #2)" + ] + } + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.ss_list_price >= decimal128(15400, precision=7, scale=2)) and ($.ss_list_price <= decimal128(16400, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(732600, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(832600, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(700, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(2700, precision=7, scale=2))))", + "(26i64 <= $.ss_quantity <= 30i64)" + ], + "Projections": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_list_price", + "ss_list_price", + "ss_list_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "count(#1)", + "count(DISTINCT #2)" + ] + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.ss_list_price >= decimal128(13500, precision=7, scale=2)) and ($.ss_list_price <= decimal128(14500, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(607100, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(707100, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(3800, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(5800, precision=7, scale=2))))", + "(16i64 <= $.ss_quantity <= 20i64)" + ], + "Projections": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_list_price", + "ss_list_price", + "ss_list_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "count(#1)", + "count(DISTINCT #2)" + ] + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.ss_list_price >= decimal128(14200, precision=7, scale=2)) and ($.ss_list_price <= decimal128(15200, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(1221400, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(1321400, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(7900, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(9900, precision=7, scale=2))))", + "(11i64 <= $.ss_quantity <= 15i64)" + ], + "Projections": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_list_price", + "ss_list_price", + "ss_list_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "count(#1)", + "count(DISTINCT #2)" + ] + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.ss_list_price >= decimal128(9000, precision=7, scale=2)) and ($.ss_list_price <= decimal128(10000, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(232300, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(332300, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(3100, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(5100, precision=7, scale=2))))", + "(6i64 <= $.ss_quantity <= 10i64)" + ], + "Projections": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_list_price", + "ss_list_price", + "ss_list_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "count(#1)", + "count(DISTINCT #2)" + ] + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.ss_list_price >= decimal128(800, precision=7, scale=2)) and ($.ss_list_price <= decimal128(1800, precision=7, scale=2))) or (($.ss_coupon_amt >= decimal128(45900, precision=7, scale=2)) and ($.ss_coupon_amt <= decimal128(145900, precision=7, scale=2)))) or (($.ss_wholesale_cost >= decimal128(5700, precision=7, scale=2)) and ($.ss_wholesale_cost <= decimal128(7700, precision=7, scale=2))))", + "(0i64 <= $.ss_quantity <= 5i64)" + ], + "Projections": "ss_list_price", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_list_price", + "ss_list_price", + "ss_list_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": [ + "avg(#0)", + "count(#1)", + "count(DISTINCT #2)" + ] + } + } + ], + "extra_info": {} + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "B1_LP", + "B1_CNT", + "B1_CNTD", + "B2_LP", + "B2_CNT", + "B2_CNTD", + "B3_LP", + "B3_CNT", + "B3_CNTD", + "B4_LP", + "B4_CNT", + "B4_CNTD", + "B5_LP", + "B5_CNT", + "B5_CNTD", + "B6_LP", + "B6_CNT", + "B6_CNTD" + ], + "Estimated Cardinality": "0" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q29.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q29.slt.no new file mode 100644 index 00000000000..74d7a252434 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q29.slt.no @@ -0,0 +1,1127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_quantity) AS store_sales_quantity, + sum(sr_return_quantity) AS store_returns_quantity, + sum(cs_quantity) AS catalog_sales_quantity +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_moy = 9 + AND d1.d_year = 1999 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 9 AND 9 + 3 + AND d2.d_year = 1999 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN (1999, + 1999+1, + 1999+2) +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_moy = CAST(9 AS BIGINT))", + "(d_year = CAST(1999 AS BIGINT))", + "(d_date_sk = ss_sold_date_sk)", + "(i_item_sk = ss_item_sk)", + "(s_store_sk = ss_store_sk)", + "(ss_customer_sk = sr_customer_sk)", + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)", + "(sr_returned_date_sk = d_date_sk)", + "(d_moy >= CAST(9 AS BIGINT))", + "(d_year = CAST(1999 AS BIGINT))", + "(sr_customer_sk = cs_bill_customer_sk)", + "(sr_item_sk = cs_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year IN (CAST(1999 AS BIGINT), CAST((1999 + 1) AS BIGINT), CAST((1999 + 2) AS BIGINT)))", + "(d_moy <= CAST((9 + 3) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name" + ], + "Expressions": [ + "sum(ss_quantity)", + "sum(sr_return_quantity)", + "sum(cs_quantity)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name", + "store_sales_quantity", + "store_returns_quantity", + "catalog_sales_quantity" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "memory.main.store.s_store_id", + "memory.main.store.s_store_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_quantity" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_quantity" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(9i64 <= $.d_moy <= 12i64)", + "($.d_year = 1999i64)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "5713" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_item_sk = i_item_sk)", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_item_sk = i_item_sk)", + "(ss_customer_sk = sr_customer_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 9i64)", + "($.d_year = 1999i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "11532" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "11532" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cs_item_sk = ss_item_sk)", + "(cs_bill_customer_sk = ss_customer_sk)" + ], + "Estimated Cardinality": "57974" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Expressions": [ + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#0", + "__internal_compress_integral_usmallint(#7, 2450815)" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name" + ], + "Expressions": [ + "sum(ss_quantity)", + "sum(sr_return_quantity)", + "sum(cs_quantity)" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name", + "store_sales_quantity", + "store_returns_quantity", + "catalog_sales_quantity" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_quantity" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_quantity" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=1999", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "5713" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_item_sk = i_item_sk", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_item_sk = i_item_sk", + "ss_customer_sk = sr_customer_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1999", + "d_moy=9" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "11532" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "11532" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cs_item_sk = ss_item_sk", + "cs_bill_customer_sk = ss_customer_sk" + ], + "Estimated Cardinality": "57974" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Projections": [ + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#0", + "__internal_compress_integral_usmallint(#7, 2450815)" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name", + "ss_quantity", + "sr_return_quantity", + "cs_quantity" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "sum(#4)", + "sum(#5)", + "sum(#6)" + ], + "Estimated Cardinality": "57974" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.item.i_item_id ASC", + "memory.main.item.i_item_desc ASC", + "memory.main.store.s_store_id ASC", + "memory.main.store.s_store_name ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q3.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q3.slt.no new file mode 100644 index 00000000000..9801d3a21ac --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q3.slt.no @@ -0,0 +1,525 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) sum_agg +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 128 + AND dt.d_moy=11 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + sum_agg DESC, + brand_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(ss_item_sk = i_item_sk)", + "(i_manufact_id = CAST(128 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_brand", + "i_brand_id" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "brand_id", + "brand", + "sum_agg" + ] + } + } + ], + "extra_info": { + "Order By": [ + "dt.d_year", + "sum(memory.main.store_sales.ss_ext_sales_price)", + "memory.main.item.i_brand_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manufact_id = 128i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#1, 1900)", + "#0", + "__internal_compress_integral_uinteger(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_brand", + "i_brand_id" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1900)", + "#1", + "__internal_decompress_integral_bigint(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "brand_id", + "brand", + "sum_agg" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_moy=11", + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manufact_id=128", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#1, 1900)", + "#0", + "__internal_compress_integral_uinteger(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand", + "i_brand_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "sum(#3)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1900)", + "#1", + "__internal_decompress_integral_bigint(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "brand_id", + "brand", + "sum_agg" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "dt.d_year ASC", + "sum(memory.main.store_sales.ss_ext_sales_price) DESC", + "memory.main.item.i_brand_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q30.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q30.slt.no new file mode 100644 index 00000000000..2921fec29c0 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q30.slt.no @@ -0,0 +1,1088 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH customer_total_return AS + (SELECT wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(wr_return_amt) AS ctr_total_return + FROM web_returns, + date_dim, + customer_address + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2002 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +FROM customer_total_return ctr1, + customer_address, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id NULLS FIRST, + c_salutation NULLS FIRST, + c_first_name NULLS FIRST, + c_last_name NULLS FIRST, + c_preferred_cust_flag NULLS FIRST, + c_birth_day NULLS FIRST, + c_birth_month NULLS FIRST, + c_birth_year NULLS FIRST, + c_birth_country NULLS FIRST, + c_login NULLS FIRST, + c_email_address NULLS FIRST, + c_last_review_date_sk NULLS FIRST, + ctr_total_return NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(wr_returned_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(wr_returning_addr_sk = ca_address_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "wr_returning_customer_sk", + "ca_state" + ], + "Expressions": "sum(wr_return_amt)" + } + } + ], + "extra_info": { + "Expressions": [ + "ctr_customer_sk", + "ctr_state", + "ctr_total_return" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "(ctr_state = ctr_state)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ctr_total_return)" + } + } + ], + "extra_info": { + "Expressions": "(avg(ctr_total_return) * CAST(1.2 AS DOUBLE))" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "(ca_address_sk = c_current_addr_sk)", + "(ca_state = CAST('GA' AS VARCHAR))", + "(ctr_customer_sk = c_customer_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_id", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk", + "ctr_total_return" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_customer_id", + "memory.main.customer.c_salutation", + "memory.main.customer.c_first_name", + "memory.main.customer.c_last_name", + "memory.main.customer.c_preferred_cust_flag", + "memory.main.customer.c_birth_day", + "memory.main.customer.c_birth_month", + "memory.main.customer.c_birth_year", + "memory.main.customer.c_birth_country", + "memory.main.customer.c_login", + "memory.main.customer.c_email_address", + "memory.main.customer.c_last_review_date_sk", + "ctr1.ctr_total_return" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returning_customer_sk", + "wr_returning_addr_sk", + "wr_return_amt" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "(2450865i64 <= $.d_date_sk <= 2452974i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_address_sk = wr_returning_addr_sk)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 2)", + "#2" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": [ + "wr_returning_customer_sk", + "ca_state" + ], + "Expressions": "sum(wr_return_amt)", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2)", + "#1", + "#2" + ], + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Expressions": [ + "ctr_customer_sk", + "ctr_state", + "ctr_total_return" + ], + "Estimated Cardinality": "2920" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_addr_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_state = \"GA\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ctr_customer_sk)", + "Estimated Cardinality": "829" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "782" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ctr_state = ctr_state)", + "Estimated Cardinality": "324" + } + } + ], + "extra_info": { + "Groups": "ctr_state", + "Expressions": "avg(ctr_total_return)", + "Estimated Cardinality": "162" + } + } + ], + "extra_info": { + "Expressions": [ + "(avg(ctr_total_return) * 1.2)", + "ctr_state" + ], + "Estimated Cardinality": "162" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(ctr_state IS NOT DISTINCT FROM ctr_state)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "829" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_id", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk", + "ctr_total_return" + ], + "Estimated Cardinality": "829" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_returned_date_sk", + "wr_returning_customer_sk", + "wr_returning_addr_sk", + "wr_return_amt" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_address_sk = wr_returning_addr_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 2)", + "#2" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": [ + "wr_returning_customer_sk", + "ca_state", + "wr_return_amt" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2)", + "#1", + "#2" + ], + "Estimated Cardinality": "2920" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_current_addr_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_state='GA'", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ctr_customer_sk", + "Estimated Cardinality": "829" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "782" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ctr_state = ctr_state", + "Estimated Cardinality": "324" + } + } + ], + "extra_info": { + "Projections": [ + "ctr_state", + "ctr_total_return" + ], + "Estimated Cardinality": "324" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "162" + } + } + ], + "extra_info": { + "Projections": [ + "(avg(ctr_total_return) * 1.2)", + "ctr_state" + ], + "Estimated Cardinality": "162" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "ctr_state IS NOT DISTINCT FROM ctr_state", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#12", + "Aggregates": "", + "Estimated Cardinality": "782" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "ctr_state IS NOT DISTINCT FROM ctr_state", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "829" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12" + ], + "Estimated Cardinality": "829" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer.c_customer_id ASC", + "memory.main.customer.c_salutation ASC", + "memory.main.customer.c_first_name ASC", + "memory.main.customer.c_last_name ASC", + "memory.main.customer.c_preferred_cust_flag ASC", + "memory.main.customer.c_birth_day ASC", + "memory.main.customer.c_birth_month ASC", + "memory.main.customer.c_birth_year ASC", + "memory.main.customer.c_birth_country ASC", + "memory.main.customer.c_login ASC", + "memory.main.customer.c_email_address ASC", + "memory.main.customer.c_last_review_date_sk ASC", + "ctr1.ctr_total_return ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q31.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q31.slt.no new file mode 100644 index 00000000000..002f57ff2af --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q31.slt.no @@ -0,0 +1,1631 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ss AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ss_ext_sales_price) AS store_sales + FROM store_sales, + date_dim, + customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year), + ws AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ws_ext_sales_price) AS web_sales + FROM web_sales, + date_dim, + customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year) +SELECT ss1.ca_county , + ss1.d_year , + (ws2.web_sales*1.0000)/ws1.web_sales web_q1_q2_increase , + (ss2.store_sales*1.0000)/ss1.store_sales store_q1_q2_increase , + (ws3.web_sales*1.0000)/ws2.web_sales web_q2_q3_increase , + (ss3.store_sales*1.0000)/ss2.store_sales store_q2_q3_increase +FROM ss ss1 , + ss ss2 , + ss ss3 , + ws ws1 , + ws ws2 , + ws ws3 +WHERE ss1.d_qoy = 1 + AND ss1.d_year = 2000 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2000 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2000 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2000 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2000 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2000 + AND CASE + WHEN ws1.web_sales > 0 THEN (ws2.web_sales*1.0000)/ws1.web_sales + ELSE NULL + END > CASE + WHEN ss1.store_sales > 0 THEN (ss2.store_sales*1.0000)/ss1.store_sales + ELSE NULL + END + AND CASE + WHEN ws2.web_sales > 0 THEN (ws3.web_sales*1.0000)/ws2.web_sales + ELSE NULL + END > CASE + WHEN ss2.store_sales > 0 THEN (ss3.store_sales*1.0000)/ss2.store_sales + ELSE NULL + END +ORDER BY ss1.ca_county; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_addr_sk = ca_address_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ca_county", + "d_qoy", + "d_year" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_county", + "d_qoy", + "d_year", + "store_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(ws_bill_addr_sk = ca_address_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ca_county", + "d_qoy", + "d_year" + ], + "Expressions": "sum(ws_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_county", + "d_qoy", + "d_year", + "web_sales" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = CAST(1 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))", + "(ca_county = ca_county)", + "(d_qoy = CAST(2 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))", + "(ca_county = ca_county)", + "(d_qoy = CAST(3 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))", + "(ca_county = ca_county)", + "(d_qoy = CAST(1 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))", + "(ca_county = ca_county)", + "(d_qoy = CAST(2 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))", + "(ca_county = ca_county)", + "(d_qoy = CAST(3 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))", + "(CASE WHEN ((web_sales > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST((web_sales * CAST(1.0000 AS DECIMAL(38,4))) AS DOUBLE) / CAST(web_sales AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END > CASE WHEN ((store_sales > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST((store_sales * CAST(1.0000 AS DECIMAL(38,4))) AS DOUBLE) / CAST(store_sales AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END)", + "(CASE WHEN ((web_sales > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST((web_sales * CAST(1.0000 AS DECIMAL(38,4))) AS DOUBLE) / CAST(web_sales AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END > CASE WHEN ((store_sales > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST((store_sales * CAST(1.0000 AS DECIMAL(38,4))) AS DOUBLE) / CAST(store_sales AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ca_county", + "d_year", + "web_q1_q2_increase", + "store_q1_q2_increase", + "web_q2_q3_increase", + "store_q2_q3_increase" + ] + } + } + ], + "extra_info": { + "Order By": "ss1.ca_county" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((($.d_qoy = 1i64) or ($.d_qoy = 2i64)) or ($.d_qoy = 3i64))", + "((($.d_qoy = 1i64) or ($.d_qoy = 2i64)) or ($.d_qoy = 3i64))", + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_county" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 2000)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "ca_county", + "d_qoy", + "d_year" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 2000)", + "#3" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_county", + "d_qoy", + "d_year", + "store_sales" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((($.d_qoy = 1i64) or ($.d_qoy = 2i64)) or ($.d_qoy = 3i64))", + "((($.d_qoy = 1i64) or ($.d_qoy = 2i64)) or ($.d_qoy = 3i64))", + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_county" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 2000)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Groups": [ + "ca_county", + "d_qoy", + "d_year" + ], + "Expressions": "sum(ws_ext_sales_price)", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 2000)", + "#3" + ], + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_county", + "d_qoy", + "d_year", + "web_sales" + ], + "Estimated Cardinality": "14321" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = 3)", + "(d_year = 2000)" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = 1)", + "(d_year = 2000)" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = 2)", + "(d_year = 2000)" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = 1)", + "(d_year = 2000)" + ], + "Estimated Cardinality": "14321" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = 2)", + "(d_year = 2000)" + ], + "Estimated Cardinality": "14321" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_qoy = 3)", + "(d_year = 2000)" + ], + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_county = ca_county)", + "Estimated Cardinality": "2863" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_county = ca_county)", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_county = ca_county)", + "Estimated Cardinality": "460" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_county = ca_county)", + "Estimated Cardinality": "371" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((web_sales > 0.00)) THEN ((CAST((web_sales * 1.0000) AS DOUBLE) / CAST(web_sales AS DOUBLE))) ELSE NULL END > CASE WHEN ((store_sales > 0.00)) THEN ((CAST((store_sales * 1.0000) AS DOUBLE) / CAST(store_sales AS DOUBLE))) ELSE NULL END)", + "Estimated Cardinality": "371" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_county = ca_county)", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((web_sales > 0.00)) THEN ((CAST((web_sales * 1.0000) AS DOUBLE) / CAST(web_sales AS DOUBLE))) ELSE NULL END > CASE WHEN ((store_sales > 0.00)) THEN ((CAST((store_sales * 1.0000) AS DOUBLE) / CAST(store_sales AS DOUBLE))) ELSE NULL END)", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_county", + "d_year", + "web_q1_q2_increase", + "store_q1_q2_increase", + "web_q2_q3_increase", + "store_q2_q3_increase" + ], + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Order By": "ss1.ca_county", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "1", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0", + "Estimated Cardinality": "63672694431946" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_county" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 2000)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "ca_county", + "d_qoy", + "d_year", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "sum(#3)", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 2000)", + "#3" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_county" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 2000)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "ca_county", + "d_qoy", + "d_year", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "sum(#3)", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 2000)", + "#3" + ], + "Estimated Cardinality": "14321" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expression": "((d_qoy = 3) AND (d_year = 2000))", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#3" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expression": "((d_qoy = 1) AND (d_year = 2000))", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#2", + "#3" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expression": "((d_qoy = 2) AND (d_year = 2000))", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#3" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expression": "((d_qoy = 1) AND (d_year = 2000))", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#3" + ], + "Estimated Cardinality": "14321" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expression": "((d_qoy = 2) AND (d_year = 2000))", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#3" + ], + "Estimated Cardinality": "14321" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Expression": "((d_qoy = 3) AND (d_year = 2000))", + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#3" + ], + "Estimated Cardinality": "14321" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_county = ca_county", + "Estimated Cardinality": "2863" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_county = ca_county", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_county = ca_county", + "Estimated Cardinality": "460" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_county = ca_county", + "Estimated Cardinality": "371" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((web_sales > 0.00)) THEN ((CAST((web_sales * 1.0000) AS DOUBLE) / CAST(web_sales AS DOUBLE))) ELSE NULL END > CASE WHEN ((store_sales > 0.00)) THEN ((CAST((store_sales * 1.0000) AS DOUBLE) / CAST(store_sales AS DOUBLE))) ELSE NULL END)", + "Estimated Cardinality": "371" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_county = ca_county", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((web_sales > 0.00)) THEN ((CAST((web_sales * 1.0000) AS DOUBLE) / CAST(web_sales AS DOUBLE))) ELSE NULL END > CASE WHEN ((store_sales > 0.00)) THEN ((CAST((store_sales * 1.0000) AS DOUBLE) / CAST(store_sales AS DOUBLE))) ELSE NULL END)", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Projections": [ + "ca_county", + "d_year", + "web_q1_q2_increase", + "store_q1_q2_increase", + "web_q2_q3_increase", + "store_q2_q3_increase" + ], + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "Order By": "ss1.ca_county ASC" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "1", + "Estimated Cardinality": "63672694431946" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0", + "Estimated Cardinality": "63672694431946" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q32.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q32.slt.no new file mode 100644 index 00000000000..f87efe167df --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q32.slt.no @@ -0,0 +1,852 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT sum(cs_ext_discount_amt) AS "excess discount amount" +FROM catalog_sales , + item , + date_dim +WHERE i_manufact_id = 977 + AND i_item_sk = cs_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk + AND cs_ext_discount_amt > + ( SELECT 1.3 * avg(cs_ext_discount_amt) + FROM catalog_sales , + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk ) +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_item_sk = i_item_sk)", + "(d_date >= CAST('2000-01-27' AS DATE))", + "(d_date_sk = cs_sold_date_sk)", + "(d_date <= CAST('2000-04-26' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(cs_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(1.3 AS DOUBLE) * avg(cs_ext_discount_amt))" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_manufact_id = CAST(977 AS BIGINT))", + "(i_item_sk = cs_item_sk)", + "(d_date >= CAST('2000-01-27' AS DATE))", + "(d_date_sk = cs_sold_date_sk)", + "(CAST(cs_ext_discount_amt AS DOUBLE) > SUBQUERY)", + "(d_date <= CAST('2000-04-26' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(cs_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "excess discount amount" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_discount_amt" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manufact_id = 977i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_discount_amt" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "26040" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "__internal_compress_integral_usmallint(#2, 2450815)" + ], + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Groups": "i_item_sk", + "Expressions": "avg(cs_ext_discount_amt)", + "Estimated Cardinality": "13020" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "13020" + } + } + ], + "extra_info": { + "Expressions": [ + "(1.3 * avg(cs_ext_discount_amt))", + "i_item_sk" + ], + "Estimated Cardinality": "13020" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(i_item_sk IS NOT DISTINCT FROM i_item_sk)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(cs_ext_discount_amt AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(cs_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "excess discount amount", + "Estimated Cardinality": "0" + } + } +] +physical_plan [ + { + "name": "STREAMING_LIMIT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_discount_amt" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manufact_id=977", + "Projections": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_discount_amt" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "26040" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "__internal_compress_integral_usmallint(#2, 2450815)" + ], + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_sk", + "cs_ext_discount_amt" + ], + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "13020" + } + } + ], + "extra_info": { + "Projections": [ + "(1.3 * avg(cs_ext_discount_amt))", + "i_item_sk" + ], + "Estimated Cardinality": "13020" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_item_sk IS NOT DISTINCT FROM i_item_sk", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_item_sk IS NOT DISTINCT FROM i_item_sk", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(CAST(cs_ext_discount_amt AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": "cs_ext_discount_amt", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Aggregates": "sum(#0)" + } + } + ], + "extra_info": {} + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q33.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q33.slt.no new file mode 100644 index 00000000000..af35f4bbc98 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q33.slt.no @@ -0,0 +1,2278 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ss AS + ( SELECT i_manufact_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + cs AS + ( SELECT i_manufact_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws AS + ( SELECT i_manufact_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT i_manufact_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category IN (CAST('Electronics' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_manufact_id = #[45.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(5 AS BIGINT))", + "(ss_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category IN (CAST('Electronics' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_manufact_id = #[100.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(cs_item_sk = i_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(5 AS BIGINT))", + "(cs_bill_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(cs_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category IN (CAST('Electronics' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_manufact_id = #[155.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ws_item_sk = i_item_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(5 AS BIGINT))", + "(ws_bill_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(ws_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(total_sales)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ] + } + } + ], + "extra_info": { + "Order By": "sum(tmp1.total_sales)" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "cs", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 5i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Electronics\"], $.i_category)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_manufact_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "2297" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_addr_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 5i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Electronics\"], $.i_category)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_manufact_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(cs_ext_sales_price)", + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "1143" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 5i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2864" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Electronics\"], $.i_category)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_manufact_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(ws_ext_sales_price)", + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Groups": "i_manufact_id", + "Expressions": "sum(total_sales)", + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=5" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Electronics\"], $.i_category)", + "Projections": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_manufact_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Projections": [ + "i_manufact_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "2297" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_addr_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=5" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Electronics\"], $.i_category)", + "Projections": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_manufact_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Projections": [ + "i_manufact_id", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "1143" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=5" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "2864" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Electronics\"], $.i_category)", + "Projections": "i_manufact_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_manufact_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Projections": [ + "i_manufact_id", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Projections": [ + "i_manufact_id", + "total_sales" + ], + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "sum(tmp1.total_sales) ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q34.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q34.slt.no new file mode 100644 index 00000000000..3e2e75f2035 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q34.slt.no @@ -0,0 +1,890 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT c_last_name , + c_first_name , + c_salutation , + c_preferred_cust_flag , + ss_ticket_number , + cnt +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (date_dim.d_dom BETWEEN 1 AND 3 + OR date_dim.d_dom BETWEEN 25 AND 28) + AND (household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'Unknown') + AND household_demographics.hd_vehicle_count > 0 + AND (CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END) > 1.2 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county = 'Williamson County' + GROUP BY ss_ticket_number, + ss_customer_sk) dn, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + c_salutation NULLS FIRST, + c_preferred_cust_flag DESC NULLS FIRST, + ss_ticket_number NULLS FIRST; +---- +logical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(((d_dom >= CAST(1 AS BIGINT)) AND (d_dom <= CAST(3 AS BIGINT))) OR ((d_dom >= CAST(25 AS BIGINT)) AND (d_dom <= CAST(28 AS BIGINT))))", + "((hd_buy_potential = CAST('>10000' AS VARCHAR)) OR (hd_buy_potential = CAST('Unknown' AS VARCHAR)))", + "(hd_vehicle_count > CAST(0 AS INTEGER))", + "(CASE WHEN ((hd_vehicle_count > CAST(0 AS INTEGER))) THEN ((CAST((CAST(hd_dep_count AS DECIMAL(23,0)) * CAST(1.000 AS DECIMAL(23,3))) AS DOUBLE) / CAST(hd_vehicle_count AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END > CAST(1.2 AS DOUBLE))", + "(d_year IN (CAST(1999 AS BIGINT), CAST((1999 + 1) AS BIGINT), CAST((1999 + 2) AS BIGINT)))", + "(s_county = CAST('Williamson County' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk" + ], + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "cnt" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_customer_sk = c_customer_sk)", + "(cnt >= CAST(15 AS BIGINT))", + "(cnt <= CAST(20 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag", + "ss_ticket_number", + "cnt" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_last_name", + "memory.main.customer.c_first_name", + "memory.main.customer.c_salutation", + "memory.main.customer.c_preferred_cust_flag", + "dn.ss_ticket_number" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_store_sk", + "ss_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((($.d_dom >= 1i64) and ($.d_dom <= 3i64)) or (($.d_dom >= 25i64) and ($.d_dom <= 28i64)))", + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_county = \"Williamson County\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.hd_buy_potential = \">10000\") or ($.hd_buy_potential = \"Unknown\"))", + "($.hd_vehicle_count > 0i32)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_dep_count", + "hd_vehicle_count" + ], + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((hd_vehicle_count > 0)) THEN ((CAST((CAST(hd_dep_count AS DECIMAL(23,0)) * 1.000) AS DOUBLE) / CAST(hd_vehicle_count AS DOUBLE))) ELSE NULL END > 1.2)", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk" + ], + "Expressions": "count_star()", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": "(cnt BETWEEN 15 AND 20)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "cnt" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag", + "ss_ticket_number", + "cnt" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_last_name", + "memory.main.customer.c_first_name", + "memory.main.customer.c_salutation", + "memory.main.customer.c_preferred_cust_flag", + "dn.ss_ticket_number" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_decompress_integral_bigint(#4, 1)", + "#5" + ] + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_store_sk", + "ss_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "((($.d_dom >= 1i64) and ($.d_dom <= 3i64)) or (($.d_dom >= 25i64) and ($.d_dom <= 28i64)))", + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_county='Williamson County'", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.hd_buy_potential = \">10000\") or ($.hd_buy_potential = \"Unknown\"))", + "($.hd_vehicle_count > 0i32)" + ], + "Projections": [ + "hd_demo_sk", + "hd_dep_count", + "hd_vehicle_count" + ], + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((hd_vehicle_count > 0)) THEN ((CAST((CAST(hd_dep_count AS DECIMAL(23,0)) * 1.000) AS DOUBLE) / CAST(hd_vehicle_count AS DOUBLE))) ELSE NULL END > 1.2)", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "count_star()", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expression": "(cnt BETWEEN 15 AND 20)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag", + "ss_ticket_number", + "cnt" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_last_name ASC", + "memory.main.customer.c_first_name ASC", + "memory.main.customer.c_salutation ASC", + "memory.main.customer.c_preferred_cust_flag DESC", + "dn.ss_ticket_number ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_decompress_integral_bigint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "0" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q35.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q35.slt.no new file mode 100644 index 00000000000..7932c5a6ed5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q35.slt.no @@ -0,0 +1,1741 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + count(*) cnt1, + min(cd_dep_count) min1, + max(cd_dep_count) max1, + avg(cd_dep_count) avg1, + cd_dep_employed_count, + count(*) cnt2, + min(cd_dep_employed_count) min2, + max(cd_dep_employed_count) max2, + avg(cd_dep_employed_count) avg2, + cd_dep_college_count, + count(*) cnt3, + min(cd_dep_college_count), + max(cd_dep_college_count), + avg(cd_dep_college_count) +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4)) +GROUP BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY ca_state NULLS FIRST, + cd_gender NULLS FIRST, + cd_marital_status NULLS FIRST, + cd_dep_count NULLS FIRST, + cd_dep_employed_count NULLS FIRST, + cd_dep_college_count NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_qoy < CAST(4 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ws_bill_customer_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_qoy < CAST(4 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = cs_ship_customer_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_qoy < CAST(4 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_current_addr_sk = ca_address_sk)", + "(cd_demo_sk = c_current_cdemo_sk)", + "SUBQUERY", + "(SUBQUERY OR SUBQUERY)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Expressions": [ + "count_star()", + "min(cd_dep_count)", + "max(cd_dep_count)", + "avg(cd_dep_count)", + "min(cd_dep_employed_count)", + "max(cd_dep_employed_count)", + "avg(cd_dep_employed_count)", + "min(cd_dep_college_count)", + "max(cd_dep_college_count)", + "avg(cd_dep_college_count)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cnt1", + "min1", + "max1", + "avg1", + "cd_dep_employed_count", + "cnt2", + "min2", + "max2", + "avg2", + "cd_dep_college_count", + "cnt3", + "min(cd_dep_college_count)", + "max(cd_dep_college_count)", + "avg(cd_dep_college_count)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "ca.ca_state", + "memory.main.customer_demographics.cd_gender", + "memory.main.customer_demographics.cd_marital_status", + "memory.main.customer_demographics.cd_dep_count", + "memory.main.customer_demographics.cd_dep_employed_count", + "memory.main.customer_demographics.cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "192080" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "($.d_qoy < 4i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "($.d_qoy < 4i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_ship_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2002i64)", + "($.d_qoy < 4i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_customer_sk = c_customer_sk)", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)" + } + } + ], + "extra_info": { + "Expressions": "(SUBQUERY OR SUBQUERY)", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Groups": [ + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Expressions": [ + "count_star()", + "min(cd_dep_count)", + "max(cd_dep_count)", + "avg(cd_dep_count)", + "min(cd_dep_employed_count)", + "max(cd_dep_employed_count)", + "avg(cd_dep_employed_count)", + "min(cd_dep_college_count)", + "max(cd_dep_college_count)", + "avg(cd_dep_college_count)" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cnt1", + "min1", + "max1", + "avg1", + "cd_dep_employed_count", + "cnt2", + "min2", + "max2", + "avg2", + "cd_dep_college_count", + "cnt3", + "min(cd_dep_college_count)", + "max(cd_dep_college_count)", + "avg(cd_dep_college_count)" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Projections": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#5", + "Aggregates": "", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416", + "Delim Index": "1" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "2", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#5", + "Aggregates": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416", + "Delim Index": "2" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_ship_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2002", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "3", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_customer_sk = c_customer_sk", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "28105" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#5", + "Aggregates": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "0", + "Delim Index": "3" + } + } + ], + "extra_info": { + "Expression": "(SUBQUERY OR SUBQUERY)", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count", + "cd_dep_count", + "cd_dep_count", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_employed_count", + "cd_dep_employed_count", + "cd_dep_college_count", + "cd_dep_college_count", + "cd_dep_college_count" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Aggregates": [ + "count_star()", + "min(#6)", + "max(#7)", + "avg(#8)", + "min(#9)", + "max(#10)", + "avg(#11)", + "min(#12)", + "max(#13)", + "avg(#14)" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Projections": [ + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cnt1", + "min1", + "max1", + "avg1", + "cd_dep_employed_count", + "cnt2", + "min2", + "max2", + "avg2", + "cd_dep_college_count", + "cnt3", + "min(cd_dep_college_count)", + "max(cd_dep_college_count)", + "avg(cd_dep_college_count)" + ], + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "ca.ca_state ASC", + "memory.main.customer_demographics.cd_gender ASC", + "memory.main.customer_demographics.cd_marital_status ASC", + "memory.main.customer_demographics.cd_dep_count ASC", + "memory.main.customer_demographics.cd_dep_employed_count ASC", + "memory.main.customer_demographics.cd_dep_college_count ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q36.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q36.slt.no new file mode 100644 index 00000000000..59f4b12c273 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q36.slt.no @@ -0,0 +1,1364 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH results AS + (SELECT sum(ss_net_profit) AS ss_net_profit, + sum(ss_ext_sales_price) AS ss_ext_sales_price, + (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin , + i_category , + i_class , + 0 AS g_category, + 0 AS g_class + FROM store_sales , + date_dim d1 , + item , + store + WHERE d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state ='TN' + GROUP BY i_category, + i_class) , + results_rollup AS + (SELECT gross_margin, + i_category, + i_class, + 0 AS t_category, + 0 AS t_class, + 0 AS lochierarchy + FROM results + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + i_category, + NULL AS i_class, + 0 AS t_category, + 1 AS t_class, + 1 AS lochierarchy + FROM results + GROUP BY i_category + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + NULL AS i_category, + NULL AS i_class, + 1 AS t_category, + 1 AS t_class, + 2 AS lochierarchy + FROM results) +SELECT gross_margin, + i_category, + i_class, + lochierarchy, + rank() OVER ( PARTITION BY lochierarchy, + CASE + WHEN t_class = 0 THEN i_category + END + ORDER BY gross_margin ASC) AS rank_within_parent +FROM results_rollup +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN lochierarchy = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(2001 AS BIGINT))", + "(d_date_sk = ss_sold_date_sk)", + "(i_item_sk = ss_item_sk)", + "(s_store_sk = ss_store_sk)", + "(s_state = CAST('TN' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class" + ], + "Expressions": [ + "sum(ss_net_profit)", + "sum(ss_ext_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_net_profit", + "ss_ext_sales_price", + "gross_margin", + "i_category", + "i_class", + "g_category", + "g_class" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Groups": "i_category", + "Expressions": [ + "sum(ss_net_profit)", + "sum(ss_ext_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "sum(ss_net_profit)", + "sum(ss_ext_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY lochierarchy, CASE WHEN ((t_class = CAST(0 AS INTEGER))) THEN (i_category) ELSE CAST(NULL AS VARCHAR) END ORDER BY gross_margin ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "lochierarchy", + "rank_within_parent", + "CASE WHEN ((lochierarchy = CAST(0 AS INTEGER))) THEN (i_category) ELSE CAST(NULL AS VARCHAR) END" + ] + } + } + ], + "extra_info": { + "Order By": [ + "results_rollup.lochierarchy", + "#[59.5]", + "rank() OVER (PARTITION BY results_rollup.lochierarchy, CASE WHEN ((results_rollup.t_class = 0)) THEN (results_rollup.i_category) ELSE NULL END ORDER BY results_rollup.gross_margin ASC)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "#[59.0]", + "#[59.1]", + "#[59.2]", + "#[59.3]", + "#[59.4]" + ] + } + } + ], + "extra_info": { + "CTE Name": "results_rollup", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "results", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_class", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_state = \"TN\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class" + ], + "Expressions": [ + "sum(ss_net_profit)", + "sum(ss_ext_sales_price)" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_net_profit", + "ss_ext_sales_price", + "gross_margin", + "i_category", + "i_class" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Groups": "i_category", + "Expressions": [ + "sum(ss_net_profit)", + "sum(ss_ext_sales_price)" + ], + "Estimated Cardinality": "52275" + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "52275" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "sum(ss_net_profit)", + "sum(ss_ext_sales_price)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 0)", + "__internal_compress_integral_utinyint(#4, 0)", + "__internal_compress_integral_utinyint(#5, 0)" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "57676", + "Distinct Targets": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_integer(#3, 0)", + "__internal_decompress_integral_integer(#4, 0)", + "__internal_decompress_integral_integer(#5, 0)" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#4", + "#5" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY lochierarchy, CASE WHEN ((t_class = 0)) THEN (i_category) ELSE NULL END ORDER BY gross_margin ASC NULLS LAST)", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": [ + "gross_margin", + "i_category", + "i_class", + "lochierarchy", + "rank_within_parent", + "CASE WHEN ((lochierarchy = 0)) THEN (i_category) ELSE NULL END" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "results", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_class", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_state='TN'", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_class", + "ss_net_profit", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "ss_net_profit", + "ss_ext_sales_price", + "gross_margin", + "i_category", + "i_class" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "57676" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "ss_net_profit", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ], + "Estimated Cardinality": "52275" + } + } + ], + "extra_info": { + "Projections": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "52275" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "ss_net_profit", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Aggregates": [ + "sum(#0)", + "sum(#1)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Aggregates": "", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 0)", + "__internal_compress_integral_utinyint(#4, 0)", + "__internal_compress_integral_utinyint(#5, 0)" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "gross_margin", + "i_category", + "i_class", + "t_category", + "t_class", + "lochierarchy" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Aggregates": "", + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_integer(#3, 0)", + "__internal_decompress_integral_integer(#4, 0)", + "__internal_decompress_integral_integer(#5, 0)" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#4", + "#5" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY lochierarchy, CASE WHEN ((t_class = 0)) THEN (i_category) ELSE NULL END ORDER BY gross_margin ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Projections": [ + "gross_margin", + "i_category", + "i_class", + "lochierarchy", + "rank_within_parent", + "CASE WHEN ((lochierarchy = 0)) THEN (i_category) ELSE NULL END" + ], + "Estimated Cardinality": "57676" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "results_rollup.lochierarchy DESC", + "#5 ASC", + "rank() OVER (PARTITION BY results_rollup.lochierarchy, CASE WHEN ((results_rollup.t_class = 0)) THEN (results_rollup.i_category) ELSE NULL END ORDER BY results_rollup.gross_margin ASC) ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "results", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q37.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q37.slt.no new file mode 100644 index 00000000000..0d854d7581f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q37.slt.no @@ -0,0 +1,586 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + i_item_desc, + i_current_price +FROM item, + inventory, + date_dim, + catalog_sales +WHERE i_current_price BETWEEN 68 AND 68 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-02-01' AS date) AND cast('2000-04-01' AS date) + AND i_manufact_id IN (677, + 940, + 694, + 808) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND cs_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(i_current_price AS DECIMAL(12,2)) >= CAST(68 AS DECIMAL(12,2)))", + "(inv_item_sk = i_item_sk)", + "(d_date_sk = inv_date_sk)", + "(d_date >= CAST('2000-02-01' AS DATE))", + "(i_manufact_id IN (CAST(677 AS BIGINT), CAST(940 AS BIGINT), CAST(694 AS BIGINT), CAST(808 AS BIGINT)))", + "(inv_quantity_on_hand >= CAST(100 AS INTEGER))", + "(cs_item_sk = i_item_sk)", + "(CAST(i_current_price AS DECIMAL(12,2)) <= CAST((68 + 30) AS DECIMAL(12,2)))", + "(d_date <= CAST('2000-04-01' AS DATE))", + "(inv_quantity_on_hand <= CAST(500 AS INTEGER))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.item.i_item_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "cs_item_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(100i32 <= $.inv_quantity_on_hand <= 500i32)", + "Function": "Vortex Scan", + "Estimated Cardinality": "46980" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk" + ], + "Estimated Cardinality": "46980" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-02-01 <= $.d_date <= 2000-04-01)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)", + "Estimated Cardinality": "46980" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([677i64, 940i64, 694i64, 808i64], $.i_manufact_id)", + "(decimal128(6800, precision=7, scale=2) <= $.i_current_price <= decimal128(9800, precision=7, scale=2))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_item_sk = i_item_sk)", + "Estimated Cardinality": "46980" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "18747238" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "18747238" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Expressions": "", + "Estimated Cardinality": "15129981" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "15129981" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "15129981" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "cs_item_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(100i32 <= $.inv_quantity_on_hand <= 500i32)", + "Projections": [ + "inv_date_sk", + "inv_item_sk" + ], + "Estimated Cardinality": "46980" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-02-01 <= $.d_date <= 2000-04-01)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_date_sk = d_date_sk", + "Estimated Cardinality": "46980" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([677i64, 940i64, 694i64, 808i64], $.i_manufact_id)", + "(decimal128(6800, precision=7, scale=2) <= $.i_current_price <= decimal128(9800, precision=7, scale=2))" + ], + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_item_sk = i_item_sk", + "Estimated Cardinality": "46980" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "18747238" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "18747238" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "18747238" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "15129981" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.item.i_item_id ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q38.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q38.slt.no new file mode 100644 index 00000000000..fb3a9058423 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q38.slt.no @@ -0,0 +1,1493 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT count(*) +FROM + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 ) hot_cust +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_customer_sk = c_customer_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(cs_bill_customer_sk = c_customer_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(ws_bill_customer_sk = c_customer_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "288464", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143657", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143657", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "71632", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "71632", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "0" + } + } +] +physical_plan [ + { + "name": "STREAMING_LIMIT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": [ + "#0 IS NOT DISTINCT FROM #0", + "#1 IS NOT DISTINCT FROM #1", + "#2 IS NOT DISTINCT FROM #2" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "143657" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": [ + "#0 IS NOT DISTINCT FROM #0", + "#1 IS NOT DISTINCT FROM #1", + "#2 IS NOT DISTINCT FROM #2" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q39.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q39.slt.no new file mode 100644 index 00000000000..0b0bd9ab9a0 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q39.slt.no @@ -0,0 +1,969 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH inv AS + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 THEN NULL + ELSE stdev/mean + END cov + FROM + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand)*1.000 stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year =2001 + GROUP BY w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy) foo + WHERE CASE mean + WHEN 0 THEN 0 + ELSE stdev/mean + END > 1) +SELECT inv1.w_warehouse_sk wsk1, + inv1.i_item_sk isk1, + inv1.d_moy dmoy1, + inv1.mean mean1, + inv1.cov cov1, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy=1 + AND inv2.d_moy=1+1 +ORDER BY inv1.w_warehouse_sk NULLS FIRST, + inv1.i_item_sk NULLS FIRST, + inv1.d_moy NULLS FIRST, + inv1.mean NULLS FIRST, + inv1.cov NULLS FIRST, + inv2.d_moy NULLS FIRST, + inv2.mean NULLS FIRST, + inv2.cov NULLS FIRST; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(inv_item_sk = i_item_sk)", + "(inv_warehouse_sk = w_warehouse_sk)", + "(inv_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sk", + "i_item_sk", + "d_moy" + ], + "Expressions": [ + "stddev_samp(CAST(inv_quantity_on_hand AS DOUBLE))", + "avg(inv_quantity_on_hand)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "stdev", + "mean" + ] + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((mean = CAST(0 AS DOUBLE))) THEN (CAST(0 AS DOUBLE)) ELSE (stdev / mean) END > CAST(1 AS DOUBLE))" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "stdev", + "mean", + "cov" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_item_sk = i_item_sk)", + "(w_warehouse_sk = w_warehouse_sk)", + "(d_moy = CAST(1 AS BIGINT))", + "(d_moy = CAST((1 + 1) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "wsk1", + "isk1", + "dmoy1", + "mean1", + "cov1", + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "mean", + "cov" + ] + } + } + ], + "extra_info": { + "Order By": [ + "inv1.w_warehouse_sk", + "inv1.i_item_sk", + "inv1.d_moy", + "inv1.mean", + "inv1.cov", + "inv2.d_moy", + "inv2.mean", + "inv2.cov" + ] + } + } + ], + "extra_info": { + "CTE Name": "inv", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(($.d_moy = 1i64) or ($.d_moy = 2i64))", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)", + "Estimated Cardinality": "46967" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_item_sk = i_item_sk)", + "Estimated Cardinality": "46967" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "46967" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_utinyint(#3, 1)", + "#4" + ], + "Estimated Cardinality": "46967" + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sk", + "i_item_sk", + "d_moy" + ], + "Expressions": [ + "stddev_samp(CAST(inv_quantity_on_hand AS DOUBLE))", + "avg(inv_quantity_on_hand)" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "__internal_decompress_integral_bigint(#3, 1)", + "#4", + "#5" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "stdev", + "mean" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((mean = 0.0)) THEN (0.0) ELSE (stdev / mean) END > 1.0)", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "mean", + "cov" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": "(d_moy = 1)", + "Estimated Cardinality": "46636" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expressions": "(d_moy = 2)", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(i_item_sk = i_item_sk)", + "(w_warehouse_sk = w_warehouse_sk)" + ], + "Estimated Cardinality": "9258" + } + } + ], + "extra_info": { + "Expressions": [ + "wsk1", + "isk1", + "dmoy1", + "mean1", + "cov1", + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "mean", + "cov" + ], + "Estimated Cardinality": "9258" + } + } + ], + "extra_info": { + "Order By": [ + "inv1.w_warehouse_sk", + "inv1.i_item_sk", + "inv1.d_moy", + "inv1.mean", + "inv1.cov", + "inv2.d_moy", + "inv2.mean", + "inv2.cov" + ], + "Estimated Cardinality": "9258" + } + } + ], + "extra_info": { + "CTE Name": "inv", + "Table Index": "0", + "Estimated Cardinality": "9258" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": [ + "d_date_sk", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_date_sk = d_date_sk", + "Estimated Cardinality": "46967" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "i_item_sk", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_item_sk = i_item_sk", + "Estimated Cardinality": "46967" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "46967" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_utinyint(#3, 1)", + "#4" + ], + "Estimated Cardinality": "46967" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "CAST(inv_quantity_on_hand AS DOUBLE)", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "46967" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "stddev_samp(#4)", + "avg(#5)" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "__internal_decompress_integral_bigint(#3, 1)", + "#4", + "#5" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "stdev", + "mean" + ], + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((mean = 0.0)) THEN (0.0) ELSE (stdev / mean) END > 1.0)", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "mean", + "cov" + ], + "Estimated Cardinality": "46636" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expression": "(d_moy = 1)", + "Estimated Cardinality": "46636" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Expression": "(d_moy = 2)", + "Estimated Cardinality": "46636" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "i_item_sk = i_item_sk", + "w_warehouse_sk = w_warehouse_sk" + ], + "Estimated Cardinality": "9258" + } + } + ], + "extra_info": { + "Projections": [ + "wsk1", + "isk1", + "dmoy1", + "mean1", + "cov1", + "w_warehouse_sk", + "i_item_sk", + "d_moy", + "mean", + "cov" + ], + "Estimated Cardinality": "9258" + } + } + ], + "extra_info": { + "Order By": [ + "inv1.w_warehouse_sk ASC", + "inv1.i_item_sk ASC", + "inv1.d_moy ASC", + "inv1.mean ASC", + "inv1.cov ASC", + "inv2.d_moy ASC", + "inv2.mean ASC", + "inv2.cov ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "inv", + "Table Index": "0", + "Estimated Cardinality": "9258" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q4.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q4.slt.no new file mode 100644 index 00000000000..02c7d53aef0 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q4.slt.no @@ -0,0 +1,2585 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2)) year_total, + 'c' sale_type + FROM customer, + catalog_sales, + date_dim + WHERE c_customer_sk = cs_bill_customer_sk + AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2)) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((CAST((CAST(((ss_ext_list_price - ss_ext_wholesale_cost) - ss_ext_discount_amt) AS DECIMAL(10,2)) + CAST(ss_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / CAST(2 AS DOUBLE)))" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "customer_birth_country", + "customer_login", + "customer_email_address", + "dyear", + "year_total", + "sale_type" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = cs_bill_customer_sk)", + "(cs_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((CAST((CAST(((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) AS DECIMAL(10,2)) + CAST(cs_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / CAST(2 AS DOUBLE)))" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "customer_birth_country", + "customer_login", + "customer_email_address", + "dyear", + "year_total", + "sale_type" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ws_bill_customer_sk)", + "(ws_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((CAST((CAST(((ws_ext_list_price - ws_ext_wholesale_cost) - ws_ext_discount_amt) AS DECIMAL(10,2)) + CAST(ws_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / CAST(2 AS DOUBLE)))" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "customer_birth_country", + "customer_login", + "customer_email_address", + "dyear", + "year_total", + "sale_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(sale_type = CAST('s' AS VARCHAR))", + "(sale_type = CAST('c' AS VARCHAR))", + "(sale_type = CAST('w' AS VARCHAR))", + "(sale_type = CAST('s' AS VARCHAR))", + "(sale_type = CAST('c' AS VARCHAR))", + "(sale_type = CAST('w' AS VARCHAR))", + "(dyear = CAST(2001 AS BIGINT))", + "(dyear = CAST((2001 + 1) AS BIGINT))", + "(dyear = CAST(2001 AS BIGINT))", + "(dyear = CAST((2001 + 1) AS BIGINT))", + "(dyear = CAST(2001 AS BIGINT))", + "(dyear = CAST((2001 + 1) AS BIGINT))", + "(year_total > CAST(0 AS DOUBLE))", + "(year_total > CAST(0 AS DOUBLE))", + "(year_total > CAST(0 AS DOUBLE))", + "(CASE WHEN ((year_total > CAST(0 AS DOUBLE))) THEN ((year_total / year_total)) ELSE CAST(NULL AS DOUBLE) END > CASE WHEN ((year_total > CAST(0 AS DOUBLE))) THEN ((year_total / year_total)) ELSE CAST(NULL AS DOUBLE) END)", + "(CASE WHEN ((year_total > CAST(0 AS DOUBLE))) THEN ((year_total / year_total)) ELSE CAST(NULL AS DOUBLE) END > CASE WHEN ((year_total > CAST(0 AS DOUBLE))) THEN ((year_total / year_total)) ELSE CAST(NULL AS DOUBLE) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag" + ] + } + } + ], + "extra_info": { + "Order By": [ + "t_s_secyear.customer_id", + "t_s_secyear.customer_first_name", + "t_s_secyear.customer_last_name", + "t_s_secyear.customer_preferred_cust_flag" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1900)", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((CAST((CAST(((ss_ext_list_price - ss_ext_wholesale_cost) - ss_ext_discount_amt) AS DECIMAL(10,2)) + CAST(ss_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / 2.0))", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.0)))", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1900)", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((CAST((CAST(((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) AS DECIMAL(10,2)) + CAST(cs_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / 2.0))", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.0)))", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1900)", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year" + ], + "Expressions": "sum((CAST((CAST(((ws_ext_list_price - ws_ext_wholesale_cost) - ws_ext_discount_amt) AS DECIMAL(10,2)) + CAST(ws_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / 2.0))", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.0)))", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ] + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2002)", + "(sale_type = 's')" + ], + "Estimated Cardinality": "100749" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2002)", + "(sale_type = 'c')" + ], + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "1015036" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2001)", + "(year_total > 0.0)", + "(sale_type = 'w')" + ], + "Estimated Cardinality": "100749" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2002)", + "(sale_type = 'w')" + ], + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "1015036" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "103029828" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2001)", + "(year_total > 0.0)", + "(sale_type = 's')" + ], + "Estimated Cardinality": "100749" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expressions": [ + "(dyear = 2001)", + "(year_total > 0.0)", + "(sale_type = 'c')" + ], + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "1015036" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Expressions": [ + "(CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END > CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END)", + "(CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END > CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END)" + ], + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag" + ], + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1900)", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year", + "(CAST((CAST(((ss_ext_list_price - ss_ext_wholesale_cost) - ss_ext_discount_amt) AS DECIMAL(10,2)) + CAST(ss_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / 2.0)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "sum(#8)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.0)))", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#7", + "#8" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1900)", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year", + "(CAST((CAST(((cs_ext_list_price - cs_ext_wholesale_cost) - cs_ext_discount_amt) AS DECIMAL(10,2)) + CAST(cs_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / 2.0)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "sum(#8)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.0)))", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#7", + "#8" + ], + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_utinyint(#4, 1900)", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_country", + "c_login", + "c_email_address", + "d_year", + "(CAST((CAST(((ws_ext_list_price - ws_ext_wholesale_cost) - ws_ext_discount_amt) AS DECIMAL(10,2)) + CAST(ws_ext_sales_price AS DECIMAL(10,2))) AS DOUBLE) / 2.0)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "sum(#8)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "__internal_decompress_integral_bigint(#7, 1900)", + "#8" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) OR ((dyear = 2001) AND (year_total > 0.0)))", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#7", + "#8" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag", + "dyear", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": {} + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) AND (sale_type = 's'))", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#5" + ], + "Estimated Cardinality": "100749" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) AND (sale_type = 'c'))", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "1015036" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2001) AND (year_total > 0.0) AND (sale_type = 'w'))", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "100749" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2002) AND (sale_type = 'w'))", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "1015036" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "103029828" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2001) AND (year_total > 0.0) AND (sale_type = 's'))", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "100749" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Expression": "((dyear = 2001) AND (year_total > 0.0) AND (sale_type = 'c'))", + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#5" + ], + "Estimated Cardinality": "100749" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "1015036" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Expression": "((CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END > CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END) AND (CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END > CASE WHEN ((year_total > 0.0)) THEN ((year_total / year_total)) ELSE NULL END))", + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#7" + ], + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "customer_preferred_cust_flag" + ], + "Estimated Cardinality": "18446744073709551615" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "t_s_secyear.customer_id ASC", + "t_s_secyear.customer_first_name ASC", + "t_s_secyear.customer_last_name ASC", + "t_s_secyear.customer_preferred_cust_flag ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q40.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q40.slt.no new file mode 100644 index 00000000000..9caa861c0af --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q40.slt.no @@ -0,0 +1,694 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT w_state, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_after +FROM catalog_sales +LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) ,warehouse, + item, + date_dim +WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = cs_item_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) +GROUP BY w_state, + i_item_id +ORDER BY w_state, + i_item_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_current_price >= CAST(0.99 AS DECIMAL(7,2)))", + "(i_item_sk = cs_item_sk)", + "(cs_warehouse_sk = w_warehouse_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-02-10' AS DATE))", + "(i_current_price <= CAST(1.49 AS DECIMAL(7,2)))", + "(d_date <= CAST('2000-04-10' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_state", + "i_item_id" + ], + "Expressions": [ + "sum(CASE WHEN ((d_date < CAST('2000-03-11' AS DATE))) THEN ((CAST(cs_sales_price AS DECIMAL(13,2)) - COALESCE(CAST(cr_refunded_cash AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))) ELSE CAST(0 AS DECIMAL(13,2)) END)", + "sum(CASE WHEN ((d_date >= CAST('2000-03-11' AS DATE))) THEN ((CAST(cs_sales_price AS DECIMAL(13,2)) - COALESCE(CAST(cr_refunded_cash AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))) ELSE CAST(0 AS DECIMAL(13,2)) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_state", + "i_item_id", + "sales_before", + "sales_after" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.warehouse.w_state", + "memory.main.item.i_item_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_order_number", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number", + "cr_refunded_cash" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(decimal128(99, precision=7, scale=2) <= $.i_current_price <= decimal128(149, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-02-10 <= $.d_date <= 2000-04-10)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "w_state", + "i_item_id" + ], + "Expressions": [ + "sum(CASE WHEN ((d_date < '2000-03-11'::DATE)) THEN ((CAST(cs_sales_price AS DECIMAL(13,2)) - COALESCE(CAST(cr_refunded_cash AS DECIMAL(12,2)), 0.00))) ELSE 0.00 END)", + "sum(CASE WHEN ((d_date >= '2000-03-11'::DATE)) THEN ((CAST(cs_sales_price AS DECIMAL(13,2)) - COALESCE(CAST(cr_refunded_cash AS DECIMAL(12,2)), 0.00))) ELSE 0.00 END)" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Expressions": [ + "w_state", + "i_item_id", + "sales_before", + "sales_after" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_order_number", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_item_sk", + "cr_order_number", + "cr_refunded_cash" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "cs_order_number = cr_order_number", + "cs_item_sk = cr_item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(decimal128(99, precision=7, scale=2) <= $.i_current_price <= decimal128(149, precision=7, scale=2))", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-02-10 <= $.d_date <= 2000-04-10)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "w_state", + "i_item_id", + "CASE WHEN ((d_date < '2000-03-11'::DATE)) THEN ((CAST(cs_sales_price AS DECIMAL(13,2)) - COALESCE(CAST(cr_refunded_cash AS DECIMAL(12,2)), 0.00))) ELSE 0.00 END", + "CASE WHEN ((d_date >= '2000-03-11'::DATE)) THEN ((CAST(cs_sales_price AS DECIMAL(13,2)) - COALESCE(CAST(cr_refunded_cash AS DECIMAL(12,2)), 0.00))) ELSE 0.00 END" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.warehouse.w_state ASC", + "memory.main.item.i_item_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q41.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q41.slt.no new file mode 100644 index 00000000000..86b3e4cb1d0 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q41.slt.no @@ -0,0 +1,533 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT distinct(i_product_name) +FROM item i1 +WHERE i_manufact_id BETWEEN 738 AND 738+40 + AND + (SELECT count(*) AS item_cnt + FROM item + WHERE (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'powder' + OR i_color = 'khaki') + AND (i_units = 'Ounce' + OR i_units = 'Oz') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'brown' + OR i_color = 'honeydew') + AND (i_units = 'Bunch' + OR i_units = 'Ton') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'floral' + OR i_color = 'deep') + AND (i_units = 'N/A' + OR i_units = 'Dozen') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'light' + OR i_color = 'cornflower') + AND (i_units = 'Box' + OR i_units = 'Pound') + AND (i_size = 'medium' + OR i_size = 'extra large')))) + OR (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'midnight' + OR i_color = 'snow') + AND (i_units = 'Pallet' + OR i_units = 'Gross') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'cyan' + OR i_color = 'papaya') + AND (i_units = 'Cup' + OR i_units = 'Dram') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'orange' + OR i_color = 'frosted') + AND (i_units = 'Each' + OR i_units = 'Tbl') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'forest' + OR i_color = 'ghost') + AND (i_units = 'Lb' + OR i_units = 'Bundle') + AND (i_size = 'medium' + OR i_size = 'extra large'))))) > 0 +ORDER BY i_product_name +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(((i_manufact = i_manufact) AND (((i_category = CAST('Women' AS VARCHAR)) AND ((i_color = CAST('powder' AS VARCHAR)) OR (i_color = CAST('khaki' AS VARCHAR))) AND ((i_units = CAST('Ounce' AS VARCHAR)) OR (i_units = CAST('Oz' AS VARCHAR))) AND ((i_size = CAST('medium' AS VARCHAR)) OR (i_size = CAST('extra large' AS VARCHAR)))) OR ((i_category = CAST('Women' AS VARCHAR)) AND ((i_color = CAST('brown' AS VARCHAR)) OR (i_color = CAST('honeydew' AS VARCHAR))) AND ((i_units = CAST('Bunch' AS VARCHAR)) OR (i_units = CAST('Ton' AS VARCHAR))) AND ((i_size = CAST('N/A' AS VARCHAR)) OR (i_size = CAST('small' AS VARCHAR)))) OR ((i_category = CAST('Men' AS VARCHAR)) AND ((i_color = CAST('floral' AS VARCHAR)) OR (i_color = CAST('deep' AS VARCHAR))) AND ((i_units = CAST('N/A' AS VARCHAR)) OR (i_units = CAST('Dozen' AS VARCHAR))) AND ((i_size = CAST('petite' AS VARCHAR)) OR (i_size = CAST('petite' AS VARCHAR)))) OR ((i_category = CAST('Men' AS VARCHAR)) AND ((i_color = CAST('light' AS VARCHAR)) OR (i_color = CAST('cornflower' AS VARCHAR))) AND ((i_units = CAST('Box' AS VARCHAR)) OR (i_units = CAST('Pound' AS VARCHAR))) AND ((i_size = CAST('medium' AS VARCHAR)) OR (i_size = CAST('extra large' AS VARCHAR)))))) OR ((i_manufact = i_manufact) AND (((i_category = CAST('Women' AS VARCHAR)) AND ((i_color = CAST('midnight' AS VARCHAR)) OR (i_color = CAST('snow' AS VARCHAR))) AND ((i_units = CAST('Pallet' AS VARCHAR)) OR (i_units = CAST('Gross' AS VARCHAR))) AND ((i_size = CAST('medium' AS VARCHAR)) OR (i_size = CAST('extra large' AS VARCHAR)))) OR ((i_category = CAST('Women' AS VARCHAR)) AND ((i_color = CAST('cyan' AS VARCHAR)) OR (i_color = CAST('papaya' AS VARCHAR))) AND ((i_units = CAST('Cup' AS VARCHAR)) OR (i_units = CAST('Dram' AS VARCHAR))) AND ((i_size = CAST('N/A' AS VARCHAR)) OR (i_size = CAST('small' AS VARCHAR)))) OR ((i_category = CAST('Men' AS VARCHAR)) AND ((i_color = CAST('orange' AS VARCHAR)) OR (i_color = CAST('frosted' AS VARCHAR))) AND ((i_units = CAST('Each' AS VARCHAR)) OR (i_units = CAST('Tbl' AS VARCHAR))) AND ((i_size = CAST('petite' AS VARCHAR)) OR (i_size = CAST('petite' AS VARCHAR)))) OR ((i_category = CAST('Men' AS VARCHAR)) AND ((i_color = CAST('forest' AS VARCHAR)) OR (i_color = CAST('ghost' AS VARCHAR))) AND ((i_units = CAST('Lb' AS VARCHAR)) OR (i_units = CAST('Bundle' AS VARCHAR))) AND ((i_size = CAST('medium' AS VARCHAR)) OR (i_size = CAST('extra large' AS VARCHAR)))))))" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "item_cnt" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_manufact_id >= CAST(738 AS BIGINT))", + "(SUBQUERY > CAST(0 AS BIGINT))", + "(i_manufact_id <= CAST((738 + 40) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": "i_product_name" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": "i_product_name" + } + } + ], + "extra_info": { + "Order By": "i1.i_product_name" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(738i64 <= $.i_manufact_id <= 778i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact", + "i_product_name" + ], + "Estimated Cardinality": "360" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "227" + } + }, + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(((((($.i_category = \"Women\") and (($.i_color = \"powder\") or ($.i_color = \"khaki\"))) and ((($.i_units = \"Ounce\") or ($.i_units = \"Oz\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))) or ((($.i_category = \"Women\") and (($.i_color = \"brown\") or ($.i_color = \"honeydew\"))) and ((($.i_units = \"Bunch\") or ($.i_units = \"Ton\")) and (($.i_size = \"N/A\") or ($.i_size = \"small\"))))) or (((($.i_category = \"Men\") and (($.i_color = \"floral\") or ($.i_color = \"deep\"))) and ((($.i_units = \"N/A\") or ($.i_units = \"Dozen\")) and ($.i_size = \"petite\"))) or ((($.i_category = \"Men\") and (($.i_color = \"light\") or ($.i_color = \"cornflower\"))) and ((($.i_units = \"Box\") or ($.i_units = \"Pound\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))))) or ((((($.i_category = \"Women\") and (($.i_color = \"midnight\") or ($.i_color = \"snow\"))) and ((($.i_units = \"Pallet\") or ($.i_units = \"Gross\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))) or ((($.i_category = \"Women\") and (($.i_color = \"cyan\") or ($.i_color = \"papaya\"))) and ((($.i_units = \"Cup\") or ($.i_units = \"Dram\")) and (($.i_size = \"N/A\") or ($.i_size = \"small\"))))) or (((($.i_category = \"Men\") and (($.i_color = \"orange\") or ($.i_color = \"frosted\"))) and ((($.i_units = \"Each\") or ($.i_units = \"Tbl\")) and ($.i_size = \"petite\"))) or ((($.i_category = \"Men\") and (($.i_color = \"forest\") or ($.i_color = \"ghost\"))) and ((($.i_units = \"Lb\") or ($.i_units = \"Bundle\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))))))", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "(i_manufact IS NOT NULL)", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_manufact", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Groups": "i_manufact", + "Expressions": "count_star()", + "Estimated Cardinality": "36" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(i_manufact IS NOT DISTINCT FROM #0)", + "Estimated Cardinality": "227" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((item_cnt IS NULL)) THEN (0) ELSE item_cnt END", + "i_manufact" + ], + "Estimated Cardinality": "227" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "(i_manufact IS NOT DISTINCT FROM i_manufact)" + } + } + ], + "extra_info": { + "Expressions": "(SUBQUERY > 0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_product_name", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "360", + "Distinct Targets": "i_product_name" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(738i64 <= $.i_manufact_id <= 778i64)", + "Projections": [ + "i_manufact", + "i_product_name" + ], + "Estimated Cardinality": "360" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "227" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(((((($.i_category = \"Women\") and (($.i_color = \"powder\") or ($.i_color = \"khaki\"))) and ((($.i_units = \"Ounce\") or ($.i_units = \"Oz\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))) or ((($.i_category = \"Women\") and (($.i_color = \"brown\") or ($.i_color = \"honeydew\"))) and ((($.i_units = \"Bunch\") or ($.i_units = \"Ton\")) and (($.i_size = \"N/A\") or ($.i_size = \"small\"))))) or (((($.i_category = \"Men\") and (($.i_color = \"floral\") or ($.i_color = \"deep\"))) and ((($.i_units = \"N/A\") or ($.i_units = \"Dozen\")) and ($.i_size = \"petite\"))) or ((($.i_category = \"Men\") and (($.i_color = \"light\") or ($.i_color = \"cornflower\"))) and ((($.i_units = \"Box\") or ($.i_units = \"Pound\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))))) or ((((($.i_category = \"Women\") and (($.i_color = \"midnight\") or ($.i_color = \"snow\"))) and ((($.i_units = \"Pallet\") or ($.i_units = \"Gross\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))) or ((($.i_category = \"Women\") and (($.i_color = \"cyan\") or ($.i_color = \"papaya\"))) and ((($.i_units = \"Cup\") or ($.i_units = \"Dram\")) and (($.i_size = \"N/A\") or ($.i_size = \"small\"))))) or (((($.i_category = \"Men\") and (($.i_color = \"orange\") or ($.i_color = \"frosted\"))) and ((($.i_units = \"Each\") or ($.i_units = \"Tbl\")) and ($.i_size = \"petite\"))) or ((($.i_category = \"Men\") and (($.i_color = \"forest\") or ($.i_color = \"ghost\"))) and ((($.i_units = \"Lb\") or ($.i_units = \"Bundle\")) and (($.i_size = \"medium\") or ($.i_size = \"extra large\")))))))", + "Projections": "i_manufact", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expression": "(i_manufact IS NOT NULL)", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Projections": "i_manufact", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "count_star()", + "Estimated Cardinality": "36" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_manufact IS NOT DISTINCT FROM #0", + "Estimated Cardinality": "227" + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((item_cnt IS NULL)) THEN (0) ELSE item_cnt END", + "i_manufact" + ], + "Estimated Cardinality": "227" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "i_manufact IS NOT DISTINCT FROM i_manufact", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "227" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "i_manufact IS NOT DISTINCT FROM i_manufact", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(SUBQUERY > 0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Projections": "i_product_name", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "i1.i_product_name ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q42.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q42.slt.no new file mode 100644 index 00000000000..cf2d5ea108c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q42.slt.no @@ -0,0 +1,519 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT dt.d_year, + item.i_category_id, + item.i_category, + sum(ss_ext_sales_price) +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_category_id, + item.i_category +ORDER BY sum(ss_ext_sales_price) DESC,dt.d_year, + item.i_category_id, + item.i_category +LIMIT 100 ; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(ss_item_sk = i_item_sk)", + "(i_manager_id = CAST(1 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_category_id", + "i_category" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_category_id", + "i_category", + "sum(ss_ext_sales_price)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sum(memory.main.store_sales.ss_ext_sales_price)", + "dt.d_year", + "memory.main.item.i_category_id", + "memory.main.item.i_category" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manager_id = 1i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_category_id", + "i_category" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#1, 2000)", + "#0", + "__internal_compress_integral_utinyint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_category_id", + "i_category" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_category_id", + "i_category", + "sum(ss_ext_sales_price)" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2000", + "d_moy=11" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manager_id=1", + "Projections": [ + "i_item_sk", + "i_category_id", + "i_category" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#1, 2000)", + "#0", + "__internal_compress_integral_utinyint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_category_id", + "i_category", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "sum(#3)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sum(memory.main.store_sales.ss_ext_sales_price) DESC", + "dt.d_year ASC", + "memory.main.item.i_category_id ASC", + "memory.main.item.i_category ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q43.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q43.slt.no new file mode 100644 index 00000000000..f51df314388 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q43.slt.no @@ -0,0 +1,541 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT s_store_name, + s_store_id, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales +FROM date_dim, + store_sales, + store +WHERE d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2000 +GROUP BY s_store_name, + s_store_id +ORDER BY s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(s_store_sk = ss_store_sk)", + "(CAST(s_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))", + "(d_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "s_store_name", + "s_store_id" + ], + "Expressions": [ + "sum(CASE WHEN ((d_day_name = CAST('Sunday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Monday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Tuesday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Wednesday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Thursday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Friday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Saturday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "s_store_id", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.store.s_store_name", + "memory.main.store.s_store_id", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Sunday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Monday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Tuesday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Wednesday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Thursday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Friday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Saturday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_day_name" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "s_store_name", + "s_store_id" + ], + "Expressions": [ + "sum(CASE WHEN ((d_day_name = 'Sunday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Monday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Tuesday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Wednesday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Thursday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Friday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Saturday')) THEN (ss_sales_price) ELSE NULL END)" + ], + "Estimated Cardinality": "57668" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "s_store_id", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" + ], + "Estimated Cardinality": "57668" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": [ + "d_date_sk", + "d_day_name" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_gmt_offset=-5.00", + "Projections": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name", + "s_store_id", + "CASE WHEN ((d_day_name = 'Sunday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Monday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Tuesday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Wednesday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Thursday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Friday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Saturday')) THEN (ss_sales_price) ELSE NULL END" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)", + "sum(#4)", + "sum(#5)", + "sum(#6)", + "sum(#7)", + "sum(#8)" + ], + "Estimated Cardinality": "57668" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.store.s_store_name ASC", + "memory.main.store.s_store_id ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Sunday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Monday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Tuesday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Wednesday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Thursday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Friday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC", + "sum(CASE WHEN ((memory.main.date_dim.d_day_name = 'Saturday')) THEN (memory.main.store_sales.ss_sales_price) ELSE NULL END) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q44.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q44.slt.no new file mode 100644 index 00000000000..f390453071c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q44.slt.no @@ -0,0 +1,1379 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col ASC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V1)V11 + WHERE rnk < 11) asceding, + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col DESC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V2)V21 + WHERE rnk < 11) descending, + item i1, + item i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk=asceding.item_sk + AND i2.i_item_sk=descending.item_sk +ORDER BY asceding.rnk +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "(ss_store_sk = CAST(4 AS BIGINT))" + } + } + ], + "extra_info": { + "Groups": "ss_item_sk", + "Expressions": "avg(ss_net_profit)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_store_sk = CAST(4 AS BIGINT))", + "(ss_addr_sk IS NULL)" + ] + } + } + ], + "extra_info": { + "Groups": "ss_store_sk", + "Expressions": "avg(ss_net_profit)" + } + } + ], + "extra_info": { + "Expressions": "rank_col" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[20.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[26.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[26.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(avg(ss_net_profit) > (CAST(0.9 AS DOUBLE) * SUBQUERY))" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rank_col" + ] + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (ORDER BY rank_col ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ] + } + } + ], + "extra_info": { + "Expressions": "(rnk < CAST(11 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "(ss_store_sk = CAST(4 AS BIGINT))" + } + } + ], + "extra_info": { + "Groups": "ss_item_sk", + "Expressions": "avg(ss_net_profit)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_store_sk = CAST(4 AS BIGINT))", + "(ss_addr_sk IS NULL)" + ] + } + } + ], + "extra_info": { + "Groups": "ss_store_sk", + "Expressions": "avg(ss_net_profit)" + } + } + ], + "extra_info": { + "Expressions": "rank_col" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[61.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[67.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[67.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(avg(ss_net_profit) > (CAST(0.9 AS DOUBLE) * SUBQUERY))" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rank_col" + ] + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (ORDER BY rank_col DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ] + } + } + ], + "extra_info": { + "Expressions": "(rnk < CAST(11 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(rnk = rnk)", + "(i_item_sk = item_sk)", + "(i_item_sk = item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "rnk", + "best_performing", + "worst_performing" + ] + } + } + ], + "extra_info": { + "Order By": "asceding.rnk" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "ss_item_sk", + "Expressions": "avg(ss_net_profit)", + "Estimated Cardinality": "10457" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "ss_store_sk", + "Expressions": "avg(ss_net_profit)", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Expressions": "rank_col", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(avg(ss_net_profit) > (0.9 * SUBQUERY))", + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rank_col" + ], + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (ORDER BY rank_col ASC NULLS LAST)", + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expressions": "(rnk < 11)", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ], + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ], + "Estimated Cardinality": "4" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "ss_item_sk", + "Expressions": "avg(ss_net_profit)", + "Estimated Cardinality": "10457" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "ss_store_sk", + "Expressions": "avg(ss_net_profit)", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Expressions": "rank_col", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(avg(ss_net_profit) > (0.9 * SUBQUERY))", + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rank_col" + ], + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (ORDER BY rank_col DESC NULLS LAST)", + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expressions": "(rnk < 11)", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ], + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "rnk" + ], + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(rnk = rnk)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(i_item_sk = item_sk)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(i_item_sk = item_sk)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "rnk", + "best_performing", + "worst_performing" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "0" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "ss_item_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "10457" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Projections": "rank_col", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "avg(ss_net_profit) > (0.9 * SUBQUERY)", + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Projections": [ + "item_sk", + "rank_col" + ], + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY rank_col ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expression": "(rnk < 11)", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#2" + ], + "Estimated Cardinality": "4" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "ss_item_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "10457" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Projections": "rank_col", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "10457" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "avg(ss_net_profit) > (0.9 * SUBQUERY)", + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Projections": [ + "item_sk", + "rank_col" + ], + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY rank_col DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "21" + } + } + ], + "extra_info": { + "Expression": "(rnk < 11)", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#2" + ], + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "rnk = rnk", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "i_item_sk = item_sk", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "i_item_sk = item_sk", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": [ + "rnk", + "best_performing", + "worst_performing" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "asceding.rnk ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q45.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q45.slt.no new file mode 100644 index 00000000000..c56cf22337b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q45.slt.no @@ -0,0 +1,857 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT ca_zip, + ca_city, + sum(ws_sales_price) +FROM web_sales, + customer, + customer_address, + date_dim, + item +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND (SUBSTRING(ca_zip,1,5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_item_sk IN (2, + 3, + 5, + 7, + 11, + 13, + 17, + 19, + 23, + 29) )) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip, + ca_city +ORDER BY ca_zip, + ca_city +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_item_sk IN (CAST(2 AS BIGINT), CAST(3 AS BIGINT), CAST(5 AS BIGINT), CAST(7 AS BIGINT), CAST(11 AS BIGINT), CAST(13 AS BIGINT), CAST(17 AS BIGINT), CAST(19 AS BIGINT), CAST(23 AS BIGINT), CAST(29 AS BIGINT)))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[48.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_bill_customer_sk = c_customer_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(ws_item_sk = i_item_sk)", + "((\"substring\"(ca_zip, CAST(1 AS BIGINT), CAST(5 AS BIGINT)) IN (CAST('85669' AS VARCHAR), CAST('86197' AS VARCHAR), CAST('88274' AS VARCHAR), CAST('83405' AS VARCHAR), CAST('86475' AS VARCHAR), CAST('85392' AS VARCHAR), CAST('85460' AS VARCHAR), CAST('80348' AS VARCHAR), CAST('81792' AS VARCHAR))) OR SUBQUERY)", + "(ws_sold_date_sk = d_date_sk)", + "(d_qoy = CAST(2 AS BIGINT))", + "(d_year = CAST(2001 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ca_zip", + "ca_city" + ], + "Expressions": "sum(ws_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_zip", + "ca_city", + "sum(ws_sales_price)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer_address.ca_zip", + "memory.main.customer_address.ca_city" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_qoy = 2i64)", + "($.d_year = 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_city", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([2i64, 3i64, 5i64, 7i64, 11i64, 13i64, 17i64, 19i64, 23i64, 29i64], $.i_item_sk)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "CHUNK_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(\"substring\"(ca_zip, 1, 5) = #0)", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": "(IN (...) OR SUBQUERY)", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Groups": [ + "ca_zip", + "ca_city" + ], + "Expressions": "sum(ws_sales_price)", + "Estimated Cardinality": "2863" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_zip", + "ca_city", + "sum(ws_sales_price)" + ], + "Estimated Cardinality": "2863" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_qoy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_city", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([2i64, 3i64, 5i64, 7i64, 11i64, 13i64, 17i64, 19i64, 23i64, 29i64], $.i_item_sk)", + "Projections": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "14322" + } + }, + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "\"substring\"(ca_zip, 1, 5) = #0", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expression": "(IN (...) OR SUBQUERY)", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "ca_zip", + "ca_city", + "ws_sales_price" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "2863" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer_address.ca_zip ASC", + "memory.main.customer_address.ca_city ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q46.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q46.slt.no new file mode 100644 index 00000000000..068f313a039 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q46.slt.no @@ -0,0 +1,1022 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_dow IN (6, + 0) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + ca_city NULLS FIRST, + bought_city NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_addr_sk = ca_address_sk)", + "((hd_dep_count = CAST(4 AS BIGINT)) OR (hd_vehicle_count = CAST(3 AS INTEGER)))", + "(d_dow IN (CAST(6 AS BIGINT), CAST(0 AS BIGINT)))", + "(d_year IN (CAST(1999 AS BIGINT), CAST((1999 + 1) AS BIGINT), CAST((1999 + 2) AS BIGINT)))", + "(s_city IN (CAST('Fairview' AS VARCHAR), CAST('Midway' AS VARCHAR)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "ca_city" + ], + "Expressions": [ + "sum(ss_coupon_amt)", + "sum(ss_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "bought_city", + "amt", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_customer_sk = c_customer_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(ca_city != bought_city)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number", + "amt", + "profit" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_last_name", + "memory.main.customer.c_first_name", + "current_addr.ca_city", + "dn.bought_city", + "dn.ss_ticket_number" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_coupon_amt", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([6i64, 0i64], $.d_dow)", + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Fairview\", \"Midway\"], $.s_city)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(($.hd_dep_count = 4i64) or ($.hd_vehicle_count = 3i32))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "ca_city" + ], + "Expressions": [ + "sum(ss_coupon_amt)", + "sum(ss_net_profit)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "bought_city", + "amt", + "profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_customer_sk = c_customer_sk)", + "(bought_city != ca_city)" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number", + "amt", + "profit" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_coupon_amt", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([6i64, 0i64], $.d_dow)", + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Fairview\", \"Midway\"], $.s_city)", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(($.hd_dep_count = 4i64) or ($.hd_vehicle_count = 3i32))", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "ca_city", + "ss_coupon_amt", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "sum(#4)", + "sum(#5)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk", + "bought_city", + "amt", + "profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_customer_sk = c_customer_sk", + "bought_city != ca_city" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number", + "amt", + "profit" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer.c_last_name ASC", + "memory.main.customer.c_first_name ASC", + "current_addr.ca_city ASC", + "dn.bought_city ASC", + "dn.ss_ticket_number ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q47.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q47.slt.no new file mode 100644 index 00000000000..d57d23fb301 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q47.slt.no @@ -0,0 +1,1255 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH v1 AS + (SELECT i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name + ORDER BY d_year, + d_moy) rn + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.s_store_name, + v1.s_company_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "((d_year = CAST(1999 AS BIGINT)) OR ((d_year = CAST((1999 - 1) AS BIGINT)) AND (d_moy = CAST(12 AS BIGINT))) OR ((d_year = CAST((1999 + 1) AS BIGINT)) AND (d_moy = CAST(1 AS BIGINT))))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name, d_year)", + "RANK() OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name ORDER BY d_year ASC NULLS LAST, d_moy ASC NULLS LAST)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "rn" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_category = i_category)", + "(i_category = i_category)", + "(i_brand = i_brand)", + "(i_brand = i_brand)", + "(s_store_name = s_store_name)", + "(s_store_name = s_store_name)", + "(s_company_name = s_company_name)", + "(s_company_name = s_company_name)", + "(rn = (rn + CAST(1 AS BIGINT)))", + "(rn = (rn - CAST(1 AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(1999 AS BIGINT))", + "(avg_monthly_sales > CAST(0 AS DOUBLE))", + "(CASE WHEN ((avg_monthly_sales > CAST(0 AS DOUBLE))) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE CAST(NULL AS DOUBLE) END > CAST(0.1 AS DOUBLE))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "#[46.10]", + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "#[46.0]", + "#[46.1]", + "#[46.2]", + "#[46.3]", + "#[46.4]", + "#[46.5]", + "#[46.6]", + "#[46.7]", + "#[46.8]", + "#[46.9]" + ] + } + } + ], + "extra_info": { + "CTE Name": "v2", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "v1", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((($.d_year = 1999i64) or (($.d_year = 1998i64) and ($.d_moy = 12i64))) or (($.d_year = 2000i64) and ($.d_moy = 1i64)))", + "((($.d_year = 1999i64) or ($.d_year = 1998i64)) or ($.d_year = 2000i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_name", + "s_company_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_decompress_integral_bigint(#4, 1900)", + "__internal_decompress_integral_bigint(#5, 1)", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name, d_year)", + "RANK() OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name ORDER BY d_year ASC NULLS LAST, d_moy ASC NULLS LAST)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "rn" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288464" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(i_category = i_category)", + "(i_brand = i_brand)", + "(s_store_name = s_store_name)", + "(s_company_name = s_company_name)", + "((rn + 1) = (rn - 1))" + ], + "Estimated Cardinality": "46228599" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = 1999)", + "(avg_monthly_sales > 0.0)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(i_category = i_category)", + "(i_brand = i_brand)", + "(s_store_name = s_store_name)", + "(s_company_name = s_company_name)", + "((rn - 1) = rn)", + "((rn + 1) = rn)" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_monthly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "v1", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "((($.d_year = 1999i64) or (($.d_year = 1998i64) and ($.d_moy = 12i64))) or (($.d_year = 2000i64) and ($.d_moy = 1i64)))", + "((($.d_year = 1999i64) or ($.d_year = 1998i64)) or ($.d_year = 2000i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_name", + "s_company_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Aggregates": "sum(#6)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_decompress_integral_bigint(#4, 1900)", + "__internal_decompress_integral_bigint(#5, 1)", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name, d_year)" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name ORDER BY d_year ASC NULLS LAST, d_moy ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288464" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "i_category = i_category", + "i_brand = i_brand", + "s_store_name = s_store_name", + "s_company_name = s_company_name", + "(rn + 1) = (rn - 1)" + ], + "Estimated Cardinality": "46228599" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expression": "((d_year = 1999) AND (avg_monthly_sales > 0.0))", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "i_category = i_category", + "i_brand = i_brand", + "s_store_name = s_store_name", + "s_company_name = s_company_name", + "(rn - 1) = rn", + "(rn + 1) = rn" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((avg_monthly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_brand", + "s_store_name", + "s_company_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ], + "Estimated Cardinality": "7408492643" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "#10 ASC", + "i_category ASC", + "i_brand ASC", + "s_store_name ASC", + "s_company_name ASC", + "d_year ASC", + "d_moy ASC", + "avg_monthly_sales ASC", + "sum_sales ASC", + "psum ASC", + "nsum ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "v1", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q48.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q48.slt.no new file mode 100644 index 00000000000..3d865a4b15f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q48.slt.no @@ -0,0 +1,647 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT SUM (ss_quantity) +FROM store_sales, + store, + customer_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2000 + AND ((cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = '4 yr Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 150.00 AND 200.00)) + AND ((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('CO', + 'OH', + 'TX') + AND ss_net_profit BETWEEN 0 AND 2000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', + 'MN', + 'KY') + AND ss_net_profit BETWEEN 150 AND 3000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', + 'CA', + 'MS') + AND ss_net_profit BETWEEN 50 AND 25000)) ; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(s_store_sk = ss_store_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2000 AS BIGINT))", + "(((cd_demo_sk = ss_cdemo_sk) AND (cd_marital_status = CAST('M' AS VARCHAR)) AND (cd_education_status = CAST('4 yr Degree' AS VARCHAR)) AND ((ss_sales_price >= CAST(100.00 AS DECIMAL(7,2))) AND (ss_sales_price <= CAST(150.00 AS DECIMAL(7,2))))) OR ((cd_demo_sk = ss_cdemo_sk) AND (cd_marital_status = CAST('D' AS VARCHAR)) AND (cd_education_status = CAST('2 yr Degree' AS VARCHAR)) AND ((ss_sales_price >= CAST(50.00 AS DECIMAL(7,2))) AND (ss_sales_price <= CAST(100.00 AS DECIMAL(7,2))))) OR ((cd_demo_sk = ss_cdemo_sk) AND (cd_marital_status = CAST('S' AS VARCHAR)) AND (cd_education_status = CAST('College' AS VARCHAR)) AND ((ss_sales_price >= CAST(150.00 AS DECIMAL(7,2))) AND (ss_sales_price <= CAST(200.00 AS DECIMAL(7,2))))))", + "(((ss_addr_sk = ca_address_sk) AND (ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('CO' AS VARCHAR), CAST('OH' AS VARCHAR), CAST('TX' AS VARCHAR))) AND ((CAST(ss_net_profit AS DECIMAL(12,2)) >= CAST(0 AS DECIMAL(12,2))) AND (CAST(ss_net_profit AS DECIMAL(12,2)) <= CAST(2000 AS DECIMAL(12,2))))) OR ((ss_addr_sk = ca_address_sk) AND (ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('OR' AS VARCHAR), CAST('MN' AS VARCHAR), CAST('KY' AS VARCHAR))) AND ((CAST(ss_net_profit AS DECIMAL(12,2)) >= CAST(150 AS DECIMAL(12,2))) AND (CAST(ss_net_profit AS DECIMAL(12,2)) <= CAST(3000 AS DECIMAL(12,2))))) OR ((ss_addr_sk = ca_address_sk) AND (ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('VA' AS VARCHAR), CAST('CA' AS VARCHAR), CAST('MS' AS VARCHAR))) AND ((CAST(ss_net_profit AS DECIMAL(12,2)) >= CAST(50 AS DECIMAL(12,2))) AND (CAST(ss_net_profit AS DECIMAL(12,2)) <= CAST(25000 AS DECIMAL(12,2))))))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ss_quantity)" + } + } + ], + "extra_info": { + "Expressions": "sum(ss_quantity)" + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2i64 <= $.cd_demo_sk <= 192076i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_cdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_quantity", + "ss_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_country = \"United States\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": "((((ss_net_profit >= 0.00) AND (ss_net_profit <= 2000.00)) AND ((ca_state = 'CO') OR (ca_state = 'OH') OR (ca_state = 'TX'))) OR (((ss_net_profit >= 150.00) AND (ss_net_profit <= 3000.00)) AND ((ca_state = 'OR') OR (ca_state = 'MN') OR (ca_state = 'KY'))) OR (((ss_net_profit >= 50.00) AND (ss_net_profit <= 25000.00)) AND ((ca_state = 'VA') OR (ca_state = 'CA') OR (ca_state = 'MS'))))", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = ss_cdemo_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": "((((ss_sales_price >= 100.00) AND (ss_sales_price <= 150.00)) AND (cd_marital_status = 'M') AND (cd_education_status = '4 yr Degree')) OR (((ss_sales_price >= 50.00) AND (ss_sales_price <= 100.00)) AND (cd_marital_status = 'D') AND (cd_education_status = '2 yr Degree')) OR (((ss_sales_price >= 150.00) AND (ss_sales_price <= 200.00)) AND (cd_marital_status = 'S') AND (cd_education_status = 'College')))", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ss_quantity)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "sum(ss_quantity)", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2i64 <= $.cd_demo_sk <= 192076i64)", + "Projections": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_cdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_quantity", + "ss_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_country='United States'", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expression": "((((ss_net_profit >= 0.00) AND (ss_net_profit <= 2000.00)) AND ((ca_state = 'CO') OR (ca_state = 'OH') OR (ca_state = 'TX'))) OR (((ss_net_profit >= 150.00) AND (ss_net_profit <= 3000.00)) AND ((ca_state = 'OR') OR (ca_state = 'MN') OR (ca_state = 'KY'))) OR (((ss_net_profit >= 50.00) AND (ss_net_profit <= 25000.00)) AND ((ca_state = 'VA') OR (ca_state = 'CA') OR (ca_state = 'MS'))))", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = ss_cdemo_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expression": "((((ss_sales_price >= 100.00) AND (ss_sales_price <= 150.00)) AND (cd_marital_status = 'M') AND (cd_education_status = '4 yr Degree')) OR (((ss_sales_price >= 50.00) AND (ss_sales_price <= 100.00)) AND (cd_marital_status = 'D') AND (cd_education_status = '2 yr Degree')) OR (((ss_sales_price >= 150.00) AND (ss_sales_price <= 200.00)) AND (cd_marital_status = 'S') AND (cd_education_status = 'College')))", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": "#2", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": "ss_quantity", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Aggregates": "sum(#0)" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q49.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q49.slt.no new file mode 100644 index 00000000000..3a29aa994f2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q49.slt.no @@ -0,0 +1,2323 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT channel, + item, + return_ratio, + return_rank, + currency_rank +FROM + (SELECT 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT ws.ws_item_sk AS item, + (cast(sum(coalesce(wr.wr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(wr.wr_return_amt,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM web_sales ws + LEFT OUTER JOIN web_returns wr ON (ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk) ,date_dim + WHERE wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY ws.ws_item_sk) in_web) web + WHERE (web.return_rank <= 10 + OR web.currency_rank <= 10) + UNION SELECT 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT cs.cs_item_sk AS item, + (cast(sum(coalesce(cr.cr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(cr.cr_return_amount,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM catalog_sales cs + LEFT OUTER JOIN catalog_returns cr ON (cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk) ,date_dim + WHERE cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY cs.cs_item_sk) in_cat) CATALOG + WHERE (catalog.return_rank <= 10 + OR catalog.currency_rank <=10) + UNION SELECT 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT sts.ss_item_sk AS item, + (cast(sum(coalesce(sr.sr_return_quantity,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(sr.sr_return_amt,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM store_sales sts + LEFT OUTER JOIN store_returns sr ON (sts.ss_ticket_number = sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk) ,date_dim + WHERE sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY sts.ss_item_sk) in_store) store + WHERE (store.return_rank <= 10 + OR store.currency_rank <= 10) ) sq1 +ORDER BY 1 NULLS FIRST, + 4 NULLS FIRST, + 5 NULLS FIRST, + 2 NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_order_number = wr_order_number)", + "(ws_item_sk = wr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(wr_return_amt AS DECIMAL(12,2)) > CAST(10000 AS DECIMAL(12,2)))", + "(CAST(ws_net_profit AS DECIMAL(12,2)) > CAST(1 AS DECIMAL(12,2)))", + "(CAST(ws_net_paid AS DECIMAL(12,2)) > CAST(0 AS DECIMAL(12,2)))", + "(ws_quantity > CAST(0 AS BIGINT))", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(12 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "ws_item_sk", + "Expressions": [ + "sum(COALESCE(wr_return_quantity, CAST(0 AS BIGINT)))", + "sum(COALESCE(ws_quantity, CAST(0 AS BIGINT)))", + "sum(COALESCE(CAST(wr_return_amt AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))", + "sum(COALESCE(CAST(ws_net_paid AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)", + "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Expressions": "((return_rank <= CAST(10 AS BIGINT)) OR (currency_rank <= CAST(10 AS BIGINT)))" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(cr_return_amount AS DECIMAL(12,2)) > CAST(10000 AS DECIMAL(12,2)))", + "(CAST(cs_net_profit AS DECIMAL(12,2)) > CAST(1 AS DECIMAL(12,2)))", + "(CAST(cs_net_paid AS DECIMAL(12,2)) > CAST(0 AS DECIMAL(12,2)))", + "(cs_quantity > CAST(0 AS BIGINT))", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(12 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "cs_item_sk", + "Expressions": [ + "sum(COALESCE(cr_return_quantity, CAST(0 AS BIGINT)))", + "sum(COALESCE(cs_quantity, CAST(0 AS BIGINT)))", + "sum(COALESCE(CAST(cr_return_amount AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))", + "sum(COALESCE(CAST(cs_net_paid AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)", + "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Expressions": "((return_rank <= CAST(10 AS BIGINT)) OR (currency_rank <= CAST(10 AS BIGINT)))" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(sr_return_amt AS DECIMAL(12,2)) > CAST(10000 AS DECIMAL(12,2)))", + "(CAST(ss_net_profit AS DECIMAL(12,2)) > CAST(1 AS DECIMAL(12,2)))", + "(CAST(ss_net_paid AS DECIMAL(12,2)) > CAST(0 AS DECIMAL(12,2)))", + "(ss_quantity > CAST(0 AS BIGINT))", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(12 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "ss_item_sk", + "Expressions": [ + "sum(COALESCE(sr_return_quantity, CAST(0 AS BIGINT)))", + "sum(COALESCE(ss_quantity, CAST(0 AS BIGINT)))", + "sum(COALESCE(CAST(sr_return_amt AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))", + "sum(COALESCE(CAST(ss_net_paid AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)", + "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Expressions": "((return_rank <= CAST(10 AS BIGINT)) OR (currency_rank <= CAST(10 AS BIGINT)))" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Order By": [ + "channel", + "return_rank", + "currency_rank", + "item" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.ws_net_profit > decimal128(100, precision=7, scale=2))", + "($.ws_net_paid > decimal128(0, precision=7, scale=2))", + "($.ws_quantity > 0i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_order_number", + "ws_quantity", + "ws_net_paid" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 12i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "2921" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.wr_return_amt > decimal128(1000000, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1407" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_item_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt" + ], + "Estimated Cardinality": "1407" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ws_order_number = wr_order_number)", + "(ws_item_sk = wr_item_sk)" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "ws_item_sk", + "Expressions": [ + "sum(COALESCE(wr_return_quantity, 0))", + "sum(COALESCE(ws_quantity, 0))", + "sum(COALESCE(CAST(wr_return_amt AS DECIMAL(12,2)), 0.00))", + "sum(COALESCE(CAST(ws_net_paid AS DECIMAL(12,2)), 0.00))" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Expressions": [ + "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)", + "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Expressions": "((return_rank <= 10) OR (currency_rank <= 10))", + "Estimated Cardinality": "528" + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "528" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "528" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.cs_net_profit > decimal128(100, precision=7, scale=2))", + "($.cs_net_paid > decimal128(0, precision=7, scale=2))", + "($.cs_quantity > 0i64)", + "(2i64 <= $.cs_order_number <= 15999i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_order_number", + "cs_quantity", + "cs_net_paid" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 12i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.cr_return_amount > decimal128(1000000, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "2855" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount" + ], + "Estimated Cardinality": "2855" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": "cs_item_sk", + "Expressions": [ + "sum(COALESCE(cr_return_quantity, 0))", + "sum(COALESCE(cs_quantity, 0))", + "sum(COALESCE(CAST(cr_return_amount AS DECIMAL(12,2)), 0.00))", + "sum(COALESCE(CAST(cs_net_paid AS DECIMAL(12,2)), 0.00))" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Expressions": [ + "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)", + "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Expressions": "((return_rank <= 10) OR (currency_rank <= 10))", + "Estimated Cardinality": "1041" + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "1041" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "1041" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.ss_net_profit > decimal128(100, precision=7, scale=2))", + "($.ss_net_paid > decimal128(0, precision=7, scale=2))", + "($.ss_quantity > 0i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ticket_number", + "ss_quantity", + "ss_net_paid" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 12i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.sr_return_amt > decimal128(1000000, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "5715" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt" + ], + "Estimated Cardinality": "5715" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "ss_item_sk", + "Expressions": [ + "sum(COALESCE(sr_return_quantity, 0))", + "sum(COALESCE(ss_quantity, 0))", + "sum(COALESCE(CAST(sr_return_amt AS DECIMAL(12,2)), 0.00))", + "sum(COALESCE(CAST(ss_net_paid AS DECIMAL(12,2)), 0.00))" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "currency_ratio" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Expressions": [ + "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)", + "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Expressions": "((return_rank <= 10) OR (currency_rank <= 10))", + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": [ + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_string_ubigint(#0)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "2091", + "Distinct Targets": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_string(#0)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "($.ws_net_profit > decimal128(100, precision=7, scale=2))", + "($.ws_net_paid > decimal128(0, precision=7, scale=2))", + "($.ws_quantity > 0i64)" + ], + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_order_number", + "ws_quantity", + "ws_net_paid" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=12" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "2921" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.wr_return_amt > decimal128(1000000, precision=7, scale=2))", + "Projections": [ + "wr_item_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt" + ], + "Estimated Cardinality": "1407" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ws_order_number = wr_order_number", + "ws_item_sk = wr_item_sk" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": [ + "ws_item_sk", + "COALESCE(wr_return_quantity, 0)", + "COALESCE(ws_quantity, 0)", + "COALESCE(CAST(wr_return_amt AS DECIMAL(12,2)), 0.00)", + "COALESCE(CAST(ws_net_paid AS DECIMAL(12,2)), 0.00)" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Projections": [ + "item", + "return_ratio", + "currency_ratio" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2642" + } + } + ], + "extra_info": { + "Expression": "((return_rank <= 10) OR (currency_rank <= 10))", + "Estimated Cardinality": "528" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#3", + "#4" + ], + "Estimated Cardinality": "528" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "528" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "($.cs_net_profit > decimal128(100, precision=7, scale=2))", + "($.cs_net_paid > decimal128(0, precision=7, scale=2))", + "($.cs_quantity > 0i64)", + "(2i64 <= $.cs_order_number <= 15999i64)" + ], + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_order_number", + "cs_quantity", + "cs_net_paid" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=12" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.cr_return_amount > decimal128(1000000, precision=7, scale=2))", + "Projections": [ + "cr_item_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount" + ], + "Estimated Cardinality": "2855" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cs_order_number = cr_order_number", + "cs_item_sk = cr_item_sk" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "cs_item_sk", + "COALESCE(cr_return_quantity, 0)", + "COALESCE(cs_quantity, 0)", + "COALESCE(CAST(cr_return_amount AS DECIMAL(12,2)), 0.00)", + "COALESCE(CAST(cs_net_paid AS DECIMAL(12,2)), 0.00)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Projections": [ + "item", + "return_ratio", + "currency_ratio" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "5206" + } + } + ], + "extra_info": { + "Expression": "((return_rank <= 10) OR (currency_rank <= 10))", + "Estimated Cardinality": "1041" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#3", + "#4" + ], + "Estimated Cardinality": "1041" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "1041" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "($.ss_net_profit > decimal128(100, precision=7, scale=2))", + "($.ss_net_paid > decimal128(0, precision=7, scale=2))", + "($.ss_quantity > 0i64)" + ], + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ticket_number", + "ss_quantity", + "ss_net_paid" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=12" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.sr_return_amt > decimal128(1000000, precision=7, scale=2))", + "Projections": [ + "sr_item_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt" + ], + "Estimated Cardinality": "5715" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_ticket_number = sr_ticket_number", + "ss_item_sk = sr_item_sk" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "ss_item_sk", + "COALESCE(sr_return_quantity, 0)", + "COALESCE(ss_quantity, 0)", + "COALESCE(CAST(sr_return_amt AS DECIMAL(12,2)), 0.00)", + "COALESCE(CAST(ss_net_paid AS DECIMAL(12,2)), 0.00)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Projections": [ + "item", + "return_ratio", + "currency_ratio" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY return_ratio ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (ORDER BY currency_ratio ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "10455" + } + } + ], + "extra_info": { + "Expression": "((return_rank <= 10) OR (currency_rank <= 10))", + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#3", + "#4" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "", + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_string_ubigint(#0)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "item", + "return_ratio", + "return_rank", + "currency_rank" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "", + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_string(#0)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "2091" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "channel ASC", + "return_rank ASC", + "currency_rank ASC", + "item ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q5.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q5.slt.no new file mode 100644 index 00000000000..ca9661e6e93 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q5.slt.no @@ -0,0 +1,2392 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ssr AS + (SELECT s_store_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM store_sales + UNION ALL SELECT sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns ) salesreturns, + date_dim, + store + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND store_sk = s_store_sk + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM catalog_sales + UNION ALL SELECT cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns ) salesreturns, + date_dim, + catalog_page + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM web_sales + UNION ALL SELECT ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN web_sales ON (wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) ) salesreturns, + date_dim, + web_site + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', s_store_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', cp_catalog_page_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "store_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "store_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(store_sk = s_store_sk)", + "(d_date <= CAST('2000-09-06' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "s_store_id", + "Expressions": [ + "sum(sales_price)", + "sum(profit)", + "sum(return_amt)", + "sum(net_loss)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_id", + "sales", + "profit", + "returns_", + "profit_loss" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "page_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "page_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cp_catalog_page_sk", + "cp_catalog_page_id", + "cp_start_date_sk", + "cp_end_date_sk", + "cp_department", + "cp_catalog_number", + "cp_catalog_page_number", + "cp_description", + "cp_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(page_sk = cp_catalog_page_sk)", + "(d_date <= CAST('2000-09-06' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "cp_catalog_page_id", + "Expressions": [ + "sum(sales_price)", + "sum(profit)", + "sum(return_amt)", + "sum(net_loss)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cp_catalog_page_id", + "sales", + "profit", + "returns_", + "profit_loss" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "wsr_web_site_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(wr_item_sk = ws_item_sk)", + "(wr_order_number = ws_order_number)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "wsr_web_site_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id", + "web_rec_start_date", + "web_rec_end_date", + "web_name", + "web_open_date_sk", + "web_close_date_sk", + "web_class", + "web_manager", + "web_mkt_id", + "web_mkt_class", + "web_mkt_desc", + "web_market_manager", + "web_company_id", + "web_company_name", + "web_street_number", + "web_street_name", + "web_street_type", + "web_suite_number", + "web_city", + "web_county", + "web_state", + "web_zip", + "web_country", + "web_gmt_offset", + "web_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(wsr_web_site_sk = web_site_sk)", + "(d_date <= CAST('2000-09-06' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "web_site_id", + "Expressions": [ + "sum(sales_price)", + "sum(profit)", + "sum(return_amt)", + "sum(net_loss)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_id", + "sales", + "profit", + "returns_", + "profit_loss" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "id" + ], + "Expressions": [ + "sum(sales)", + "sum(returns_)", + "sum(profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + } + ], + "extra_info": { + "Order By": [ + "x.channel", + "x.id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "wsr", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "csr", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ssr", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "store_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_store_sk", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "store_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "317040" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-06)", + "(2450816i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(date_sk = d_date_sk)", + "Estimated Cardinality": "317040" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(store_sk = s_store_sk)", + "Estimated Cardinality": "317040" + } + } + ], + "extra_info": { + "Groups": "s_store_id", + "Expressions": [ + "sum(sales_price)", + "sum(profit)", + "sum(return_amt)", + "sum(net_loss)" + ], + "Estimated Cardinality": "192352" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_id", + "sales", + "profit", + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "192352" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "192352" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "192352" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_catalog_page_sk", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "page_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_catalog_page_sk", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "page_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "157932" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-06)", + "(2450815i64 <= $.d_date_sk <= 2452907i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(date_sk = d_date_sk)", + "Estimated Cardinality": "157932" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.cp_catalog_page_sk <= 9827i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "11718" + } + } + ], + "extra_info": { + "Expressions": [ + "cp_catalog_page_sk", + "cp_catalog_page_id" + ], + "Estimated Cardinality": "11718" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(page_sk = cp_catalog_page_sk)", + "Estimated Cardinality": "157932" + } + } + ], + "extra_info": { + "Groups": "cp_catalog_page_id", + "Expressions": [ + "sum(sales_price)", + "sum(profit)", + "sum(return_amt)", + "sum(net_loss)" + ], + "Estimated Cardinality": "95807" + } + } + ], + "extra_info": { + "Expressions": [ + "cp_catalog_page_id", + "sales", + "profit", + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "95807" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "95807" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "95807" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_web_site_sk", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "wsr_web_site_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_item_sk", + "ws_web_site_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_item_sk", + "wr_order_number", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "RIGHT", + "Conditions": [ + "(ws_item_sk = wr_item_sk)", + "(ws_order_number = wr_order_number)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "wsr_web_site_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143264" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-06)", + "(2450816i64 <= $.d_date_sk <= 2452974i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(date_sk = d_date_sk)", + "Estimated Cardinality": "143264" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wsr_web_site_sk = web_site_sk)", + "Estimated Cardinality": "143264" + } + } + ], + "extra_info": { + "Groups": "web_site_id", + "Expressions": [ + "sum(sales_price)", + "sum(profit)", + "sum(return_amt)", + "sum(net_loss)" + ], + "Estimated Cardinality": "61937" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_id", + "sales", + "profit", + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "61937" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "61937" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "61937" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "350096" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "id" + ], + "Expressions": [ + "sum(sales)", + "sum(returns_)", + "sum(profit)" + ], + "Estimated Cardinality": "197658" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "197658" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "store_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_store_sk", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Projections": [ + "store_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": {} + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-06)", + "(2450816i64 <= $.d_date_sk <= 2452820i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "date_sk = d_date_sk", + "Estimated Cardinality": "317040" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "store_sk = s_store_sk", + "Estimated Cardinality": "317040" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_id", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "317040" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)" + ], + "Estimated Cardinality": "192352" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "192352" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_catalog_page_sk", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "page_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_returned_date_sk", + "cr_catalog_page_sk", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Projections": [ + "page_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": {} + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-06)", + "(2450815i64 <= $.d_date_sk <= 2452907i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "date_sk = d_date_sk", + "Estimated Cardinality": "157932" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.cp_catalog_page_sk <= 9827i64)", + "Projections": [ + "cp_catalog_page_sk", + "cp_catalog_page_id" + ], + "Estimated Cardinality": "11718" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "page_sk = cp_catalog_page_sk", + "Estimated Cardinality": "157932" + } + } + ], + "extra_info": { + "Projections": [ + "cp_catalog_page_id", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "157932" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)" + ], + "Estimated Cardinality": "95807" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "95807" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_web_site_sk", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "wsr_web_site_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_item_sk", + "ws_web_site_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_returned_date_sk", + "wr_item_sk", + "wr_order_number", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "RIGHT", + "Conditions": [ + "ws_item_sk = wr_item_sk", + "ws_order_number = wr_order_number" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "wsr_web_site_sk", + "date_sk", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": {} + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-06)", + "(2450816i64 <= $.d_date_sk <= 2452974i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "date_sk = d_date_sk", + "Estimated Cardinality": "143264" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "web_site_sk", + "web_site_id" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wsr_web_site_sk = web_site_sk", + "Estimated Cardinality": "143264" + } + } + ], + "extra_info": { + "Projections": [ + "web_site_id", + "sales_price", + "profit", + "return_amt", + "net_loss" + ], + "Estimated Cardinality": "143264" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)", + "sum(#4)" + ], + "Estimated Cardinality": "61937" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "61937" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "350096" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)", + "sum(#4)" + ], + "Estimated Cardinality": "197658" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "x.channel ASC", + "x.id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q50.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q50.slt.no new file mode 100644 index 00000000000..6987a0faa55 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q50.slt.no @@ -0,0 +1,963 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 30) + AND (sr_returned_date_sk - ss_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 60) + AND (sr_returned_date_sk - ss_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 90) + AND (sr_returned_date_sk - ss_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM store_sales, + store_returns, + store, + date_dim d1, + date_dim d2 +WHERE d2.d_year = 2001 + AND d2.d_moy = 8 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +ORDER BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(8 AS BIGINT))", + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(sr_returned_date_sk = d_date_sk)", + "(ss_customer_sk = sr_customer_sk)", + "(ss_store_sk = s_store_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip" + ], + "Expressions": [ + "sum(CASE WHEN (((sr_returned_date_sk - ss_sold_date_sk) <= CAST(30 AS BIGINT))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((sr_returned_date_sk - ss_sold_date_sk) > CAST(30 AS BIGINT)) AND ((sr_returned_date_sk - ss_sold_date_sk) <= CAST(60 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((sr_returned_date_sk - ss_sold_date_sk) > CAST(60 AS BIGINT)) AND ((sr_returned_date_sk - ss_sold_date_sk) <= CAST(90 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((sr_returned_date_sk - ss_sold_date_sk) > CAST(90 AS BIGINT)) AND ((sr_returned_date_sk - ss_sold_date_sk) <= CAST(120 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN (((sr_returned_date_sk - ss_sold_date_sk) > CAST(120 AS BIGINT))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.store.s_store_name", + "memory.main.store.s_company_id", + "memory.main.store.s_street_number", + "memory.main.store.s_street_name", + "memory.main.store.s_street_type", + "memory.main.store.s_suite_number", + "memory.main.store.s_city", + "memory.main.store.s_county", + "memory.main.store.s_state", + "memory.main.store.s_zip" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 8i64)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)", + "(ss_customer_sk = sr_customer_sk)" + ], + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "(sr_returned_date_sk - ss_sold_date_sk)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip" + ], + "Expressions": [ + "sum(CASE WHEN ((#10 <= 30)) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#10 > 30) AND (#10 <= 60))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#10 > 60) AND (#10 <= 90))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#10 > 90) AND (#10 <= 120))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN ((#10 > 120)) THEN (1) ELSE 0 END)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=8" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "5713" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_ticket_number = sr_ticket_number", + "ss_item_sk = sr_item_sk", + "ss_customer_sk = sr_customer_sk" + ], + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": "d_date_sk", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "(sr_returned_date_sk - ss_sold_date_sk)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "CASE WHEN ((#10 <= 30)) THEN (1) ELSE 0 END", + "CASE WHEN (((#10 > 30) AND (#10 <= 60))) THEN (1) ELSE 0 END", + "CASE WHEN (((#10 > 60) AND (#10 <= 90))) THEN (1) ELSE 0 END", + "CASE WHEN (((#10 > 90) AND (#10 <= 120))) THEN (1) ELSE 0 END", + "CASE WHEN ((#10 > 120)) THEN (1) ELSE 0 END" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Aggregates": [ + "sum(#10)", + "sum(#11)", + "sum(#12)", + "sum(#13)", + "sum(#14)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.store.s_store_name ASC", + "memory.main.store.s_company_id ASC", + "memory.main.store.s_street_number ASC", + "memory.main.store.s_street_name ASC", + "memory.main.store.s_street_type ASC", + "memory.main.store.s_suite_number ASC", + "memory.main.store.s_city ASC", + "memory.main.store.s_county ASC", + "memory.main.store.s_state ASC", + "memory.main.store.s_zip ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q51.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q51.slt.no new file mode 100644 index 00000000000..5dd6ba5aa99 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q51.slt.no @@ -0,0 +1,1154 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH web_v1 AS + (SELECT ws_item_sk item_sk, + d_date, + sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM web_sales, + date_dim + WHERE ws_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, + d_date), + store_v1 AS + (SELECT ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM store_sales, + date_dim + WHERE ss_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, + d_date) +SELECT * +FROM + (SELECT item_sk, + d_date, + web_sales, + store_sales, + max(web_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) web_cumulative, + max(store_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) store_cumulative + FROM + (SELECT CASE + WHEN web.item_sk IS NOT NULL THEN web.item_sk + ELSE store.item_sk + END item_sk, + CASE + WHEN web.d_date IS NOT NULL THEN web.d_date + ELSE store.d_date + END d_date, + web.cume_sales web_sales, + store.cume_sales store_sales + FROM web_v1 web + FULL OUTER JOIN store_v1 store ON (web.item_sk = store.item_sk + AND web.d_date = store.d_date))x)y +WHERE web_cumulative > store_cumulative +ORDER BY item_sk NULLS FIRST, + d_date NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(ws_item_sk IS NOT NULL)", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ws_item_sk", + "d_date" + ], + "Expressions": "sum(ws_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "cume_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(ss_item_sk IS NOT NULL)", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_item_sk", + "d_date" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "cume_sales" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Join Type": "FULL", + "Conditions": [ + "(item_sk = item_sk)", + "(d_date = d_date)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "web_sales", + "store_sales" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "max(web_sales) OVER (PARTITION BY item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)", + "max(store_sales) OVER (PARTITION BY item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "web_sales", + "store_sales", + "web_cumulative", + "store_cumulative" + ] + } + } + ], + "extra_info": { + "Expressions": "(web_cumulative > store_cumulative)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "web_sales", + "store_sales", + "web_cumulative", + "store_cumulative" + ] + } + } + ], + "extra_info": { + "Order By": [ + "y.item_sk", + "y.d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "store_v1", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "web_v1", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "is_not_null($.ss_item_sk)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "ss_item_sk", + "d_date" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)", + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "cume_sales" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "57691" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "is_not_null($.ws_item_sk)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_sales_price" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": [ + "ws_item_sk", + "d_date" + ], + "Expressions": "sum(ws_sales_price)", + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)", + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "cume_sales" + ], + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Join Type": "FULL", + "Conditions": [ + "(item_sk = item_sk)", + "(d_date = d_date)" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "web_sales", + "store_sales" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": [ + "max(web_sales) OVER (PARTITION BY item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)", + "max(store_sales) OVER (PARTITION BY item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expressions": "(web_cumulative > store_cumulative)", + "Estimated Cardinality": "11538" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "web_sales", + "store_sales", + "web_cumulative", + "store_cumulative" + ], + "Estimated Cardinality": "11538" + } + } + ], + "extra_info": { + "Expressions": [ + "item_sk", + "d_date", + "web_sales", + "store_sales", + "web_cumulative", + "store_cumulative" + ], + "Estimated Cardinality": "11538" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "is_not_null($.ss_item_sk)", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "ss_item_sk", + "d_date", + "ss_sales_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Projections": "sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Projections": [ + "item_sk", + "d_date", + "cume_sales" + ], + "Estimated Cardinality": "57691" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "is_not_null($.ws_item_sk)", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_sales_price" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "ws_item_sk", + "d_date", + "ws_sales_price" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Projections": "sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Projections": [ + "item_sk", + "d_date", + "cume_sales" + ], + "Estimated Cardinality": "14608" + } + } + ], + "extra_info": { + "Join Type": "FULL", + "Conditions": [ + "item_sk = item_sk", + "d_date = d_date" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Projections": [ + "item_sk", + "d_date", + "web_sales", + "store_sales" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Projections": [ + "max(web_sales) OVER (PARTITION BY item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)", + "max(store_sales) OVER (PARTITION BY item_sk ORDER BY d_date ASC NULLS LAST ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "57691" + } + } + ], + "extra_info": { + "Expression": "(web_cumulative > store_cumulative)", + "Estimated Cardinality": "11538" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "y.item_sk ASC", + "y.d_date ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q52.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q52.slt.no new file mode 100644 index 00000000000..347dd9f3347 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q52.slt.no @@ -0,0 +1,531 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + ext_price DESC, + brand_id +LIMIT 100 ; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(ss_item_sk = i_item_sk)", + "(i_manager_id = CAST(1 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_brand", + "i_brand_id" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "brand_id", + "brand", + "ext_price" + ] + } + } + ], + "extra_info": { + "Order By": [ + "dt.d_year", + "sum(memory.main.store_sales.ss_ext_sales_price)", + "memory.main.item.i_brand_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manager_id = 1i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#1, 2000)", + "#0", + "__internal_compress_integral_uinteger(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_brand", + "i_brand_id" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "#1", + "__internal_decompress_integral_bigint(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "brand_id", + "brand", + "ext_price" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2000", + "d_moy=11" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manager_id=1", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#1, 2000)", + "#0", + "__internal_compress_integral_uinteger(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand", + "i_brand_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "sum(#3)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "#1", + "__internal_decompress_integral_bigint(#2, 1001001)", + "#3" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "brand_id", + "brand", + "ext_price" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "dt.d_year ASC", + "sum(memory.main.store_sales.ss_ext_sales_price) DESC", + "memory.main.item.i_brand_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q53.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q53.slt.no new file mode 100644 index 00000000000..4d41dbc710b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q53.slt.no @@ -0,0 +1,748 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * +FROM + (SELECT i_manufact_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id) avg_quarterly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manufact_id, + d_qoy) tmp1 +WHERE CASE + WHEN avg_quarterly_sales > 0 THEN ABS (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales + ELSE NULL + END > 0.1 +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(d_month_seq IN (CAST(1200 AS BIGINT), CAST((1200 + 1) AS BIGINT), CAST((1200 + 2) AS BIGINT), CAST((1200 + 3) AS BIGINT), CAST((1200 + 4) AS BIGINT), CAST((1200 + 5) AS BIGINT), CAST((1200 + 6) AS BIGINT), CAST((1200 + 7) AS BIGINT), CAST((1200 + 8) AS BIGINT), CAST((1200 + 9) AS BIGINT), CAST((1200 + 10) AS BIGINT), CAST((1200 + 11) AS BIGINT)))", + "(((i_category IN (CAST('Books' AS VARCHAR), CAST('Children' AS VARCHAR), CAST('Electronics' AS VARCHAR))) AND (i_class IN (CAST('personal' AS VARCHAR), CAST('portable' AS VARCHAR), CAST('reference' AS VARCHAR), CAST('self-help' AS VARCHAR))) AND (i_brand IN (CAST('scholaramalgamalg #14' AS VARCHAR), CAST('scholaramalgamalg #7' AS VARCHAR), CAST('exportiunivamalg #9' AS VARCHAR), CAST('scholaramalgamalg #9' AS VARCHAR)))) OR ((i_category IN (CAST('Women' AS VARCHAR), CAST('Music' AS VARCHAR), CAST('Men' AS VARCHAR))) AND (i_class IN (CAST('accessories' AS VARCHAR), CAST('classical' AS VARCHAR), CAST('fragrances' AS VARCHAR), CAST('pants' AS VARCHAR))) AND (i_brand IN (CAST('amalgimporto #1' AS VARCHAR), CAST('edu packscholar #1' AS VARCHAR), CAST('exportiimporto #1' AS VARCHAR), CAST('importoamalg #1' AS VARCHAR)))))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_manufact_id", + "d_qoy" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "sum_sales", + "avg_quarterly_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_quarterly_sales > CAST(0 AS DOUBLE))) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_quarterly_sales)) / avg_quarterly_sales)) ELSE CAST(NULL AS DOUBLE) END > CAST(0.1 AS DOUBLE))" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "sum_sales", + "avg_quarterly_sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "tmp1.avg_quarterly_sales", + "tmp1.sum_sales", + "tmp1.i_manufact_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([1200i64, 1201i64, 1202i64, 1203i64, 1204i64, 1205i64, 1206i64, 1207i64, 1208i64, 1209i64, 1210i64, 1211i64], $.d_month_seq)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_qoy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) and vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class)) and vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand)) or ((vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category) and vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class)) and vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand)))", + "(vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) or vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category))", + "(vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class) or vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class))", + "(vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand) or vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "i_manufact_id", + "d_qoy" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "sum_sales", + "avg_quarterly_sales" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_quarterly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_quarterly_sales)) / avg_quarterly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manufact_id", + "sum_sales", + "avg_quarterly_sales" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([1200i64, 1201i64, 1202i64, 1203i64, 1204i64, 1205i64, 1206i64, 1207i64, 1208i64, 1209i64, 1210i64, 1211i64], $.d_month_seq)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_qoy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) and vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class)) and vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand)) or ((vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category) and vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class)) and vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand)))", + "(vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) or vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category))", + "(vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class) or vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class))", + "(vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand) or vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand))" + ], + "Projections": [ + "i_item_sk", + "i_manufact_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "i_manufact_id", + "d_qoy", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Projections": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Projections": [ + "i_manufact_id", + "sum_sales", + "avg_quarterly_sales" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((avg_quarterly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_quarterly_sales)) / avg_quarterly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "tmp1.avg_quarterly_sales ASC", + "tmp1.sum_sales ASC", + "tmp1.i_manufact_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q54.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q54.slt.no new file mode 100644 index 00000000000..5b88d846fc8 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q54.slt.no @@ -0,0 +1,2153 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH my_customers AS + (SELECT DISTINCT c_customer_sk, + c_current_addr_sk + FROM + (SELECT cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL SELECT ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales) cs_or_ws_sales, + item, + date_dim, + customer + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Women' + AND i_class = 'maternity' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 12 + AND d_year = 1998 ), + my_revenue AS + (SELECT c_customer_sk, + sum(ss_ext_sales_price) AS revenue + FROM my_customers, + store_sales, + customer_address, + store, + date_dim + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN + (SELECT DISTINCT d_month_seq+1 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) AND + (SELECT DISTINCT d_month_seq+3 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) + GROUP BY c_customer_sk), + segments AS + (SELECT cast(round(revenue/50) AS int) AS SEGMENT + FROM my_revenue) +SELECT SEGMENT, + count(*) AS num_customers, + SEGMENT*50 AS segment_base +FROM segments +GROUP BY SEGMENT +ORDER BY SEGMENT NULLS FIRST, + num_customers NULLS FIRST, + segment_base +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "customer_sk", + "item_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "customer_sk", + "item_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(sold_date_sk = d_date_sk)", + "(item_sk = i_item_sk)", + "(i_category = CAST('Women' AS VARCHAR))", + "(i_class = CAST('maternity' AS VARCHAR))", + "(c_customer_sk = customer_sk)", + "(d_moy = CAST(12 AS BIGINT))", + "(d_year = CAST(1998 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_customer_sk", + "c_current_addr_sk" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(12 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_month_seq + CAST(1 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": "(d_month_seq + 1)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[99.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[118.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[118.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(12 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_month_seq + CAST(3 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": "(d_month_seq + 3)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[112.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[121.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[121.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_current_addr_sk = ca_address_sk)", + "(ca_county = s_county)", + "(ca_state = s_state)", + "(ss_sold_date_sk = d_date_sk)", + "(c_customer_sk = ss_customer_sk)", + "(d_month_seq >= SUBQUERY)", + "(d_month_seq <= SUBQUERY)" + ] + } + } + ], + "extra_info": { + "Groups": "c_customer_sk", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "revenue" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "SEGMENT" + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Groups": "SEGMENT", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": [ + "SEGMENT", + "num_customers", + "segment_base" + ] + } + } + ], + "extra_info": { + "Order By": [ + "segments.SEGMENT", + "count_star()", + "(segments.SEGMENT * 50)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "segments", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "my_revenue", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "my_customers", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_county", + "s_state" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_county", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "customer_sk", + "item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "sold_date_sk", + "customer_sk", + "item_sk" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "215289" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 12i64)", + "($.d_year = 1998i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sold_date_sk = d_date_sk)", + "Estimated Cardinality": "43046" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.i_category = \"Women\")", + "($.i_class = \"maternity\")" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(item_sk = i_item_sk)", + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = customer_sk)", + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "8609", + "Distinct Targets": [ + "c_customer_sk", + "c_current_addr_sk" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)" + ], + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "8609" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_month_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 12i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "(d_month_seq + 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "__internal_compress_integral_usmallint(#0, 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "2921", + "Distinct Targets": "(d_month_seq + 1)" + } + } + ], + "extra_info": { + "Expressions": "__internal_decompress_integral_bigint(#0, 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_month_seq >= SUBQUERY)", + "Estimated Cardinality": "357" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 12i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "(d_month_seq + 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "__internal_compress_integral_usmallint(#0, 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "2921", + "Distinct Targets": "(d_month_seq + 3)" + } + } + ], + "extra_info": { + "Expressions": "__internal_decompress_integral_bigint(#0, 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_month_seq <= SUBQUERY)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ss_customer_sk)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_address_sk = c_current_addr_sk)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(s_county = ca_county)", + "(s_state = ca_state)" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "c_customer_sk", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "revenue", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "#0", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "SEGMENT", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "#0", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "SEGMENT", + "Expressions": "count_star()", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "SEGMENT", + "num_customers", + "segment_base" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "0" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_county", + "s_state" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_county", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "sold_date_sk", + "customer_sk", + "item_sk" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": {} + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=12" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sold_date_sk = d_date_sk", + "Estimated Cardinality": "43046" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "i_class='maternity'", + "i_category='Women'" + ], + "Projections": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "item_sk = i_item_sk", + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = customer_sk", + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "", + "Estimated Cardinality": "8609" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)" + ], + "Estimated Cardinality": "8609" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "NESTED_LOOP_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_month_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=12" + ], + "Projections": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "(d_month_seq + 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "__internal_compress_integral_usmallint(#0, 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "(d_month_seq + 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "__internal_decompress_integral_bigint(#0, 1)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_month_seq >= SUBQUERY", + "Estimated Cardinality": "357" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=12" + ], + "Projections": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "(d_month_seq + 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "__internal_compress_integral_usmallint(#0, 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "(d_month_seq + 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "__internal_decompress_integral_bigint(#0, 3)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_month_seq <= SUBQUERY", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ss_customer_sk", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_address_sk = c_current_addr_sk", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "s_county = ca_county", + "s_state = ca_state" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": "revenue", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": "SEGMENT", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": "SEGMENT", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "count_star()", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": [ + "SEGMENT", + "num_customers", + "segment_base" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "segments.SEGMENT ASC", + "count_star() ASC", + "(segments.SEGMENT * 50) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q55.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q55.slt.no new file mode 100644 index 00000000000..85a045049ea --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q55.slt.no @@ -0,0 +1,509 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_brand_id brand_id, + i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=28 + AND d_moy=11 + AND d_year=1999 +GROUP BY i_brand, + i_brand_id +ORDER BY ext_price DESC, + i_brand_id +LIMIT 100 ; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(ss_item_sk = i_item_sk)", + "(i_manager_id = CAST(28 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(1999 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_brand", + "i_brand_id" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "brand", + "ext_price" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sum(memory.main.store_sales.ss_ext_sales_price)", + "memory.main.item.i_brand_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 1999i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manager_id = 28i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_uinteger(#1, 1001001)", + "#2" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "i_brand", + "i_brand_id" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1001001)", + "#2" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "brand", + "ext_price" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1999", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manager_id=28", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_uinteger(#1, 1001001)", + "#2" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand", + "i_brand_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1001001)", + "#2" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "brand_id", + "brand", + "ext_price" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sum(memory.main.store_sales.ss_ext_sales_price) DESC", + "memory.main.item.i_brand_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q56.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q56.slt.no new file mode 100644 index 00000000000..80d053ef631 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q56.slt.no @@ -0,0 +1,2103 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY total_sales NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_color IN (CAST('slate' AS VARCHAR), CAST('blanched' AS VARCHAR), CAST('burnished' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[45.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(2 AS BIGINT))", + "(ss_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_color IN (CAST('slate' AS VARCHAR), CAST('blanched' AS VARCHAR), CAST('burnished' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[100.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(cs_item_sk = i_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(2 AS BIGINT))", + "(cs_bill_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cs_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_color IN (CAST('slate' AS VARCHAR), CAST('blanched' AS VARCHAR), CAST('burnished' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[155.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ws_item_sk = i_item_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(2 AS BIGINT))", + "(ws_bill_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ws_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(total_sales)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sum(tmp1.total_sales)", + "tmp1.i_item_id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "cs", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"slate\", \"blanched\", \"burnished\"], $.i_color)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "2297" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_addr_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 2i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"slate\", \"blanched\", \"burnished\"], $.i_color)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cs_ext_sales_price)", + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "1143" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2864" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"slate\", \"blanched\", \"burnished\"], $.i_color)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ws_ext_sales_price)", + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(total_sales)", + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"slate\", \"blanched\", \"burnished\"], $.i_color)", + "Projections": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "2297" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_addr_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"slate\", \"blanched\", \"burnished\"], $.i_color)", + "Projections": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "1143" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "2864" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"slate\", \"blanched\", \"burnished\"], $.i_color)", + "Projections": "i_item_id", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "569" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sum(tmp1.total_sales) ASC", + "tmp1.i_item_id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q57.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q57.slt.no new file mode 100644 index 00000000000..5c097b1ff56 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q57.slt.no @@ -0,0 +1,1230 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH v1 AS + (SELECT i_category, + i_brand, + cc_name, + d_year, + d_moy, + sum(cs_sales_price) sum_sales, + avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, + i_brand, + cc_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + cc_name + ORDER BY d_year, + d_moy) rn + FROM item, + catalog_sales, + date_dim, + call_center + WHERE cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk= cs_call_center_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + cc_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.cc_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1. cc_name = v1_lag. cc_name + AND v1. cc_name = v1_lead. cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales NULLS FIRST, 1, 2, 3, 4, 5, 6, 7, 8, 9 +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_call_center_id", + "cc_rec_start_date", + "cc_rec_end_date", + "cc_closed_date_sk", + "cc_open_date_sk", + "cc_name", + "cc_class", + "cc_employees", + "cc_sq_ft", + "cc_hours", + "cc_manager", + "cc_mkt_id", + "cc_mkt_class", + "cc_mkt_desc", + "cc_market_manager", + "cc_division", + "cc_division_name", + "cc_company", + "cc_company_name", + "cc_street_number", + "cc_street_name", + "cc_street_type", + "cc_suite_number", + "cc_city", + "cc_county", + "cc_state", + "cc_zip", + "cc_country", + "cc_gmt_offset", + "cc_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_item_sk = i_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(cc_call_center_sk = cs_call_center_sk)", + "((d_year = CAST(1999 AS BIGINT)) OR ((d_year = CAST((1999 - 1) AS BIGINT)) AND (d_moy = CAST(12 AS BIGINT))) OR ((d_year = CAST((1999 + 1) AS BIGINT)) AND (d_moy = CAST(1 AS BIGINT))))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy" + ], + "Expressions": "sum(cs_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, i_brand, cc_name, d_year)", + "RANK() OVER (PARTITION BY i_category, i_brand, cc_name ORDER BY d_year ASC NULLS LAST, d_moy ASC NULLS LAST)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "rn" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_category = i_category)", + "(i_category = i_category)", + "(i_brand = i_brand)", + "(i_brand = i_brand)", + "(cc_name = cc_name)", + "(cc_name = cc_name)", + "(rn = (rn + CAST(1 AS BIGINT)))", + "(rn = (rn - CAST(1 AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(1999 AS BIGINT))", + "(avg_monthly_sales > CAST(0 AS DOUBLE))", + "(CASE WHEN ((avg_monthly_sales > CAST(0 AS DOUBLE))) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE CAST(NULL AS DOUBLE) END > CAST(0.1 AS DOUBLE))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "#[46.9]", + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "#[46.0]", + "#[46.1]", + "#[46.2]", + "#[46.3]", + "#[46.4]", + "#[46.5]", + "#[46.6]", + "#[46.7]", + "#[46.8]" + ] + } + } + ], + "extra_info": { + "CTE Name": "v2", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "v1", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_call_center_sk", + "cs_item_sk", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((($.d_year = 1999i64) or (($.d_year = 1998i64) and ($.d_moy = 12i64))) or (($.d_year = 2000i64) and ($.d_moy = 1i64)))", + "((($.d_year = 1999i64) or ($.d_year = 1998i64)) or ($.d_year = 2000i64))", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_call_center_sk = cc_call_center_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy" + ], + "Expressions": "sum(cs_sales_price)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 1900)", + "__internal_decompress_integral_bigint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, i_brand, cc_name, d_year)", + "RANK() OVER (PARTITION BY i_category, i_brand, cc_name ORDER BY d_year ASC NULLS LAST, d_moy ASC NULLS LAST)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "rn" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "143657" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(i_category = i_category)", + "(i_brand = i_brand)", + "(cc_name = cc_name)", + "((rn + 1) = (rn - 1))" + ], + "Estimated Cardinality": "11465185" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = 1999)", + "(avg_monthly_sales > 0.0)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(i_category = i_category)", + "(i_brand = i_brand)", + "(cc_name = cc_name)", + "((rn - 1) = rn)", + "((rn + 1) = rn)" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_monthly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8" + ], + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "v1", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_call_center_sk", + "cs_item_sk", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "((($.d_year = 1999i64) or (($.d_year = 1998i64) and ($.d_moy = 12i64))) or (($.d_year = 2000i64) and ($.d_moy = 1i64)))", + "((($.d_year = 1999i64) or ($.d_year = 1998i64)) or ($.d_year = 2000i64))", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cc_call_center_sk", + "cc_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_call_center_sk = cc_call_center_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "__internal_compress_integral_utinyint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "sum(#5)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 1900)", + "__internal_decompress_integral_bigint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": "avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, i_brand, cc_name, d_year)" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY i_category, i_brand, cc_name ORDER BY d_year ASC NULLS LAST, d_moy ASC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "143657" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "i_category = i_category", + "i_brand = i_brand", + "cc_name = cc_name", + "(rn + 1) = (rn - 1)" + ], + "Estimated Cardinality": "11465185" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expression": "((d_year = 1999) AND (avg_monthly_sales > 0.0))", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "i_category = i_category", + "i_brand = i_brand", + "cc_name = cc_name", + "(rn - 1) = rn", + "(rn + 1) = rn" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((avg_monthly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_brand", + "cc_name", + "d_year", + "d_moy", + "avg_monthly_sales", + "sum_sales", + "psum", + "nsum", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ], + "Estimated Cardinality": "915030074" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "#9 ASC", + "i_category ASC", + "i_brand ASC", + "cc_name ASC", + "d_year ASC", + "d_moy ASC", + "avg_monthly_sales ASC", + "sum_sales ASC", + "psum ASC", + "nsum ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8" + ], + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "v1", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q58.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q58.slt.no new file mode 100644 index 00000000000..5516e6e773f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q58.slt.no @@ -0,0 +1,2537 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ss_items AS + (SELECT i_item_id item_id, + sum(ss_ext_sales_price) ss_item_rev + FROM store_sales, + item, + date_dim + WHERE ss_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id), + cs_items AS + (SELECT i_item_id item_id, + sum(cs_ext_sales_price) cs_item_rev + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id), + ws_items AS + (SELECT i_item_id item_id, + sum(ws_ext_sales_price) ws_item_rev + FROM web_sales, + item, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT ss_items.item_id, + ss_item_rev, + ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev, + cs_item_rev, + cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev, + ws_item_rev, + ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev, + (ss_item_rev+cs_item_rev+ws_item_rev)/3 average +FROM ss_items, + cs_items, + ws_items +WHERE ss_items.item_id=cs_items.item_id + AND ss_items.item_id=ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +ORDER BY ss_items.item_id NULLS FIRST, + ss_item_rev NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_date = CAST('2000-01-03' AS DATE))" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[50.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[56.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[56.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(d_week_seq = SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": "d_date" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_date = #[37.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "SUBQUERY", + "(ss_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ss_item_rev" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_date = CAST('2000-01-03' AS DATE))" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[108.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[114.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[114.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(d_week_seq = SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": "d_date" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_date = #[95.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_item_sk = i_item_sk)", + "SUBQUERY", + "(cs_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cs_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "cs_item_rev" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_date = CAST('2000-01-03' AS DATE))" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[166.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[172.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[172.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(d_week_seq = SUBQUERY)" + } + } + ], + "extra_info": { + "Expressions": "d_date" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_date = #[153.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_item_sk = i_item_sk)", + "SUBQUERY", + "(ws_sold_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ws_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ws_item_rev" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(item_id = item_id)", + "(item_id = item_id)", + "(CAST(ss_item_rev AS DECIMAL(38,3)) >= (CAST(0.9 AS DECIMAL(38,1)) * cs_item_rev))", + "(CAST(ss_item_rev AS DECIMAL(38,3)) >= (CAST(0.9 AS DECIMAL(38,1)) * ws_item_rev))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) >= (CAST(0.9 AS DECIMAL(38,1)) * ss_item_rev))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) >= (CAST(0.9 AS DECIMAL(38,1)) * ws_item_rev))", + "(CAST(ws_item_rev AS DECIMAL(38,3)) >= (CAST(0.9 AS DECIMAL(38,1)) * ss_item_rev))", + "(CAST(ws_item_rev AS DECIMAL(38,3)) >= (CAST(0.9 AS DECIMAL(38,1)) * cs_item_rev))", + "(CAST(ss_item_rev AS DECIMAL(38,3)) <= (CAST(1.1 AS DECIMAL(38,1)) * cs_item_rev))", + "(CAST(ss_item_rev AS DECIMAL(38,3)) <= (CAST(1.1 AS DECIMAL(38,1)) * ws_item_rev))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) <= (CAST(1.1 AS DECIMAL(38,1)) * ss_item_rev))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) <= (CAST(1.1 AS DECIMAL(38,1)) * ws_item_rev))", + "(CAST(ws_item_rev AS DECIMAL(38,3)) <= (CAST(1.1 AS DECIMAL(38,1)) * ss_item_rev))", + "(CAST(ws_item_rev AS DECIMAL(38,3)) <= (CAST(1.1 AS DECIMAL(38,1)) * cs_item_rev))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ss_item_rev", + "ss_dev", + "cs_item_rev", + "cs_dev", + "ws_item_rev", + "ws_dev", + "average" + ] + } + } + ], + "extra_info": { + "Order By": [ + "ss_items.item_id", + "ss_items.ss_item_rev" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "ws_items", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "cs_items", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ss_items", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450815i64 <= $.d_date_sk <= 2452652i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.d_date = 2000-01-03)", + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = SUBQUERY)", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Expressions": "d_date", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_date = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cs_ext_sales_price)", + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "cs_item_rev" + ], + "Estimated Cardinality": "26040" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "26040" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.d_date = 2000-01-03)", + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = SUBQUERY)", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Expressions": "d_date", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_date = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14609" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ws_ext_sales_price)", + "Estimated Cardinality": "13215" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ws_item_rev" + ], + "Estimated Cardinality": "13215" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "13215" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(item_id = item_id)", + "(CAST(cs_item_rev AS DECIMAL(38,3)) >= (0.9 * ws_item_rev))", + "((0.9 * cs_item_rev) <= CAST(ws_item_rev AS DECIMAL(38,3)))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) <= (1.1 * ws_item_rev))", + "((1.1 * cs_item_rev) >= CAST(ws_item_rev AS DECIMAL(38,3)))" + ], + "Estimated Cardinality": "199512" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.d_date = 2000-01-03)", + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = SUBQUERY)", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Expressions": "d_date", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_date = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "52288" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ss_item_rev" + ], + "Estimated Cardinality": "52288" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "52288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(item_id = item_id)", + "((0.9 * ws_item_rev) <= CAST(ss_item_rev AS DECIMAL(38,3)))", + "(CAST(ws_item_rev AS DECIMAL(38,3)) >= (0.9 * ss_item_rev))", + "((1.1 * ws_item_rev) >= CAST(ss_item_rev AS DECIMAL(38,3)))", + "(CAST(ws_item_rev AS DECIMAL(38,3)) <= (1.1 * ss_item_rev))", + "((0.9 * cs_item_rev) <= CAST(ss_item_rev AS DECIMAL(38,3)))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) >= (0.9 * ss_item_rev))", + "((1.1 * cs_item_rev) >= CAST(ss_item_rev AS DECIMAL(38,3)))", + "(CAST(cs_item_rev AS DECIMAL(38,3)) <= (1.1 * ss_item_rev))" + ], + "Estimated Cardinality": "6048310" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ss_item_rev", + "(CAST(((ss_item_rev + cs_item_rev) + ws_item_rev) AS DOUBLE) / 3.0)", + "cs_item_rev", + "ws_item_rev" + ], + "Estimated Cardinality": "6048310" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "ss_item_rev", + "ss_dev", + "cs_item_rev", + "cs_dev", + "ws_item_rev", + "ws_dev", + "average" + ], + "Estimated Cardinality": "6048310" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450815i64 <= $.d_date_sk <= 2452652i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_date='2000-01-03'::DATE", + "Projections": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = SUBQUERY", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Projections": "d_date", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_date = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "26040" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_date='2000-01-03'::DATE", + "Projections": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = SUBQUERY", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Projections": "d_date", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_date = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14609" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "13215" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "item_id = item_id", + "CAST(cs_item_rev AS DECIMAL(38,3)) >= (0.9 * ws_item_rev)", + "(0.9 * cs_item_rev) <= CAST(ws_item_rev AS DECIMAL(38,3))", + "CAST(cs_item_rev AS DECIMAL(38,3)) <= (1.1 * ws_item_rev)", + "(1.1 * cs_item_rev) >= CAST(ws_item_rev AS DECIMAL(38,3))" + ], + "Estimated Cardinality": "199512" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_date='2000-01-03'::DATE", + "Projections": "d_week_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = SUBQUERY", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Projections": "d_date", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_date = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "52288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "item_id = item_id", + "(0.9 * ws_item_rev) <= CAST(ss_item_rev AS DECIMAL(38,3))", + "CAST(ws_item_rev AS DECIMAL(38,3)) >= (0.9 * ss_item_rev)", + "(1.1 * ws_item_rev) >= CAST(ss_item_rev AS DECIMAL(38,3))", + "CAST(ws_item_rev AS DECIMAL(38,3)) <= (1.1 * ss_item_rev)", + "(0.9 * cs_item_rev) <= CAST(ss_item_rev AS DECIMAL(38,3))", + "CAST(cs_item_rev AS DECIMAL(38,3)) >= (0.9 * ss_item_rev)", + "(1.1 * cs_item_rev) >= CAST(ss_item_rev AS DECIMAL(38,3))", + "CAST(cs_item_rev AS DECIMAL(38,3)) <= (1.1 * ss_item_rev)" + ], + "Estimated Cardinality": "6048310" + } + } + ], + "extra_info": { + "Projections": [ + "item_id", + "ss_item_rev", + "(CAST(((ss_item_rev + cs_item_rev) + ws_item_rev) AS DOUBLE) / 3.0)", + "cs_item_rev", + "ws_item_rev" + ], + "Estimated Cardinality": "6048310" + } + } + ], + "extra_info": { + "Projections": [ + "item_id", + "ss_item_rev", + "ss_dev", + "cs_item_rev", + "cs_dev", + "ws_item_rev", + "ws_dev", + "average" + ], + "Estimated Cardinality": "6048310" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "ss_items.item_id ASC", + "ss_items.ss_item_rev ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q59.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q59.slt.no new file mode 100644 index 00000000000..507038cd9ee --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q59.slt.no @@ -0,0 +1,1254 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH wss AS + (SELECT d_week_seq, + ss_store_sk, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, + ss_store_sk) +SELECT s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1/sun_sales2 AS sun_sales_ratio, + mon_sales1/mon_sales2 AS mon_sales_ratio, + tue_sales1/tue_sales2 AS tue_sales_ratio, + wed_sales1/wed_sales2 AS wed_sales_ratio, + thu_sales1/thu_sales2 AS thu_sales_ratio, + fri_sales1/fri_sales2 AS fri_sales_ratio, + sat_sales1/sat_sales2 AS sat_sales_ratio +FROM + (SELECT s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 AND 1212 + 11) y, + (SELECT s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 + 12 AND 1212 + 23) x +WHERE s_store_id1=s_store_id2 + AND d_week_seq1=d_week_seq2-52 +ORDER BY s_store_name1 NULLS FIRST, + s_store_id1 NULLS FIRST, + d_week_seq1 NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(d_date_sk = ss_sold_date_sk)" + } + } + ], + "extra_info": { + "Groups": [ + "d_week_seq", + "ss_store_sk" + ], + "Expressions": [ + "sum(CASE WHEN ((d_day_name = CAST('Sunday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Monday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Tuesday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Wednesday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Thursday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Friday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)", + "sum(CASE WHEN ((d_day_name = CAST('Saturday' AS VARCHAR))) THEN (ss_sales_price) ELSE CAST(NULL AS DECIMAL(7,2)) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq", + "ss_store_sk", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_week_seq = d_week_seq)", + "(ss_store_sk = s_store_sk)", + "(d_month_seq >= CAST(1212 AS BIGINT))", + "(d_month_seq <= CAST((1212 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name1", + "d_week_seq1", + "s_store_id1", + "sun_sales1", + "mon_sales1", + "tue_sales1", + "wed_sales1", + "thu_sales1", + "fri_sales1", + "sat_sales1" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_week_seq = d_week_seq)", + "(ss_store_sk = s_store_sk)", + "(d_month_seq >= CAST((1212 + 12) AS BIGINT))", + "(d_month_seq <= CAST((1212 + 23) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name2", + "d_week_seq2", + "s_store_id2", + "sun_sales2", + "mon_sales2", + "tue_sales2", + "wed_sales2", + "thu_sales2", + "fri_sales2", + "sat_sales2" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(s_store_id1 = s_store_id2)", + "(d_week_seq1 = (d_week_seq2 - CAST(52 AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name1", + "s_store_id1", + "d_week_seq1", + "sun_sales_ratio", + "mon_sales_ratio", + "tue_sales_ratio", + "wed_sales_ratio", + "thu_sales_ratio", + "fri_sales_ratio", + "sat_sales_ratio" + ] + } + } + ], + "extra_info": { + "Order By": [ + "y.s_store_name1", + "y.s_store_id1", + "y.d_week_seq1" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "wss", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_week_seq", + "d_day_name" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "__internal_compress_integral_usmallint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "d_week_seq", + "ss_store_sk" + ], + "Expressions": [ + "sum(CASE WHEN ((d_day_name = 'Sunday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Monday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Tuesday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Wednesday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Thursday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Friday')) THEN (ss_sales_price) ELSE NULL END)", + "sum(CASE WHEN ((d_day_name = 'Saturday')) THEN (ss_sales_price) ELSE NULL END)" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq", + "ss_store_sk", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(1212i64 <= $.d_month_seq <= 1223i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = d_week_seq)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name1", + "d_week_seq1", + "s_store_id1", + "sun_sales1", + "mon_sales1", + "tue_sales1", + "wed_sales1", + "thu_sales1", + "fri_sales1", + "sat_sales1" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(1224i64 <= $.d_month_seq <= 1235i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = d_week_seq)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "d_week_seq2", + "s_store_id2", + "sun_sales2", + "mon_sales2", + "tue_sales2", + "wed_sales2", + "thu_sales2", + "fri_sales2", + "sat_sales2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(s_store_id1 = s_store_id2)", + "(d_week_seq1 = (d_week_seq2 - 52))" + ], + "Estimated Cardinality": "288462" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name1", + "s_store_id1", + "d_week_seq1", + "sun_sales_ratio", + "mon_sales_ratio", + "tue_sales_ratio", + "wed_sales_ratio", + "thu_sales_ratio", + "fri_sales_ratio", + "sat_sales_ratio" + ], + "Estimated Cardinality": "288462" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "wss", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_week_seq", + "d_day_name" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "__internal_compress_integral_usmallint(#2, 1)", + "#3" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "d_week_seq", + "ss_store_sk", + "CASE WHEN ((d_day_name = 'Sunday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Monday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Tuesday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Wednesday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Thursday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Friday')) THEN (ss_sales_price) ELSE NULL END", + "CASE WHEN ((d_day_name = 'Saturday')) THEN (ss_sales_price) ELSE NULL END" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)", + "sum(#4)", + "sum(#5)", + "sum(#6)", + "sum(#7)", + "sum(#8)" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288463" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288463" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(1212i64 <= $.d_month_seq <= 1223i64)", + "Projections": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = d_week_seq", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name1", + "d_week_seq1", + "s_store_id1", + "sun_sales1", + "mon_sales1", + "tue_sales1", + "wed_sales1", + "thu_sales1", + "fri_sales1", + "sat_sales1" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "288463" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288463" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(1224i64 <= $.d_month_seq <= 1235i64)", + "Projections": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = d_week_seq", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "d_week_seq2", + "s_store_id2", + "sun_sales2", + "mon_sales2", + "tue_sales2", + "wed_sales2", + "thu_sales2", + "fri_sales2", + "sat_sales2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "s_store_id1 = s_store_id2", + "d_week_seq1 = (d_week_seq2 - 52)" + ], + "Estimated Cardinality": "288462" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name1", + "s_store_id1", + "d_week_seq1", + "sun_sales_ratio", + "mon_sales_ratio", + "tue_sales_ratio", + "wed_sales_ratio", + "thu_sales_ratio", + "fri_sales_ratio", + "sat_sales_ratio" + ], + "Estimated Cardinality": "288462" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "y.s_store_name1 ASC", + "y.s_store_id1 ASC", + "y.d_week_seq1 ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "wss", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q6.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q6.slt.no new file mode 100644 index 00000000000..9802384eb1b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q6.slt.no @@ -0,0 +1,1222 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT a.ca_state state, + count(*) cnt +FROM customer_address a , + customer c , + store_sales s , + date_dim d , + item i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = + (SELECT DISTINCT (d_month_seq) + FROM date_dim + WHERE d_year = 2001 + AND d_moy = 1 ) + AND i.i_current_price > 1.2 * + (SELECT avg(j.i_current_price) + FROM item j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING count(*) >= 10 +ORDER BY cnt NULLS FIRST, + a.ca_state NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy = CAST(1 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": "d_month_seq" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": "d_month_seq" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[48.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[67.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[67.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = i_category)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(i_current_price)" + } + } + ], + "extra_info": { + "Expressions": "avg(i_current_price)" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ca_address_sk = c_current_addr_sk)", + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_item_sk = i_item_sk)", + "(d_month_seq = SUBQUERY)", + "(CAST(i_current_price AS DOUBLE) > (CAST(1.2 AS DOUBLE) * SUBQUERY))" + ] + } + } + ], + "extra_info": { + "Groups": "ca_state", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "(count_star() >= CAST(10 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": [ + "state", + "cnt" + ] + } + } + ], + "extra_info": { + "Order By": [ + "count_star()", + "a.ca_state" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_current_price", + "i_category" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_month_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "($.d_moy = 1i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "__internal_compress_integral_usmallint(#0, 0)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "2921", + "Distinct Targets": "d_month_seq" + } + } + ], + "extra_info": { + "Expressions": "__internal_decompress_integral_bigint(#0, 0)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_month_seq = SUBQUERY)", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(i_item_sk = ss_item_sk)", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ss_customer_sk)", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_address_sk = c_current_addr_sk)", + "Estimated Cardinality": "98" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(i_category = i_category)", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Expressions": [ + "i_current_price", + "i_category" + ], + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Groups": "i_category", + "Expressions": "avg(i_current_price)", + "Estimated Cardinality": "48" + } + } + ], + "extra_info": { + "Expressions": [ + "avg(i_current_price)", + "i_category" + ], + "Estimated Cardinality": "48" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(i_category IS NOT DISTINCT FROM i_category)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(i_current_price AS DOUBLE) > (1.2 * SUBQUERY))", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Groups": "ca_state", + "Expressions": "count_star()", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Expressions": "(count_star() >= 10)", + "Estimated Cardinality": "19" + } + } + ], + "extra_info": { + "Expressions": [ + "state", + "cnt" + ], + "Estimated Cardinality": "19" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "19" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_current_price", + "i_category" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_month_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=2001", + "d_moy=1" + ], + "Projections": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "__internal_compress_integral_usmallint(#0, 0)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "d_month_seq", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "__internal_decompress_integral_bigint(#0, 0)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_month_seq = SUBQUERY", + "Estimated Cardinality": "25" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "i_item_sk = ss_item_sk", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ss_customer_sk", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_address_sk = c_current_addr_sk", + "Estimated Cardinality": "98" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_current_price", + "i_category" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "i_category = i_category", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Projections": [ + "i_current_price", + "i_category" + ], + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_current_price" + ], + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "48" + } + } + ], + "extra_info": { + "Projections": [ + "avg(i_current_price)", + "i_category" + ], + "Estimated Cardinality": "48" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_category IS NOT DISTINCT FROM i_category", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#2", + "Aggregates": "", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_category IS NOT DISTINCT FROM i_category", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(CAST(i_current_price AS DOUBLE) > (1.2 * SUBQUERY))", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Projections": "ca_state", + "Estimated Cardinality": "98" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "count_star()", + "Estimated Cardinality": "97" + } + } + ], + "extra_info": { + "Expression": "(count_star() >= 10)", + "Estimated Cardinality": "19" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "count_star() ASC", + "a.ca_state ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q60.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q60.slt.no new file mode 100644 index 00000000000..9295076f126 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q60.slt.no @@ -0,0 +1,2097 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category = 'Music') + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, + total_sales +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = CAST('Music' AS VARCHAR))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[45.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(9 AS BIGINT))", + "(ss_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = CAST('Music' AS VARCHAR))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[100.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(cs_item_sk = i_item_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(9 AS BIGINT))", + "(cs_bill_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cs_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = CAST('Music' AS VARCHAR))" + } + } + ], + "extra_info": { + "Expressions": "i_item_id" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(i_item_id = #[155.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "SUBQUERY", + "(ws_item_sk = i_item_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(9 AS BIGINT))", + "(ws_bill_addr_sk = ca_address_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ws_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(total_sales)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "tmp1.i_item_id", + "sum(tmp1.total_sales)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "cs", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 9i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Music\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "2297" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "2297" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_addr_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 9i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "5744" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Music\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cs_ext_sales_price)", + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "1143" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "1143" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 9i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2864" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Music\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(i_item_id = #0)", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(ws_ext_sales_price)", + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "569" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(total_sales)", + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_addr_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=9" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Music'", + "Projections": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "2297" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_addr_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=9" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "5744" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Music'", + "Projections": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "1148" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "1143" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_addr_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=9" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_addr_sk = ca_address_sk", + "Estimated Cardinality": "2864" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Music'", + "Projections": "i_item_id", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "i_item_id = #0", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "569" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "total_sales" + ], + "Estimated Cardinality": "4009" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "3981" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "tmp1.i_item_id ASC", + "sum(tmp1.total_sales) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q61.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q61.slt.no new file mode 100644 index 00000000000..54d79710877 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q61.slt.no @@ -0,0 +1,1531 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT promotions, + total, + cast(promotions AS decimal(15,4))/cast(total AS decimal(15,4))*100 +FROM + (SELECT sum(ss_ext_sales_price) promotions + FROM store_sales, + store, + promotion, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND (p_channel_dmail = 'Y' + OR p_channel_email = 'Y' + OR p_channel_tv = 'Y') + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) promotional_sales, + (SELECT sum(ss_ext_sales_price) total + FROM store_sales, + store, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) all_sales +ORDER BY promotions, + total +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_promo_sk = p_promo_sk)", + "(ss_customer_sk = c_customer_sk)", + "(ca_address_sk = c_current_addr_sk)", + "(ss_item_sk = i_item_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))", + "(i_category = CAST('Jewelry' AS VARCHAR))", + "((p_channel_dmail = CAST('Y' AS VARCHAR)) OR (p_channel_email = CAST('Y' AS VARCHAR)) OR (p_channel_tv = CAST('Y' AS VARCHAR)))", + "(CAST(s_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "promotions" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_customer_sk = c_customer_sk)", + "(ca_address_sk = c_current_addr_sk)", + "(ss_item_sk = i_item_sk)", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))", + "(i_category = CAST('Jewelry' AS VARCHAR))", + "(CAST(s_gmt_offset AS DECIMAL(12,2)) = CAST(-5 AS DECIMAL(12,2)))", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "total" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "promotions", + "total", + "((CAST(CAST(promotions AS DECIMAL(15,4)) AS DOUBLE) / CAST(CAST(total AS DECIMAL(15,4)) AS DOUBLE)) * CAST(100 AS DOUBLE))" + ] + } + } + ], + "extra_info": { + "Order By": [ + "promotional_sales.promotions", + "all_sales.total" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 11i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Jewelry\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "2307" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "2307" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "((($.p_channel_dmail = \"Y\") or ($.p_channel_email = \"Y\")) or ($.p_channel_tv = \"Y\"))", + "Function": "Vortex Scan", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_promo_sk = p_promo_sk)", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "promotions", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 11i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Jewelry\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "2307" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.s_gmt_offset = decimal128(-500, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "total", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "promotions", + "total", + "((CAST(CAST(promotions AS DECIMAL(15,4)) AS DOUBLE) / CAST(CAST(total AS DECIMAL(15,4)) AS DOUBLE)) * 100.0)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Jewelry'", + "Projections": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "2307" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_gmt_offset=-5.00", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "2307" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "((($.p_channel_dmail = \"Y\") or ($.p_channel_email = \"Y\")) or ($.p_channel_tv = \"Y\"))", + "Projections": "p_promo_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_promo_sk = p_promo_sk", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Projections": "ss_ext_sales_price", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Aggregates": "sum(#0)" + } + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_store_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Jewelry'", + "Projections": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-5.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "2307" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "s_gmt_offset=-5.00", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Projections": "ss_ext_sales_price", + "Estimated Cardinality": "2307" + } + } + ], + "extra_info": { + "Aggregates": "sum(#0)" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "promotions", + "total", + "((CAST(CAST(promotions AS DECIMAL(15,4)) AS DOUBLE) / CAST(CAST(total AS DECIMAL(15,4)) AS DOUBLE)) * 100.0)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "promotional_sales.promotions ASC", + "all_sales.total ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q62.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q62.slt.no new file mode 100644 index 00000000000..47e63dd6992 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q62.slt.no @@ -0,0 +1,779 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT w_substr, + sm_type, + web_name, + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 30) + AND (ws_ship_date_sk - ws_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 60) + AND (ws_ship_date_sk - ws_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 90) + AND (ws_ship_date_sk - ws_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM web_sales, + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, + * + FROM warehouse) sq1, + ship_mode, + web_site, + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY w_substr, + sm_type, + web_name +ORDER BY 1 NULLS FIRST, + 2 NULLS FIRST, + 3 NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sm_ship_mode_sk", + "sm_ship_mode_id", + "sm_type", + "sm_code", + "sm_carrier", + "sm_contract" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id", + "web_rec_start_date", + "web_rec_end_date", + "web_name", + "web_open_date_sk", + "web_close_date_sk", + "web_class", + "web_manager", + "web_mkt_id", + "web_mkt_class", + "web_mkt_desc", + "web_market_manager", + "web_company_id", + "web_company_name", + "web_street_number", + "web_street_name", + "web_street_type", + "web_suite_number", + "web_city", + "web_county", + "web_state", + "web_zip", + "web_country", + "web_gmt_offset", + "web_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(ws_ship_date_sk = d_date_sk)", + "(ws_warehouse_sk = w_warehouse_sk)", + "(ws_ship_mode_sk = sm_ship_mode_sk)", + "(ws_web_site_sk = web_site_sk)", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_substr", + "sm_type", + "web_name" + ], + "Expressions": [ + "sum(CASE WHEN (((ws_ship_date_sk - ws_sold_date_sk) <= CAST(30 AS BIGINT))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((ws_ship_date_sk - ws_sold_date_sk) > CAST(30 AS BIGINT)) AND ((ws_ship_date_sk - ws_sold_date_sk) <= CAST(60 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((ws_ship_date_sk - ws_sold_date_sk) > CAST(60 AS BIGINT)) AND ((ws_ship_date_sk - ws_sold_date_sk) <= CAST(90 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((ws_ship_date_sk - ws_sold_date_sk) > CAST(90 AS BIGINT)) AND ((ws_ship_date_sk - ws_sold_date_sk) <= CAST(120 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN (((ws_ship_date_sk - ws_sold_date_sk) > CAST(120 AS BIGINT))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "sm_type", + "web_name", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ] + } + } + ], + "extra_info": { + "Order By": [ + "w_substr", + "sm_type", + "web_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_ship_date_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "w_warehouse_sk" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Expressions": [ + "sm_ship_mode_sk", + "sm_type" + ], + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_mode_sk = sm_ship_mode_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_name" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_site_sk = web_site_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450820i64 <= $.d_date_sk <= 2452762i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "sm_type", + "web_name", + "(ws_ship_date_sk - ws_sold_date_sk)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "w_substr", + "sm_type", + "web_name" + ], + "Expressions": [ + "sum(CASE WHEN ((#3 <= 30)) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#3 > 30) AND (#3 <= 60))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#3 > 60) AND (#3 <= 90))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#3 > 90) AND (#3 <= 120))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN ((#3 > 120)) THEN (1) ELSE 0 END)" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "sm_type", + "web_name", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_ship_date_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "w_warehouse_sk" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sm_ship_mode_sk", + "sm_type" + ], + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_mode_sk = sm_ship_mode_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "web_site_sk", + "web_name" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_site_sk = web_site_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450820i64 <= $.d_date_sk <= 2452762i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "sm_type", + "web_name", + "(ws_ship_date_sk - ws_sold_date_sk)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "sm_type", + "web_name", + "CASE WHEN ((#3 <= 30)) THEN (1) ELSE 0 END", + "CASE WHEN (((#3 > 30) AND (#3 <= 60))) THEN (1) ELSE 0 END", + "CASE WHEN (((#3 > 60) AND (#3 <= 90))) THEN (1) ELSE 0 END", + "CASE WHEN (((#3 > 90) AND (#3 <= 120))) THEN (1) ELSE 0 END", + "CASE WHEN ((#3 > 120)) THEN (1) ELSE 0 END" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "sum(#4)", + "sum(#5)", + "sum(#6)", + "sum(#7)" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "w_substr ASC", + "sm_type ASC", + "web_name ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q63.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q63.slt.no new file mode 100644 index 00000000000..0e4d88a3d00 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q63.slt.no @@ -0,0 +1,747 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * +FROM + (SELECT i_manager_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id) avg_monthly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manager_id, + d_moy) tmp1 +WHERE CASE + WHEN avg_monthly_sales > 0 THEN ABS (sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY i_manager_id, + avg_monthly_sales, + sum_sales +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(d_month_seq IN (CAST(1200 AS BIGINT), CAST((1200 + 1) AS BIGINT), CAST((1200 + 2) AS BIGINT), CAST((1200 + 3) AS BIGINT), CAST((1200 + 4) AS BIGINT), CAST((1200 + 5) AS BIGINT), CAST((1200 + 6) AS BIGINT), CAST((1200 + 7) AS BIGINT), CAST((1200 + 8) AS BIGINT), CAST((1200 + 9) AS BIGINT), CAST((1200 + 10) AS BIGINT), CAST((1200 + 11) AS BIGINT)))", + "(((i_category IN (CAST('Books' AS VARCHAR), CAST('Children' AS VARCHAR), CAST('Electronics' AS VARCHAR))) AND (i_class IN (CAST('personal' AS VARCHAR), CAST('portable' AS VARCHAR), CAST('reference' AS VARCHAR), CAST('self-help' AS VARCHAR))) AND (i_brand IN (CAST('scholaramalgamalg #14' AS VARCHAR), CAST('scholaramalgamalg #7' AS VARCHAR), CAST('exportiunivamalg #9' AS VARCHAR), CAST('scholaramalgamalg #9' AS VARCHAR)))) OR ((i_category IN (CAST('Women' AS VARCHAR), CAST('Music' AS VARCHAR), CAST('Men' AS VARCHAR))) AND (i_class IN (CAST('accessories' AS VARCHAR), CAST('classical' AS VARCHAR), CAST('fragrances' AS VARCHAR), CAST('pants' AS VARCHAR))) AND (i_brand IN (CAST('amalgimporto #1' AS VARCHAR), CAST('edu packscholar #1' AS VARCHAR), CAST('exportiimporto #1' AS VARCHAR), CAST('importoamalg #1' AS VARCHAR)))))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_manager_id", + "d_moy" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manager_id", + "sum_sales", + "avg_monthly_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_monthly_sales > CAST(0 AS DOUBLE))) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE CAST(NULL AS DOUBLE) END > CAST(0.1 AS DOUBLE))" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manager_id", + "sum_sales", + "avg_monthly_sales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "tmp1.i_manager_id", + "tmp1.avg_monthly_sales", + "tmp1.sum_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([1200i64, 1201i64, 1202i64, 1203i64, 1204i64, 1205i64, 1206i64, 1207i64, 1208i64, 1209i64, 1210i64, 1211i64], $.d_month_seq)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_moy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) and vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class)) and vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand)) or ((vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category) and vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class)) and vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand)))", + "(vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) or vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category))", + "(vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class) or vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class))", + "(vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand) or vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_manager_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_utinyint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "i_manager_id", + "d_moy" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manager_id", + "sum_sales", + "avg_monthly_sales" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_monthly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": [ + "i_manager_id", + "sum_sales", + "avg_monthly_sales" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([1200i64, 1201i64, 1202i64, 1203i64, 1204i64, 1205i64, 1206i64, 1207i64, 1208i64, 1209i64, 1210i64, 1211i64], $.d_month_seq)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_moy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) and vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class)) and vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand)) or ((vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category) and vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class)) and vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand)))", + "(vortex.list.contains([\"Books\", \"Children\", \"Electronics\"], $.i_category) or vortex.list.contains([\"Women\", \"Music\", \"Men\"], $.i_category))", + "(vortex.list.contains([\"personal\", \"portable\", \"reference\", \"self-help\"], $.i_class) or vortex.list.contains([\"accessories\", \"classical\", \"fragrances\", \"pants\"], $.i_class))", + "(vortex.list.contains([\"scholaramalgamalg #14\", \"scholaramalgamalg #7\", \"exportiunivamalg #9\", \"scholaramalgamalg #9\"], $.i_brand) or vortex.list.contains([\"amalgimporto #1\", \"edu packscholar #1\", \"exportiimporto #1\", \"importoamalg #1\"], $.i_brand))" + ], + "Projections": [ + "i_item_sk", + "i_manager_id" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "__internal_compress_integral_utinyint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "i_manager_id", + "d_moy", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Projections": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Projections": [ + "i_manager_id", + "sum_sales", + "avg_monthly_sales" + ], + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((avg_monthly_sales > 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "111295" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "tmp1.i_manager_id ASC", + "tmp1.avg_monthly_sales ASC", + "tmp1.sum_sales ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q64.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q64.slt.no new file mode 100644 index 00000000000..1565ec5d12b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q64.slt.no @@ -0,0 +1,2893 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH cs_ui AS + (SELECT cs_item_sk, + sum(cs_ext_list_price) AS sale, + sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) AS refund + FROM catalog_sales, + catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)), + cross_sales AS + (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_street_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + count(*) cnt, + sum(ss_wholesale_cost) s1, + sum(ss_list_price) s2, + sum(ss_coupon_amt) s3 + FROM store_sales, + store_returns, + cs_ui, + date_dim d1, + date_dim d2, + date_dim d3, + store, + customer, + customer_demographics cd1, + customer_demographics cd2, + promotion, + household_demographics hd1, + household_demographics hd2, + customer_address ad1, + customer_address ad2, + income_band ib1, + income_band ib2, + item + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk= cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color IN ('purple', + 'burlywood', + 'indian', + 'spring', + 'floral', + 'medium') + AND i_current_price BETWEEN 64 AND 64 + 10 + AND i_current_price BETWEEN 64 + 1 AND 64 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_street_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear cs1syear, + cs1.cnt cs1cnt, + cs1.s1 AS s11, + cs1.s2 AS s21, + cs1.s3 AS s31, + cs2.s1 AS s12, + cs2.s2 AS s22, + cs2.s3 AS s32, + cs2.syear, + cs2.cnt +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk=cs2.item_sk + AND cs1.syear = 1999 + AND cs2.syear = 1999 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, + cs1.store_name, + cs2.cnt, + cs1.s1, + cs2.s1; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_item_sk = cr_item_sk)", + "(cs_order_number = cr_order_number)" + ] + } + } + ], + "extra_info": { + "Groups": "cs_item_sk", + "Expressions": [ + "sum(cs_ext_list_price)", + "sum(((cr_refunded_cash + cr_reversed_charge) + cr_store_credit))" + ] + } + } + ], + "extra_info": { + "Expressions": "(sum(cs_ext_list_price) > (CAST(2 AS DECIMAL(38,0)) * sum(((cr_refunded_cash + cr_reversed_charge) + cr_store_credit))))" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_item_sk", + "sale", + "refund" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ib_income_band_sk", + "ib_lower_bound", + "ib_upper_bound" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ib_income_band_sk", + "ib_lower_bound", + "ib_upper_bound" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_store_sk = s_store_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_customer_sk = c_customer_sk)", + "(ss_cdemo_sk = cd_demo_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_addr_sk = ca_address_sk)", + "(ss_item_sk = i_item_sk)", + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = cs_item_sk)", + "(c_current_cdemo_sk = cd_demo_sk)", + "(c_current_hdemo_sk = hd_demo_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(c_first_sales_date_sk = d_date_sk)", + "(c_first_shipto_date_sk = d_date_sk)", + "(ss_promo_sk = p_promo_sk)", + "(hd_income_band_sk = ib_income_band_sk)", + "(hd_income_band_sk = ib_income_band_sk)", + "(cd_marital_status != cd_marital_status)", + "(i_color IN (CAST('purple' AS VARCHAR), CAST('burlywood' AS VARCHAR), CAST('indian' AS VARCHAR), CAST('spring' AS VARCHAR), CAST('floral' AS VARCHAR), CAST('medium' AS VARCHAR)))", + "(CAST(i_current_price AS DECIMAL(12,2)) >= CAST(64 AS DECIMAL(12,2)))", + "(CAST(i_current_price AS DECIMAL(12,2)) >= CAST((64 + 1) AS DECIMAL(12,2)))", + "(CAST(i_current_price AS DECIMAL(12,2)) <= CAST((64 + 10) AS DECIMAL(12,2)))", + "(CAST(i_current_price AS DECIMAL(12,2)) <= CAST((64 + 15) AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_product_name", + "i_item_sk", + "s_store_name", + "s_zip", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip", + "d_year", + "d_year", + "d_year" + ], + "Expressions": [ + "count_star()", + "sum(ss_wholesale_cost)", + "sum(ss_list_price)", + "sum(ss_coupon_amt)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "product_name", + "item_sk", + "store_name", + "store_zip", + "b_street_number", + "b_street_name", + "b_city", + "b_zip", + "c_street_number", + "c_street_name", + "c_city", + "c_zip", + "syear", + "fsyear", + "s2year", + "cnt", + "s1", + "s2", + "s3" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(item_sk = item_sk)", + "(syear = CAST(1999 AS BIGINT))", + "(syear = CAST((1999 + 1) AS BIGINT))", + "(cnt <= cnt)", + "(store_name = store_name)", + "(store_zip = store_zip)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "product_name", + "store_name", + "store_zip", + "b_street_number", + "b_street_name", + "b_city", + "b_zip", + "c_street_number", + "c_street_name", + "c_city", + "c_zip", + "cs1syear", + "cs1cnt", + "s11", + "s21", + "s31", + "s12", + "s22", + "s32", + "syear", + "cnt" + ] + } + } + ], + "extra_info": { + "Order By": [ + "cs1.product_name", + "cs1.store_name", + "cs2.cnt", + "cs1.s1", + "cs2.s1" + ] + } + } + ], + "extra_info": { + "CTE Name": "cross_sales", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "cs_ui", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_wholesale_cost", + "ss_list_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 1999i64) or ($.d_year = 2000i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_name", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2i64 <= $.cd_demo_sk <= 192076i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status" + ], + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "30" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "30" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_promo_sk = p_promo_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk" + ], + "Estimated Cardinality": "7200" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Expressions": "ib_income_band_sk", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(hd_income_band_sk = ib_income_band_sk)", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([\"purple\", \"burlywood\", \"indian\", \"spring\", \"floral\", \"medium\"], $.i_color)", + "(decimal128(6500, precision=7, scale=2) <= $.i_current_price <= decimal128(7400, precision=7, scale=2))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_product_name" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_item_sk = i_item_sk)", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2i64 <= $.cs_order_number <= 15999i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_item_sk", + "cs_order_number", + "cs_ext_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cs_item_sk = cr_item_sk)", + "(cs_order_number = cr_order_number)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": "cs_item_sk", + "Expressions": [ + "sum(cs_ext_list_price)", + "sum(((cr_refunded_cash + cr_reversed_charge) + cr_store_credit))" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_item_sk", + "sale", + "refund" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": "(sum(cs_ext_list_price) > (2 * sum(((cr_refunded_cash + cr_reversed_charge) + cr_store_credit))))", + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(i_item_sk = cs_item_sk)", + "Estimated Cardinality": "72763441" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2448998i64 <= $.d_date_sk <= 2452648i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk" + ], + "Estimated Cardinality": "7200" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Expressions": "ib_income_band_sk", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(hd_income_band_sk = ib_income_band_sk)", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = c_first_sales_date_sk)", + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2449028i64 <= $.d_date_sk <= 2452678i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_first_shipto_date_sk = d_date_sk)", + "Estimated Cardinality": "533615" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status" + ], + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "10249689" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_customer_sk = c_customer_sk)", + "(cd_marital_status != cd_marital_status)" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#11, 1)", + "#10", + "#6", + "#7", + "#8", + "#9", + "#4", + "#5", + "#0", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1900)", + "__internal_compress_integral_utinyint(#17, 1900)", + "__internal_compress_integral_utinyint(#12, 1900)", + "#13", + "#14", + "#15", + "#16" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Groups": [ + "i_product_name", + "i_item_sk", + "s_store_name", + "s_zip", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip", + "d_year", + "d_year", + "d_year" + ], + "Expressions": [ + "count_star()", + "sum(ss_wholesale_cost)", + "sum(ss_list_price)", + "sum(ss_coupon_amt)" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "__internal_decompress_integral_bigint(#12, 1900)", + "__internal_decompress_integral_bigint(#13, 1900)", + "__internal_decompress_integral_bigint(#14, 1900)", + "#15", + "#16", + "#17", + "#18" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expressions": [ + "product_name", + "item_sk", + "store_name", + "store_zip", + "b_street_number", + "b_street_name", + "b_city", + "b_zip", + "c_street_number", + "c_street_name", + "c_city", + "c_zip", + "syear", + "cnt", + "s1", + "s2", + "s3" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16" + ] + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expressions": "(syear = 1999)", + "Estimated Cardinality": "224028100764" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expressions": "(syear = 2000)", + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(item_sk = item_sk)", + "(store_name = store_name)", + "(store_zip = store_zip)", + "(cnt >= cnt)" + ], + "Estimated Cardinality": "11495924774494705664" + } + } + ], + "extra_info": { + "Expressions": [ + "product_name", + "store_name", + "store_zip", + "b_street_number", + "b_street_name", + "b_city", + "b_zip", + "c_street_number", + "c_street_name", + "c_city", + "c_zip", + "cs1syear", + "cs1cnt", + "s11", + "s21", + "s31", + "s12", + "s22", + "s32", + "syear", + "cnt" + ], + "Estimated Cardinality": "11495924774494705664" + } + } + ], + "extra_info": { + "Order By": [ + "cs1.product_name", + "cs1.store_name", + "cs2.cnt", + "cs1.s1", + "cs2.s1" + ], + "Estimated Cardinality": "11495924774494705664" + } + } + ], + "extra_info": { + "CTE Name": "cross_sales", + "Table Index": "1", + "Estimated Cardinality": "11495924774494705664" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_wholesale_cost", + "ss_list_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 1999i64) or ($.d_year = 2000i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_name", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2i64 <= $.cd_demo_sk <= 192076i64)", + "Projections": [ + "cd_demo_sk", + "cd_marital_status" + ], + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "p_promo_sk", + "Estimated Cardinality": "30" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_promo_sk = p_promo_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "hd_demo_sk", + "hd_income_band_sk" + ], + "Estimated Cardinality": "7200" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "ib_income_band_sk", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "hd_income_band_sk = ib_income_band_sk", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_item_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([\"purple\", \"burlywood\", \"indian\", \"spring\", \"floral\", \"medium\"], $.i_color)", + "(decimal128(6500, precision=7, scale=2) <= $.i_current_price <= decimal128(7400, precision=7, scale=2))" + ], + "Projections": [ + "i_item_sk", + "i_product_name" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_item_sk = i_item_sk", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_item_sk = sr_item_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2i64 <= $.cs_order_number <= 15999i64)", + "Projections": [ + "cs_item_sk", + "cs_order_number", + "cs_ext_list_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_item_sk", + "cr_order_number", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cs_item_sk = cr_item_sk", + "cs_order_number = cr_order_number" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "cs_item_sk", + "cs_ext_list_price", + "((cr_refunded_cash + cr_reversed_charge) + cr_store_credit)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expression": "(sum(cs_ext_list_price) > (2 * sum(((cr_refunded_cash + cr_reversed_charge) + cr_store_credit))))", + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "i_item_sk = cs_item_sk", + "Estimated Cardinality": "72763441" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2448998i64 <= $.d_date_sk <= 2452648i64)", + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "hd_demo_sk", + "hd_income_band_sk" + ], + "Estimated Cardinality": "7200" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "ib_income_band_sk", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "hd_income_band_sk = ib_income_band_sk", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = c_first_sales_date_sk", + "Estimated Cardinality": "73049" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2449028i64 <= $.d_date_sk <= 2452678i64)", + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_first_shipto_date_sk = d_date_sk", + "Estimated Cardinality": "533615" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Projections": [ + "cd_demo_sk", + "cd_marital_status" + ], + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "10249689" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_customer_sk = c_customer_sk", + "cd_marital_status != cd_marital_status" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#11, 1)", + "#10", + "#6", + "#7", + "#8", + "#9", + "#4", + "#5", + "#0", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1900)", + "__internal_compress_integral_utinyint(#17, 1900)", + "__internal_compress_integral_utinyint(#12, 1900)", + "#13", + "#14", + "#15", + "#16" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Projections": [ + "i_product_name", + "i_item_sk", + "s_store_name", + "s_zip", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip", + "ca_street_number", + "ca_street_name", + "ca_city", + "ca_zip", + "d_year", + "d_year", + "d_year", + "ss_wholesale_cost", + "ss_list_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14" + ], + "Aggregates": [ + "count_star()", + "sum(#15)", + "sum(#16)", + "sum(#17)" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "__internal_decompress_integral_bigint(#12, 1900)", + "__internal_decompress_integral_bigint(#13, 1900)", + "__internal_decompress_integral_bigint(#14, 1900)", + "#15", + "#16", + "#17", + "#18" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Projections": [ + "product_name", + "item_sk", + "store_name", + "store_zip", + "b_street_number", + "b_street_name", + "b_city", + "b_zip", + "c_street_number", + "c_street_name", + "c_city", + "c_zip", + "syear", + "cnt", + "s1", + "s2", + "s3" + ], + "Estimated Cardinality": "224028100764" + } + }, + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expression": "(syear = 1999)", + "Estimated Cardinality": "224028100764" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1", + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Expression": "(syear = 2000)", + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Projections": [ + "#1", + "#2", + "#3", + "#12", + "#13", + "#14", + "#15", + "#16" + ], + "Estimated Cardinality": "224028100764" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "item_sk = item_sk", + "store_name = store_name", + "store_zip = store_zip", + "cnt >= cnt" + ], + "Estimated Cardinality": "11495924774494705664" + } + } + ], + "extra_info": { + "Projections": [ + "product_name", + "store_name", + "store_zip", + "b_street_number", + "b_street_name", + "b_city", + "b_zip", + "c_street_number", + "c_street_name", + "c_city", + "c_zip", + "cs1syear", + "cs1cnt", + "s11", + "s21", + "s31", + "s12", + "s22", + "s32", + "syear", + "cnt" + ], + "Estimated Cardinality": "11495924774494705664" + } + } + ], + "extra_info": { + "Order By": [ + "cs1.product_name ASC", + "cs1.store_name ASC", + "cs2.cnt ASC", + "cs1.s1 ASC", + "cs2.s1 ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "cross_sales", + "Table Index": "1", + "Estimated Cardinality": "11495924774494705664" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q65.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q65.slt.no new file mode 100644 index 00000000000..dc367cec446 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q65.slt.no @@ -0,0 +1,1170 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT s_store_name, + i_item_desc, + sc.revenue, + i_current_price, + i_wholesale_cost, + i_brand +FROM store, + item, + (SELECT ss_store_sk, + avg(revenue) AS ave + FROM + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sa + GROUP BY ss_store_sk) sb, + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sc +WHERE sb.ss_store_sk = sc.ss_store_sk + AND sc.revenue <= 0.1 * sb.ave + AND s_store_sk = sc.ss_store_sk + AND i_item_sk = sc.ss_item_sk +ORDER BY s_store_name NULLS FIRST, + i_item_desc NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_month_seq >= CAST(1176 AS BIGINT))", + "(d_month_seq <= CAST((1176 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_store_sk", + "ss_item_sk" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_store_sk", + "ss_item_sk", + "revenue" + ] + } + } + ], + "extra_info": { + "Groups": "ss_store_sk", + "Expressions": "avg(revenue)" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_store_sk", + "ave" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_month_seq >= CAST(1176 AS BIGINT))", + "(d_month_seq <= CAST((1176 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_store_sk", + "ss_item_sk" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_store_sk", + "ss_item_sk", + "revenue" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_store_sk = ss_store_sk)", + "(CAST(revenue AS DOUBLE) <= (CAST(0.1 AS DOUBLE) * ave))", + "(s_store_sk = ss_store_sk)", + "(i_item_sk = ss_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "i_item_desc", + "revenue", + "i_current_price", + "i_wholesale_cost", + "i_brand" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.store.s_store_name", + "memory.main.item.i_item_desc" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1176i64 <= $.d_month_seq <= 1187i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_usmallint(#3, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_store_sk", + "ss_item_sk" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_store_sk", + "ss_item_sk", + "revenue" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288463" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1176i64 <= $.d_month_seq <= 1187i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_usmallint(#3, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_store_sk", + "ss_item_sk" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_store_sk", + "revenue" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Groups": "ss_store_sk", + "Expressions": "avg(revenue)", + "Estimated Cardinality": "182343" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "182343" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_store_sk", + "ave" + ], + "Estimated Cardinality": "182343" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "182343" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_store_sk = s_store_sk)", + "(CAST(revenue AS DOUBLE) <= (0.1 * ave))" + ], + "Estimated Cardinality": "12048087" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "i_item_desc", + "revenue", + "i_current_price", + "i_wholesale_cost", + "i_brand" + ], + "Estimated Cardinality": "12048087" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1176i64 <= $.d_month_seq <= 1187i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_usmallint(#3, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_store_sk", + "ss_item_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288463" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1176i64 <= $.d_month_seq <= 1187i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "__internal_compress_integral_usmallint(#3, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_store_sk", + "ss_item_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "ss_store_sk", + "revenue" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "ss_store_sk", + "revenue" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "182343" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "182343" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_store_sk = s_store_sk", + "CAST(revenue AS DOUBLE) <= (0.1 * ave)" + ], + "Estimated Cardinality": "12048087" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name", + "i_item_desc", + "revenue", + "i_current_price", + "i_wholesale_cost", + "i_brand" + ], + "Estimated Cardinality": "12048087" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.store.s_store_name ASC", + "memory.main.item.i_item_desc ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q66.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q66.slt.no new file mode 100644 index 00000000000..fcf37b76ffe --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q66.slt.no @@ -0,0 +1,2888 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + ,sum(jan_sales) as jan_sales + ,sum(feb_sales) as feb_sales + ,sum(mar_sales) as mar_sales + ,sum(apr_sales) as apr_sales + ,sum(may_sales) as may_sales + ,sum(jun_sales) as jun_sales + ,sum(jul_sales) as jul_sales + ,sum(aug_sales) as aug_sales + ,sum(sep_sales) as sep_sales + ,sum(oct_sales) as oct_sales + ,sum(nov_sales) as nov_sales + ,sum(dec_sales) as dec_sales + ,sum(jan_sales/w_warehouse_sq_ft) as jan_sales_per_sq_foot + ,sum(feb_sales/w_warehouse_sq_ft) as feb_sales_per_sq_foot + ,sum(mar_sales/w_warehouse_sq_ft) as mar_sales_per_sq_foot + ,sum(apr_sales/w_warehouse_sq_ft) as apr_sales_per_sq_foot + ,sum(may_sales/w_warehouse_sq_ft) as may_sales_per_sq_foot + ,sum(jun_sales/w_warehouse_sq_ft) as jun_sales_per_sq_foot + ,sum(jul_sales/w_warehouse_sq_ft) as jul_sales_per_sq_foot + ,sum(aug_sales/w_warehouse_sq_ft) as aug_sales_per_sq_foot + ,sum(sep_sales/w_warehouse_sq_ft) as sep_sales_per_sq_foot + ,sum(oct_sales/w_warehouse_sq_ft) as oct_sales_per_sq_foot + ,sum(nov_sales/w_warehouse_sq_ft) as nov_sales_per_sq_foot + ,sum(dec_sales/w_warehouse_sq_ft) as dec_sales_per_sq_foot + ,sum(jan_net) as jan_net + ,sum(feb_net) as feb_net + ,sum(mar_net) as mar_net + ,sum(apr_net) as apr_net + ,sum(may_net) as may_net + ,sum(jun_net) as jun_net + ,sum(jul_net) as jul_net + ,sum(aug_net) as aug_net + ,sum(sep_net) as sep_net + ,sum(oct_net) as oct_net + ,sum(nov_net) as nov_net + ,sum(dec_net) as dec_net + from ( + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then ws_ext_sales_price* ws_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then ws_ext_sales_price* ws_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then ws_ext_sales_price* ws_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then ws_ext_sales_price* ws_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then ws_ext_sales_price* ws_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then ws_ext_sales_price* ws_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then ws_ext_sales_price* ws_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then ws_ext_sales_price* ws_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then ws_ext_sales_price* ws_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then ws_ext_sales_price* ws_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then ws_ext_sales_price* ws_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then ws_ext_sales_price* ws_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then ws_net_paid * ws_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then ws_net_paid * ws_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then ws_net_paid * ws_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then ws_net_paid * ws_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then ws_net_paid * ws_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then ws_net_paid * ws_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then ws_net_paid * ws_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then ws_net_paid * ws_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then ws_net_paid * ws_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then ws_net_paid * ws_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then ws_net_paid * ws_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then ws_net_paid * ws_quantity else 0 end) as dec_net + from + web_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + ws_warehouse_sk = w_warehouse_sk + and ws_sold_date_sk = d_date_sk + and ws_sold_time_sk = t_time_sk + and ws_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 and 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + union all + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then cs_sales_price* cs_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then cs_sales_price* cs_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then cs_sales_price* cs_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then cs_sales_price* cs_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then cs_sales_price* cs_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then cs_sales_price* cs_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then cs_sales_price* cs_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then cs_sales_price* cs_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then cs_sales_price* cs_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then cs_sales_price* cs_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then cs_sales_price* cs_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then cs_sales_price* cs_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as dec_net + from + catalog_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + cs_warehouse_sk = w_warehouse_sk + and cs_sold_date_sk = d_date_sk + and cs_sold_time_sk = t_time_sk + and cs_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 AND 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + ) x + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + order by w_warehouse_name NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sm_ship_mode_sk", + "sm_ship_mode_id", + "sm_type", + "sm_code", + "sm_carrier", + "sm_contract" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_warehouse_sk = w_warehouse_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(ws_sold_time_sk = t_time_sk)", + "(ws_ship_mode_sk = sm_ship_mode_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(t_time >= CAST(30838 AS BIGINT))", + "(sm_carrier IN (CAST('DHL' AS VARCHAR), CAST('BARIAN' AS VARCHAR)))", + "(t_time <= CAST((30838 + 28800) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year" + ], + "Expressions": [ + "sum(CASE WHEN ((d_moy = CAST(1 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(2 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(3 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(4 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(5 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(6 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(7 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(8 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(9 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(10 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(11 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(12 AS BIGINT))) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(1 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(2 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(3 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(4 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(5 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(6 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(7 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(8 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(9 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(10 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(11 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(12 AS BIGINT))) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sm_ship_mode_sk", + "sm_ship_mode_id", + "sm_type", + "sm_code", + "sm_carrier", + "sm_contract" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_warehouse_sk = w_warehouse_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(cs_sold_time_sk = t_time_sk)", + "(cs_ship_mode_sk = sm_ship_mode_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(t_time >= CAST(30838 AS BIGINT))", + "(sm_carrier IN (CAST('DHL' AS VARCHAR), CAST('BARIAN' AS VARCHAR)))", + "(t_time <= CAST((30838 + 28800) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year" + ], + "Expressions": [ + "sum(CASE WHEN ((d_moy = CAST(1 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(2 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(3 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(4 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(5 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(6 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(7 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(8 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(9 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(10 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(11 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(12 AS BIGINT))) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(1 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(2 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(3 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(4 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(5 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(6 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(7 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(8 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(9 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(10 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(11 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)", + "sum(CASE WHEN ((d_moy = CAST(12 AS BIGINT))) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE CAST(0 AS DECIMAL(26,2)) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_" + ], + "Expressions": [ + "sum(jan_sales)", + "sum(feb_sales)", + "sum(mar_sales)", + "sum(apr_sales)", + "sum(may_sales)", + "sum(jun_sales)", + "sum(jul_sales)", + "sum(aug_sales)", + "sum(sep_sales)", + "sum(oct_sales)", + "sum(nov_sales)", + "sum(dec_sales)", + "sum((CAST(jan_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(feb_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(mar_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(apr_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(may_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(jun_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(jul_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(aug_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(sep_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(oct_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(nov_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum((CAST(dec_sales AS DOUBLE) / CAST(w_warehouse_sq_ft AS DOUBLE)))", + "sum(jan_net)", + "sum(feb_net)", + "sum(mar_net)", + "sum(apr_net)", + "sum(may_net)", + "sum(jun_net)", + "sum(jul_net)", + "sum(aug_net)", + "sum(sep_net)", + "sum(oct_net)", + "sum(nov_net)", + "sum(dec_net)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_sales_per_sq_foot", + "feb_sales_per_sq_foot", + "mar_sales_per_sq_foot", + "apr_sales_per_sq_foot", + "may_sales_per_sq_foot", + "jun_sales_per_sq_foot", + "jul_sales_per_sq_foot", + "aug_sales_per_sq_foot", + "sep_sales_per_sq_foot", + "oct_sales_per_sq_foot", + "nov_sales_per_sq_foot", + "dec_sales_per_sq_foot", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ] + } + } + ], + "extra_info": { + "Order By": "x.w_warehouse_name" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_quantity", + "ws_ext_sales_price", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(30838i64 <= $.t_time <= 59638i64)", + "(46i64 <= $.t_time_sk <= 86203i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"DHL\", \"BARIAN\"], $.sm_carrier)", + "Function": "Vortex Scan", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": "sm_ship_mode_sk", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_mode_sk = sm_ship_mode_sk)", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year", + "(d_moy = 1)", + "ws_ext_sales_price", + "ws_quantity", + "(d_moy = 2)", + "(d_moy = 3)", + "(d_moy = 4)", + "(d_moy = 5)", + "(d_moy = 6)", + "(d_moy = 7)", + "(d_moy = 8)", + "(d_moy = 9)", + "(d_moy = 10)", + "(d_moy = 11)", + "(d_moy = 12)", + "ws_net_paid" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_utinyint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year" + ], + "Expressions": [ + "sum(CASE WHEN (#7) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#10) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#11) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#12) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#13) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#14) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#15) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#16) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#17) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#18) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#19) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#20) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#7) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#10) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#11) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#12) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#13) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#14) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#15) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#16) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#17) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#18) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#19) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#20) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_decompress_integral_bigint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_quantity", + "cs_sales_price", + "cs_net_paid_inc_tax" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(30838i64 <= $.t_time <= 59638i64)", + "(26i64 <= $.t_time_sk <= 86359i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"DHL\", \"BARIAN\"], $.sm_carrier)", + "Function": "Vortex Scan", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": "sm_ship_mode_sk", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_mode_sk = sm_ship_mode_sk)", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year", + "(d_moy = 1)", + "cs_sales_price", + "cs_quantity", + "(d_moy = 2)", + "(d_moy = 3)", + "(d_moy = 4)", + "(d_moy = 5)", + "(d_moy = 6)", + "(d_moy = 7)", + "(d_moy = 8)", + "(d_moy = 9)", + "(d_moy = 10)", + "(d_moy = 11)", + "(d_moy = 12)", + "cs_net_paid_inc_tax" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_utinyint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year" + ], + "Expressions": [ + "sum(CASE WHEN (#7) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#10) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#11) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#12) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#13) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#14) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#15) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#16) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#17) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#18) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#19) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#20) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#7) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#10) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#11) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#12) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#13) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#14) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#15) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#16) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#17) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#18) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#19) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)", + "sum(CASE WHEN (#20) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END)" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_decompress_integral_bigint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "CAST(w_warehouse_sq_ft AS DOUBLE)", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_string_uhugeint(#6)", + "__internal_compress_integral_utinyint(#7, 2001)", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30", + "#31", + "#32" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Groups": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_" + ], + "Expressions": [ + "sum(jan_sales)", + "sum(feb_sales)", + "sum(mar_sales)", + "sum(apr_sales)", + "sum(may_sales)", + "sum(jun_sales)", + "sum(jul_sales)", + "sum(aug_sales)", + "sum(sep_sales)", + "sum(oct_sales)", + "sum(nov_sales)", + "sum(dec_sales)", + "sum((CAST(jan_sales AS DOUBLE) / #20))", + "sum((CAST(feb_sales AS DOUBLE) / #20))", + "sum((CAST(mar_sales AS DOUBLE) / #20))", + "sum((CAST(apr_sales AS DOUBLE) / #20))", + "sum((CAST(may_sales AS DOUBLE) / #20))", + "sum((CAST(jun_sales AS DOUBLE) / #20))", + "sum((CAST(jul_sales AS DOUBLE) / #20))", + "sum((CAST(aug_sales AS DOUBLE) / #20))", + "sum((CAST(sep_sales AS DOUBLE) / #20))", + "sum((CAST(oct_sales AS DOUBLE) / #20))", + "sum((CAST(nov_sales AS DOUBLE) / #20))", + "sum((CAST(dec_sales AS DOUBLE) / #20))", + "sum(jan_net)", + "sum(feb_net)", + "sum(mar_net)", + "sum(apr_net)", + "sum(may_net)", + "sum(jun_net)", + "sum(jul_net)", + "sum(aug_net)", + "sum(sep_net)", + "sum(oct_net)", + "sum(nov_net)", + "sum(dec_net)" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_decompress_string(#6)", + "__internal_decompress_integral_bigint(#7, 2001)", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30", + "#31", + "#32", + "#33", + "#34", + "#35", + "#36", + "#37", + "#38", + "#39", + "#40", + "#41", + "#42", + "#43" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_sales_per_sq_foot", + "feb_sales_per_sq_foot", + "mar_sales_per_sq_foot", + "apr_sales_per_sq_foot", + "may_sales_per_sq_foot", + "jun_sales_per_sq_foot", + "jul_sales_per_sq_foot", + "aug_sales_per_sq_foot", + "sep_sales_per_sq_foot", + "oct_sales_per_sq_foot", + "nov_sales_per_sq_foot", + "dec_sales_per_sq_foot", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_quantity", + "ws_ext_sales_price", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(30838i64 <= $.t_time <= 59638i64)", + "(46i64 <= $.t_time_sk <= 86203i64)" + ], + "Projections": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_time_sk = t_time_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"DHL\", \"BARIAN\"], $.sm_carrier)", + "Projections": "sm_ship_mode_sk", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_mode_sk = sm_ship_mode_sk", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year", + "(d_moy = 1)", + "ws_ext_sales_price", + "ws_quantity", + "(d_moy = 2)", + "(d_moy = 3)", + "(d_moy = 4)", + "(d_moy = 5)", + "(d_moy = 6)", + "(d_moy = 7)", + "(d_moy = 8)", + "(d_moy = 9)", + "(d_moy = 10)", + "(d_moy = 11)", + "(d_moy = 12)", + "ws_net_paid" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_utinyint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year", + "CASE WHEN (#7) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#10) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#11) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#12) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#13) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#14) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#15) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#16) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#17) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#18) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#19) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#20) THEN ((CAST(ws_ext_sales_price AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#7) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#10) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#11) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#12) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#13) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#14) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#15) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#16) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#17) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#18) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#19) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#20) THEN ((CAST(ws_net_paid AS DECIMAL(26,2)) * CAST(ws_quantity AS DECIMAL(26,0)))) ELSE 0.00 END" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Aggregates": [ + "sum(#7)", + "sum(#8)", + "sum(#9)", + "sum(#10)", + "sum(#11)", + "sum(#12)", + "sum(#13)", + "sum(#14)", + "sum(#15)", + "sum(#16)", + "sum(#17)", + "sum(#18)", + "sum(#19)", + "sum(#20)", + "sum(#21)", + "sum(#22)", + "sum(#23)", + "sum(#24)", + "sum(#25)", + "sum(#26)", + "sum(#27)", + "sum(#28)", + "sum(#29)", + "sum(#30)" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_decompress_integral_bigint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_quantity", + "cs_sales_price", + "cs_net_paid_inc_tax" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": [ + "d_date_sk", + "d_year", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(30838i64 <= $.t_time <= 59638i64)", + "(26i64 <= $.t_time_sk <= 86359i64)" + ], + "Projections": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_time_sk = t_time_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"DHL\", \"BARIAN\"], $.sm_carrier)", + "Projections": "sm_ship_mode_sk", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_mode_sk = sm_ship_mode_sk", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year", + "(d_moy = 1)", + "cs_sales_price", + "cs_quantity", + "(d_moy = 2)", + "(d_moy = 3)", + "(d_moy = 4)", + "(d_moy = 5)", + "(d_moy = 6)", + "(d_moy = 7)", + "(d_moy = 8)", + "(d_moy = 9)", + "(d_moy = 10)", + "(d_moy = 11)", + "(d_moy = 12)", + "cs_net_paid_inc_tax" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_utinyint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "d_year", + "CASE WHEN (#7) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#10) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#11) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#12) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#13) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#14) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#15) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#16) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#17) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#18) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#19) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#20) THEN ((CAST(cs_sales_price AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#7) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#10) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#11) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#12) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#13) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#14) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#15) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#16) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#17) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#18) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#19) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END", + "CASE WHEN (#20) THEN ((CAST(cs_net_paid_inc_tax AS DECIMAL(26,2)) * CAST(cs_quantity AS DECIMAL(26,0)))) ELSE 0.00 END" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Aggregates": [ + "sum(#7)", + "sum(#8)", + "sum(#9)", + "sum(#10)", + "sum(#11)", + "sum(#12)", + "sum(#13)", + "sum(#14)", + "sum(#15)", + "sum(#16)", + "sum(#17)", + "sum(#18)", + "sum(#19)", + "sum(#20)", + "sum(#21)", + "sum(#22)", + "sum(#23)", + "sum(#24)", + "sum(#25)", + "sum(#26)", + "sum(#27)", + "sum(#28)", + "sum(#29)", + "sum(#30)" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_decompress_integral_bigint(#6, 2001)", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "CAST(w_warehouse_sq_ft AS DOUBLE)", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_string_uhugeint(#6)", + "__internal_compress_integral_utinyint(#7, 2001)", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30", + "#31", + "#32" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Projections": [ + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_city", + "w_county", + "w_state", + "w_country", + "ship_carriers", + "year_", + "jan_sales", + "feb_sales", + "mar_sales", + "apr_sales", + "may_sales", + "jun_sales", + "jul_sales", + "aug_sales", + "sep_sales", + "oct_sales", + "nov_sales", + "dec_sales", + "(CAST(jan_sales AS DOUBLE) / #20)", + "(CAST(feb_sales AS DOUBLE) / #20)", + "(CAST(mar_sales AS DOUBLE) / #20)", + "(CAST(apr_sales AS DOUBLE) / #20)", + "(CAST(may_sales AS DOUBLE) / #20)", + "(CAST(jun_sales AS DOUBLE) / #20)", + "(CAST(jul_sales AS DOUBLE) / #20)", + "(CAST(aug_sales AS DOUBLE) / #20)", + "(CAST(sep_sales AS DOUBLE) / #20)", + "(CAST(oct_sales AS DOUBLE) / #20)", + "(CAST(nov_sales AS DOUBLE) / #20)", + "(CAST(dec_sales AS DOUBLE) / #20)", + "jan_net", + "feb_net", + "mar_net", + "apr_net", + "may_net", + "jun_net", + "jul_net", + "aug_net", + "sep_net", + "oct_net", + "nov_net", + "dec_net" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": [ + "sum(#8)", + "sum(#9)", + "sum(#10)", + "sum(#11)", + "sum(#12)", + "sum(#13)", + "sum(#14)", + "sum(#15)", + "sum(#16)", + "sum(#17)", + "sum(#18)", + "sum(#19)", + "sum(#20)", + "sum(#21)", + "sum(#22)", + "sum(#23)", + "sum(#24)", + "sum(#25)", + "sum(#26)", + "sum(#27)", + "sum(#28)", + "sum(#29)", + "sum(#30)", + "sum(#31)", + "sum(#32)", + "sum(#33)", + "sum(#34)", + "sum(#35)", + "sum(#36)", + "sum(#37)", + "sum(#38)", + "sum(#39)", + "sum(#40)", + "sum(#41)", + "sum(#42)", + "sum(#43)" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 977787)", + "#2", + "#3", + "#4", + "#5", + "__internal_decompress_string(#6)", + "__internal_decompress_integral_bigint(#7, 2001)", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15", + "#16", + "#17", + "#18", + "#19", + "#20", + "#21", + "#22", + "#23", + "#24", + "#25", + "#26", + "#27", + "#28", + "#29", + "#30", + "#31", + "#32", + "#33", + "#34", + "#35", + "#36", + "#37", + "#38", + "#39", + "#40", + "#41", + "#42", + "#43" + ], + "Estimated Cardinality": "43045" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "x.w_warehouse_name ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q67.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q67.slt.no new file mode 100644 index 00000000000..26d2998e67f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q67.slt.no @@ -0,0 +1,796 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * +FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rank() OVER (PARTITION BY i_category + ORDER BY sumsales DESC) rk + FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + FROM store_sales, + date_dim, + store, + item + WHERE ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + GROUP BY rollup(i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id))dw1) dw2 +WHERE rk <= 100 +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_brand NULLS FIRST, + i_product_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + d_moy NULLS FIRST, + s_store_id NULLS FIRST, + sumsales NULLS FIRST, + rk NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_item_sk = i_item_sk)", + "(ss_store_sk = s_store_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id" + ], + "Expressions": "sum(COALESCE((CAST(ss_sales_price AS DECIMAL(26,2)) * CAST(ss_quantity AS DECIMAL(26,0))), CAST(0 AS DECIMAL(26,2))))" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "sumsales" + ] + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY i_category ORDER BY sumsales DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "sumsales", + "rk" + ] + } + } + ], + "extra_info": { + "Expressions": "(rk <= CAST(100 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "sumsales", + "rk" + ] + } + } + ], + "extra_info": { + "Order By": [ + "dw2.i_category", + "dw2.i_class", + "dw2.i_brand", + "dw2.i_product_name", + "dw2.d_year", + "dw2.d_qoy", + "dw2.d_moy", + "dw2.s_store_id", + "dw2.sumsales", + "dw2.rk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_moy", + "d_qoy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand", + "i_class", + "i_category", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id" + ], + "Expressions": "sum(COALESCE((CAST(ss_sales_price AS DECIMAL(26,2)) * CAST(ss_quantity AS DECIMAL(26,0))), 0.00))", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "sumsales" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY i_category ORDER BY sumsales DESC NULLS LAST)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "(rk <= 100)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "sumsales", + "rk" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "sumsales", + "rk" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year", + "d_moy", + "d_qoy" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_brand", + "i_class", + "i_category", + "i_product_name" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_class", + "i_brand", + "i_product_name", + "d_year", + "d_qoy", + "d_moy", + "s_store_id", + "COALESCE((CAST(ss_sales_price AS DECIMAL(26,2)) * CAST(ss_quantity AS DECIMAL(26,0))), 0.00)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Aggregates": "sum(#8)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY i_category ORDER BY sumsales DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expression": "(rk <= 100)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "dw2.i_category ASC", + "dw2.i_class ASC", + "dw2.i_brand ASC", + "dw2.i_product_name ASC", + "dw2.d_year ASC", + "dw2.d_qoy ASC", + "dw2.d_moy ASC", + "dw2.s_store_id ASC", + "dw2.sumsales ASC", + "dw2.rk ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q68.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q68.slt.no new file mode 100644 index 00000000000..2ed0c38e30d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q68.slt.no @@ -0,0 +1,1031 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_ext_sales_price) extended_price, + sum(ss_ext_list_price) list_price, + sum(ss_ext_tax) extended_tax + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_addr_sk = ca_address_sk)", + "(d_dom >= CAST(1 AS BIGINT))", + "((hd_dep_count = CAST(4 AS BIGINT)) OR (hd_vehicle_count = CAST(3 AS INTEGER)))", + "(d_year IN (CAST(1999 AS BIGINT), CAST((1999 + 1) AS BIGINT), CAST((1999 + 2) AS BIGINT)))", + "(s_city IN (CAST('Fairview' AS VARCHAR), CAST('Midway' AS VARCHAR)))", + "(d_dom <= CAST(2 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "ca_city" + ], + "Expressions": [ + "sum(ss_ext_sales_price)", + "sum(ss_ext_list_price)", + "sum(ss_ext_tax)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "bought_city", + "extended_price", + "list_price", + "extended_tax" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_customer_sk = c_customer_sk)", + "(c_current_addr_sk = ca_address_sk)", + "(ca_city != bought_city)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number", + "extended_price", + "extended_tax", + "list_price" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_last_name", + "dn.ss_ticket_number" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_ext_sales_price", + "ss_ext_list_price", + "ss_ext_tax" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(1i64 <= $.d_dom <= 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Fairview\", \"Midway\"], $.s_city)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(($.hd_dep_count = 4i64) or ($.hd_vehicle_count = 3i32))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_addr_sk = ca_address_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "ca_city" + ], + "Expressions": [ + "sum(ss_ext_sales_price)", + "sum(ss_ext_list_price)", + "sum(ss_ext_tax)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "bought_city", + "extended_price", + "list_price", + "extended_tax" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ss_customer_sk = c_customer_sk)", + "(bought_city != ca_city)" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number", + "extended_price", + "extended_tax", + "list_price" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_ext_sales_price", + "ss_ext_list_price", + "ss_ext_tax" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(1i64 <= $.d_dom <= 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Fairview\", \"Midway\"], $.s_city)", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(($.hd_dep_count = 4i64) or ($.hd_vehicle_count = 3i32))", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_addr_sk = ca_address_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "ca_city", + "ss_ext_sales_price", + "ss_ext_list_price", + "ss_ext_tax" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "sum(#4)", + "sum(#5)", + "sum(#6)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk", + "bought_city", + "extended_price", + "list_price", + "extended_tax" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_city" + ], + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ss_customer_sk = c_customer_sk", + "bought_city != ca_city" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number", + "extended_price", + "extended_tax", + "list_price" + ], + "Estimated Cardinality": "4932665" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer.c_last_name ASC", + "dn.ss_ticket_number ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q69.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q69.slt.no new file mode 100644 index 00000000000..1fc291edc40 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q69.slt.no @@ -0,0 +1,1683 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ('KY', + 'GA', + 'NM') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND (NOT EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND NOT EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy >= CAST(4 AS BIGINT))", + "(d_moy <= CAST((4 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ws_bill_customer_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy >= CAST(4 AS BIGINT))", + "(d_moy <= CAST((4 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = cs_ship_customer_sk)", + "(cs_sold_date_sk = d_date_sk)", + "(d_year = CAST(2001 AS BIGINT))", + "(d_moy >= CAST(4 AS BIGINT))", + "(d_moy <= CAST((4 + 2) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit", + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_current_addr_sk = ca_address_sk)", + "(ca_state IN (CAST('KY' AS VARCHAR), CAST('GA' AS VARCHAR), CAST('NM' AS VARCHAR)))", + "(cd_demo_sk = c_current_cdemo_sk)", + "SUBQUERY", + "(NOT SUBQUERY)", + "(NOT SUBQUERY)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating" + ], + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cnt1", + "cd_purchase_estimate", + "cnt2", + "cd_credit_rating", + "cnt3" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer_demographics.cd_gender", + "memory.main.customer_demographics.cd_marital_status", + "memory.main.customer_demographics.cd_education_status", + "memory.main.customer_demographics.cd_purchase_estimate", + "memory.main.customer_demographics.cd_credit_rating" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"KY\", \"GA\", \"NM\"], $.ca_state)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "192080" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(4i64 <= $.d_moy <= 6i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(4i64 <= $.d_moy <= 6i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "7683" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_ship_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2001i64)", + "(4i64 <= $.d_moy <= 6i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "5361" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_customer_sk = c_customer_sk)", + "Estimated Cardinality": "15398" + } + } + ], + "extra_info": { + "Expressions": "c_customer_sk", + "Estimated Cardinality": "15398" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "(c_customer_sk IS NOT DISTINCT FROM c_customer_sk)", + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 500)", + "#4" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Groups": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating" + ], + "Expressions": "count_star()", + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 500)", + "#4", + "#5" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cnt1", + "cd_purchase_estimate", + "cnt2", + "cd_credit_rating", + "cnt3" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Projections": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"KY\", \"GA\", \"NM\"], $.ca_state)", + "Projections": "ca_address_sk", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "38416" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "57671" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#5", + "Aggregates": "", + "Estimated Cardinality": "9999" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "38416", + "Delim Index": "1" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "7683" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "2", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "14014" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "7683" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#5", + "Aggregates": "", + "Estimated Cardinality": "9785" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "7683", + "Delim Index": "2" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "1536" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_ship_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2001", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "3", + "Estimated Cardinality": "5361" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_customer_sk = c_customer_sk", + "Estimated Cardinality": "15398" + } + } + ], + "extra_info": { + "Projections": "c_customer_sk", + "Estimated Cardinality": "15398" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "1536" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#5", + "Aggregates": "", + "Estimated Cardinality": "5361" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "c_customer_sk IS NOT DISTINCT FROM c_customer_sk", + "Estimated Cardinality": "1536", + "Delim Index": "3" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 500)", + "#4" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Projections": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "count_star()", + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 500)", + "#4", + "#5" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Projections": [ + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cnt1", + "cd_purchase_estimate", + "cnt2", + "cd_credit_rating", + "cnt3" + ], + "Estimated Cardinality": "1536" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer_demographics.cd_gender ASC", + "memory.main.customer_demographics.cd_marital_status ASC", + "memory.main.customer_demographics.cd_education_status ASC", + "memory.main.customer_demographics.cd_purchase_estimate ASC", + "memory.main.customer_demographics.cd_credit_rating ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q7.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q7.slt.no new file mode 100644 index 00000000000..576452d5c9d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q7.slt.no @@ -0,0 +1,694 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_item_sk = i_item_sk)", + "(ss_cdemo_sk = cd_demo_sk)", + "(ss_promo_sk = p_promo_sk)", + "(cd_gender = CAST('M' AS VARCHAR))", + "(cd_marital_status = CAST('S' AS VARCHAR))", + "(cd_education_status = CAST('College' AS VARCHAR))", + "((p_channel_email = CAST('N' AS VARCHAR)) OR (p_channel_event = CAST('N' AS VARCHAR)))", + "(d_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": [ + "avg(ss_quantity)", + "avg(ss_list_price)", + "avg(ss_coupon_amt)", + "avg(ss_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "agg1", + "agg2", + "agg3", + "agg4" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.item.i_item_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_cdemo_sk", + "ss_promo_sk", + "ss_quantity", + "ss_list_price", + "ss_sales_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.cd_gender = \"M\")", + "($.cd_marital_status = \"S\")", + "($.cd_education_status = \"College\")", + "(2i64 <= $.cd_demo_sk <= 192076i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Expressions": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "11535" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(($.p_channel_email = \"N\") or ($.p_channel_event = \"N\"))", + "Function": "Vortex Scan", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_promo_sk = p_promo_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 1)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": [ + "avg(ss_quantity)", + "avg(ss_list_price)", + "avg(ss_coupon_amt)", + "avg(ss_sales_price)" + ], + "Estimated Cardinality": "11307" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "11307" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "agg1", + "agg2", + "agg3", + "agg4" + ], + "Estimated Cardinality": "11307" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_cdemo_sk", + "ss_promo_sk", + "ss_quantity", + "ss_list_price", + "ss_sales_price", + "ss_coupon_amt" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "cd_gender='M'", + "cd_marital_status='S'", + "cd_education_status='College'" + ], + "Projections": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "11535" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(($.p_channel_email = \"N\") or ($.p_channel_event = \"N\"))", + "Projections": "p_promo_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_promo_sk = p_promo_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 1)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "ss_quantity", + "ss_list_price", + "ss_coupon_amt", + "ss_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "avg(#1)", + "avg(#2)", + "avg(#3)", + "avg(#4)" + ], + "Estimated Cardinality": "11307" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.item.i_item_id ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q70.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q70.slt.no new file mode 100644 index 00000000000..bf3fb8a0b84 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q70.slt.no @@ -0,0 +1,1103 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT sum(ss_net_profit) AS total_sum, + s_state, + s_county, + grouping(s_state)+grouping(s_county) AS lochierarchy, + rank() OVER (PARTITION BY grouping(s_state)+grouping(s_county), + CASE + WHEN grouping(s_county) = 0 THEN s_state + END + ORDER BY sum(ss_net_profit) DESC) AS rank_within_parent +FROM store_sales, + date_dim d1, + store +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN + (SELECT s_state + FROM + (SELECT s_state AS s_state, + rank() OVER (PARTITION BY s_state + ORDER BY sum(ss_net_profit) DESC) AS ranking + FROM store_sales, + store, + date_dim + WHERE d_month_seq BETWEEN 1200 AND 1200+11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5 ) +GROUP BY rollup(s_state,s_county) +ORDER BY lochierarchy DESC , + CASE + WHEN grouping(s_state)+grouping(s_county) = 0 THEN s_state + END , + rank_within_parent +LIMIT 100; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_date_sk = ss_sold_date_sk)", + "(s_store_sk = ss_store_sk)", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "s_state", + "Expressions": "sum(ss_net_profit)" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY s_state ORDER BY sum(ss_net_profit) DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "s_state", + "ranking" + ] + } + } + ], + "extra_info": { + "Expressions": "(ranking <= CAST(5 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": "s_state" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(s_state = #[54.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_date_sk = ss_sold_date_sk)", + "(s_store_sk = ss_store_sk)", + "SUBQUERY", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "s_state", + "s_county" + ], + "Expressions": "sum(ss_net_profit)" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY (GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)), CASE WHEN ((GROUPING(memory.main.store.s_county) = CAST(0 AS BIGINT))) THEN (s_state) ELSE CAST(NULL AS VARCHAR) END ORDER BY sum(ss_net_profit) DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "total_sum", + "s_state", + "s_county", + "lochierarchy", + "rank_within_parent", + "CASE WHEN (((GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)) = CAST(0 AS BIGINT))) THEN (s_state) ELSE CAST(NULL AS VARCHAR) END" + ] + } + } + ], + "extra_info": { + "Order By": [ + "(GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county))", + "#[21.5]", + "rank() OVER (PARTITION BY (GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)), CASE WHEN ((GROUPING(memory.main.store.s_county) = 0)) THEN (memory.main.store.s_state) ELSE NULL END ORDER BY sum(memory.main.store_sales.ss_net_profit) DESC)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "#[21.0]", + "#[21.1]", + "#[21.2]", + "#[21.3]", + "#[21.4]" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_county", + "s_state" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "s_state", + "Expressions": "sum(ss_net_profit)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY s_state ORDER BY sum(ss_net_profit) DESC NULLS LAST)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "(ranking <= 5)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "s_state", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": "s_state", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(s_state = #0)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "s_state", + "s_county" + ], + "Expressions": "sum(ss_net_profit)", + "Estimated Cardinality": "57683" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY (GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)), CASE WHEN ((GROUPING(memory.main.store.s_county) = 0)) THEN (s_state) ELSE NULL END ORDER BY sum(ss_net_profit) DESC NULLS LAST)", + "Estimated Cardinality": "57683" + } + } + ], + "extra_info": { + "Expressions": [ + "total_sum", + "s_state", + "s_county", + "lochierarchy", + "rank_within_parent", + "CASE WHEN (((GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)) = 0)) THEN (s_state) ELSE NULL END" + ], + "Estimated Cardinality": "57683" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_county", + "s_state" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_state" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "s_state", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY s_state ORDER BY sum(ss_net_profit) DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expression": "(ranking <= 5)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "s_state = #0", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "s_state", + "s_county", + "ss_net_profit" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "57683" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY (GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)), CASE WHEN ((GROUPING(memory.main.store.s_county) = 0)) THEN (s_state) ELSE NULL END ORDER BY sum(ss_net_profit) DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10" + ], + "Estimated Cardinality": "57683" + } + } + ], + "extra_info": { + "Projections": [ + "total_sum", + "s_state", + "s_county", + "lochierarchy", + "rank_within_parent", + "CASE WHEN (((GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)) = 0)) THEN (s_state) ELSE NULL END" + ], + "Estimated Cardinality": "57683" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "(GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)) DESC", + "#5 ASC", + "rank() OVER (PARTITION BY (GROUPING(memory.main.store.s_state) + GROUPING(memory.main.store.s_county)), CASE WHEN ((GROUPING(memory.main.store.s_county) = 0)) THEN (memory.main.store.s_state) ELSE NULL END ORDER BY sum(memory.main.store_sales.ss_net_profit) DESC) ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q71.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q71.slt.no new file mode 100644 index 00000000000..b0a4c7b6ff4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q71.slt.no @@ -0,0 +1,1321 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + sum(ext_price) ext_price +FROM item, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, + date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, + date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy=11 + AND d_year=1999 ) tmp, + time_dim +WHERE sold_item_sk = i_item_sk + AND i_manager_id=1 + AND time_sk = t_time_sk + AND (t_meal_time = 'breakfast' + OR t_meal_time = 'dinner') +GROUP BY i_brand, + i_brand_id, + t_hour, + t_minute +ORDER BY ext_price DESC NULLS FIRST, + i_brand_id NULLS FIRST, + t_hour NULLS FIRST; +---- +logical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ws_sold_date_sk)", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(1999 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ext_price", + "sold_date_sk", + "sold_item_sk", + "time_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = cs_sold_date_sk)", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(1999 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ext_price", + "sold_date_sk", + "sold_item_sk", + "time_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date_sk = ss_sold_date_sk)", + "(d_moy = CAST(11 AS BIGINT))", + "(d_year = CAST(1999 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ext_price", + "sold_date_sk", + "sold_item_sk", + "time_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(sold_item_sk = i_item_sk)", + "(i_manager_id = CAST(1 AS BIGINT))", + "(time_sk = t_time_sk)", + "((t_meal_time = CAST('breakfast' AS VARCHAR)) OR (t_meal_time = CAST('dinner' AS VARCHAR)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_brand", + "i_brand_id", + "t_hour", + "t_minute" + ], + "Expressions": "sum(ext_price)" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "brand", + "t_hour", + "t_minute", + "ext_price" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sum(tmp.ext_price)", + "memory.main.item.i_brand_id", + "memory.main.time_dim.t_hour" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 1999i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "ext_price", + "sold_item_sk", + "time_sk" + ], + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 1999i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": [ + "ext_price", + "sold_item_sk", + "time_sk" + ], + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_moy = 11i64)", + "($.d_year = 1999i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "ext_price", + "sold_item_sk", + "time_sk" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100722" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manager_id = 1i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sold_item_sk = i_item_sk)", + "Estimated Cardinality": "20144" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.t_meal_time = \"breakfast\") or ($.t_meal_time = \"dinner\"))", + "(26i64 <= $.t_time_sk <= 86359i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_hour", + "t_minute" + ], + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(time_sk = t_time_sk)", + "Estimated Cardinality": "20144" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_uinteger(#1, 1001001)", + "#2", + "#0", + "__internal_compress_integral_utinyint(#3, 0)", + "__internal_compress_integral_utinyint(#4, 0)" + ], + "Estimated Cardinality": "20144" + } + } + ], + "extra_info": { + "Groups": [ + "i_brand", + "i_brand_id", + "t_hour", + "t_minute" + ], + "Expressions": "sum(ext_price)", + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 0)", + "__internal_decompress_integral_bigint(#3, 0)", + "#4" + ], + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Expressions": [ + "brand_id", + "brand", + "t_hour", + "t_minute", + "ext_price" + ], + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_uinteger(#0, 1001001)", + "#1", + "__internal_compress_integral_utinyint(#2, 0)", + "__internal_compress_integral_utinyint(#3, 0)", + "#4" + ], + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Order By": [ + "sum(tmp.ext_price)", + "memory.main.item.i_brand_id", + "memory.main.time_dim.t_hour" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "#1", + "__internal_decompress_integral_bigint(#2, 0)", + "__internal_decompress_integral_bigint(#3, 0)", + "#4" + ] + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1999", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + } + ], + "extra_info": { + "Projections": [ + "ext_price", + "sold_item_sk", + "time_sk" + ], + "Estimated Cardinality": "14322" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1999", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28723" + } + } + ], + "extra_info": { + "Projections": [ + "ext_price", + "sold_item_sk", + "time_sk" + ], + "Estimated Cardinality": "28723" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1999", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "ext_price", + "sold_item_sk", + "time_sk" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": {} + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manager_id=1", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_brand" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sold_item_sk = i_item_sk", + "Estimated Cardinality": "20144" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.t_meal_time = \"breakfast\") or ($.t_meal_time = \"dinner\"))", + "(26i64 <= $.t_time_sk <= 86359i64)" + ], + "Projections": [ + "t_time_sk", + "t_hour", + "t_minute" + ], + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "time_sk = t_time_sk", + "Estimated Cardinality": "20144" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_uinteger(#1, 1001001)", + "#2", + "#0", + "__internal_compress_integral_utinyint(#3, 0)", + "__internal_compress_integral_utinyint(#4, 0)" + ], + "Estimated Cardinality": "20144" + } + } + ], + "extra_info": { + "Projections": [ + "i_brand", + "i_brand_id", + "t_hour", + "t_minute", + "ext_price" + ], + "Estimated Cardinality": "20144" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": "sum(#4)", + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 0)", + "__internal_decompress_integral_bigint(#3, 0)", + "#4" + ], + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Projections": [ + "brand_id", + "brand", + "t_hour", + "t_minute", + "ext_price" + ], + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_uinteger(#0, 1001001)", + "#1", + "__internal_compress_integral_utinyint(#2, 0)", + "__internal_compress_integral_utinyint(#3, 0)", + "#4" + ], + "Estimated Cardinality": "20143" + } + } + ], + "extra_info": { + "Order By": [ + "sum(tmp.ext_price) DESC", + "memory.main.item.i_brand_id ASC", + "memory.main.time_dim.t_hour ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1001001)", + "#1", + "__internal_decompress_integral_bigint(#2, 0)", + "__internal_decompress_integral_bigint(#3, 0)", + "#4" + ], + "Estimated Cardinality": "0" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q72.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q72.slt.no new file mode 100644 index 00000000000..e505e80bb53 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q72.slt.no @@ -0,0 +1,1360 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_desc, + w_warehouse_name, + d1.d_week_seq, + sum(CASE + WHEN p_promo_sk IS NULL THEN 1 + ELSE 0 + END) no_promo, + sum(CASE + WHEN p_promo_sk IS NOT NULL THEN 1 + ELSE 0 + END) promo, + count(*) total_cnt +FROM catalog_sales +JOIN inventory ON (cs_item_sk = inv_item_sk) +JOIN warehouse ON (w_warehouse_sk=inv_warehouse_sk) +JOIN item ON (i_item_sk = cs_item_sk) +JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk) +JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk) +JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk) +JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk) +JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk) +LEFT OUTER JOIN promotion ON (cs_promo_sk=p_promo_sk) +LEFT OUTER JOIN catalog_returns ON (cr_item_sk = cs_item_sk + AND cr_order_number = cs_order_number) +WHERE d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > (d1.d_date + INTERVAL '5' DAY) + AND hd_buy_potential = '>10000' + AND d1.d_year = 1999 + AND cd_marital_status = 'D' +GROUP BY i_item_desc, + w_warehouse_name, + d1.d_week_seq +ORDER BY total_cnt DESC NULLS FIRST, + i_item_desc NULLS FIRST, + w_warehouse_name NULLS FIRST, + d1.d_week_seq NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = inv_item_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_warehouse_sk = w_warehouse_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_cdemo_sk = cd_demo_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_hdemo_sk = hd_demo_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_date_sk = d_date_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(cs_promo_sk = p_promo_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_item_sk = cr_item_sk)", + "(cs_order_number = cr_order_number)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(d_week_seq = d_week_seq)", + "(CAST(inv_quantity_on_hand AS BIGINT) < cs_quantity)", + "(CAST(d_date AS TIMESTAMP) > (d_date + to_days(CAST(trunc(CAST('5' AS DOUBLE)) AS INTEGER))))", + "(hd_buy_potential = CAST('>10000' AS VARCHAR))", + "(d_year = CAST(1999 AS BIGINT))", + "(cd_marital_status = CAST('D' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_desc", + "w_warehouse_name", + "d_week_seq" + ], + "Expressions": [ + "sum(CASE WHEN ((p_promo_sk IS NULL)) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((p_promo_sk IS NOT NULL)) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_desc", + "w_warehouse_name", + "d_week_seq", + "no_promo", + "promo", + "total_cnt" + ] + } + } + ], + "extra_info": { + "Order By": [ + "count_star()", + "memory.main.item.i_item_desc", + "memory.main.warehouse.w_warehouse_name", + "d1.d_week_seq" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "234900" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450815i64 <= $.d_date_sk <= 2452635i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1999i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_week_seq = d_week_seq)", + "Estimated Cardinality": "14605" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)", + "Estimated Cardinality": "46967" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "46967" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450817i64 <= $.d_date_sk <= 2452740i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_ship_date_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.cd_marital_status = \"D\")", + "($.cd_demo_sk >= 16i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Expressions": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_cdemo_sk = cd_demo_sk)", + "Estimated Cardinality": "28730" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.hd_buy_potential = \">10000\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "5746" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "5746" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = cs_ship_date_sk)", + "Estimated Cardinality": "5746" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(d_date_sk = cs_sold_date_sk)", + "(inv_item_sk = i_item_sk)", + "((d_date + '5 days'::INTERVAL) < CAST(d_date AS TIMESTAMP))", + "(CAST(inv_quantity_on_hand AS BIGINT) < cs_quantity)" + ], + "Estimated Cardinality": "2405240" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "30" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "30" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(cs_promo_sk = p_promo_sk)", + "Estimated Cardinality": "2405240" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_item_sk = cr_item_sk)", + "(cs_order_number = cr_order_number)" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Expressions": [ + "#2", + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#3", + "__internal_compress_integral_usmallint(#4, 1)", + "__internal_compress_integral_usmallint(#5, 2)" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_desc", + "w_warehouse_name", + "d_week_seq" + ], + "Expressions": [ + "sum(CASE WHEN ((p_promo_sk IS NULL)) THEN (1) ELSE 0 END)", + "sum(CASE WHEN ((p_promo_sk IS NOT NULL)) THEN (1) ELSE 0 END)", + "count_star()" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_desc", + "w_warehouse_name", + "d_week_seq", + "no_promo", + "promo", + "total_cnt" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ], + "Estimated Cardinality": "234900" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450815i64 <= $.d_date_sk <= 2452635i64)", + "Projections": [ + "d_date_sk", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=1999", + "Projections": [ + "d_date_sk", + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_week_seq = d_week_seq", + "Estimated Cardinality": "14605" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_date_sk = d_date_sk", + "Estimated Cardinality": "46967" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "46967" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450817i64 <= $.d_date_sk <= 2452740i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_ship_date_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "cd_marital_status='D'", + "Projections": "cd_demo_sk", + "Estimated Cardinality": "7683" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_cdemo_sk = cd_demo_sk", + "Estimated Cardinality": "28730" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "hd_buy_potential='>10000'", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "5746" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_desc" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "5746" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = cs_ship_date_sk", + "Estimated Cardinality": "5746" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "d_date_sk = cs_sold_date_sk", + "inv_item_sk = i_item_sk", + "(d_date + '5 days'::INTERVAL) < CAST(d_date AS TIMESTAMP)", + "CAST(inv_quantity_on_hand AS BIGINT) < cs_quantity" + ], + "Estimated Cardinality": "2405240" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "p_promo_sk", + "Estimated Cardinality": "30" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "cs_promo_sk = p_promo_sk", + "Estimated Cardinality": "2405240" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_item_sk", + "cr_order_number" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "cs_item_sk = cr_item_sk", + "cs_order_number = cr_order_number" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Projections": [ + "#2", + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#3", + "__internal_compress_integral_usmallint(#4, 1)", + "__internal_compress_integral_usmallint(#5, 2)" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_desc", + "w_warehouse_name", + "d_week_seq", + "CASE WHEN ((p_promo_sk IS NULL)) THEN (1) ELSE 0 END", + "CASE WHEN ((p_promo_sk IS NOT NULL)) THEN (1) ELSE 0 END" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "sum(#4)", + "count_star()" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "2405240" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "count_star() DESC", + "memory.main.item.i_item_desc ASC", + "memory.main.warehouse.w_warehouse_name ASC", + "d1.d_week_seq ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q73.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q73.slt.no new file mode 100644 index 00000000000..45d85d20b43 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q73.slt.no @@ -0,0 +1,881 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_buy_potential = 'Unknown' + OR household_demographics.hd_buy_potential = '>10000') + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END > 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county IN ('Orange County', + 'Bronx County', + 'Franklin Parish', + 'Williamson County') + GROUP BY ss_ticket_number, + ss_customer_sk) dj, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt DESC, + c_last_name ASC; +---- +logical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(d_dom >= CAST(1 AS BIGINT))", + "((hd_buy_potential = CAST('Unknown' AS VARCHAR)) OR (hd_buy_potential = CAST('>10000' AS VARCHAR)))", + "(hd_vehicle_count > CAST(0 AS INTEGER))", + "(CASE WHEN ((hd_vehicle_count > CAST(0 AS INTEGER))) THEN ((CAST((CAST(hd_dep_count AS DECIMAL(23,0)) * CAST(1.000 AS DECIMAL(23,3))) AS DOUBLE) / CAST(hd_vehicle_count AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END > CAST(1 AS DOUBLE))", + "(d_year IN (CAST(1999 AS BIGINT), CAST((1999 + 1) AS BIGINT), CAST((1999 + 2) AS BIGINT)))", + "(s_county IN (CAST('Orange County' AS VARCHAR), CAST('Bronx County' AS VARCHAR), CAST('Franklin Parish' AS VARCHAR), CAST('Williamson County' AS VARCHAR)))", + "(d_dom <= CAST(2 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk" + ], + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "cnt" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_customer_sk = c_customer_sk)", + "(cnt >= CAST(1 AS BIGINT))", + "(cnt <= CAST(5 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag", + "ss_ticket_number", + "cnt" + ] + } + } + ], + "extra_info": { + "Order By": [ + "dj.cnt", + "memory.main.customer.c_last_name" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_store_sk", + "ss_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(1i64 <= $.d_dom <= 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Orange County\", \"Bronx County\", \"Franklin Parish\", \"Williamson County\"], $.s_county)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.hd_buy_potential = \"Unknown\") or ($.hd_buy_potential = \">10000\"))", + "($.hd_vehicle_count > 0i32)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_dep_count", + "hd_vehicle_count" + ], + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((hd_vehicle_count > 0)) THEN ((CAST((CAST(hd_dep_count AS DECIMAL(23,0)) * 1.000) AS DOUBLE) / CAST(hd_vehicle_count AS DOUBLE))) ELSE NULL END > 1.0)", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk" + ], + "Expressions": "count_star()", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": "(cnt BETWEEN 1 AND 5)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "cnt" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag", + "ss_ticket_number", + "cnt" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Order By": [ + "dj.cnt", + "memory.main.customer.c_last_name" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "__internal_decompress_integral_bigint(#4, 1)", + "#5" + ] + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_store_sk", + "ss_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "(1i64 <= $.d_dom <= 2i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Orange County\", \"Bronx County\", \"Franklin Parish\", \"Williamson County\"], $.s_county)", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.hd_buy_potential = \"Unknown\") or ($.hd_buy_potential = \">10000\"))", + "($.hd_vehicle_count > 0i32)" + ], + "Projections": [ + "hd_demo_sk", + "hd_dep_count", + "hd_vehicle_count" + ], + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((hd_vehicle_count > 0)) THEN ((CAST((CAST(hd_dep_count AS DECIMAL(23,0)) * 1.000) AS DOUBLE) / CAST(hd_vehicle_count AS DOUBLE))) ELSE NULL END > 1.0)", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "count_star()", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "#2" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expression": "(cnt BETWEEN 1 AND 5)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag", + "ss_ticket_number", + "cnt" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_compress_integral_usmallint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Order By": [ + "dj.cnt DESC", + "memory.main.customer.c_last_name ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "__internal_decompress_integral_bigint(#4, 1)", + "#5" + ], + "Estimated Cardinality": "0" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q74.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q74.slt.no new file mode 100644 index 00000000000..a070cdcbb7e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q74.slt.no @@ -0,0 +1,1548 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ss_net_paid) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ws_net_paid) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year_ = 2001 + AND t_s_secyear.year_ = 2001+1 + AND t_w_firstyear.year_ = 2001 + AND t_w_secyear.year_ = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END +ORDER BY 1 NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ss_customer_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_year IN (CAST(2001 AS BIGINT), CAST((2001 + 1) AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "d_year" + ], + "Expressions": "sum(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "year_", + "year_total", + "sale_type" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(c_customer_sk = ws_bill_customer_sk)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year IN (CAST(2001 AS BIGINT), CAST((2001 + 1) AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "d_year" + ], + "Expressions": "sum(ws_net_paid)" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "year_", + "year_total", + "sale_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(customer_id = customer_id)", + "(sale_type = CAST('s' AS VARCHAR))", + "(sale_type = CAST('w' AS VARCHAR))", + "(sale_type = CAST('s' AS VARCHAR))", + "(sale_type = CAST('w' AS VARCHAR))", + "(year_ = CAST(2001 AS BIGINT))", + "(year_ = CAST((2001 + 1) AS BIGINT))", + "(year_ = CAST(2001 AS BIGINT))", + "(year_ = CAST((2001 + 1) AS BIGINT))", + "(year_total > CAST(0 AS DECIMAL(38,2)))", + "(year_total > CAST(0 AS DECIMAL(38,2)))", + "(CASE WHEN ((year_total > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST(year_total AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END > CASE WHEN ((year_total > CAST(0 AS DECIMAL(38,2)))) THEN ((CAST(year_total AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE CAST(NULL AS DOUBLE) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name" + ] + } + } + ], + "extra_info": { + "Order By": "customer_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_net_paid" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([2001i64, 2002i64], $.d_year)", + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "d_year" + ], + "Expressions": "sum(ss_net_paid)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 1900)", + "#4" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": "((year_ = 2002) OR ((year_ = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "year_", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([2001i64, 2002i64], $.d_year)", + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "d_year" + ], + "Expressions": "sum(ws_net_paid)", + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 1900)", + "#4" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": "((year_ = 2002) OR ((year_ = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "year_", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ] + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(year_ = 2001)", + "(year_total > 0.00)", + "(sale_type = 's')" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(year_ = 2002)", + "(sale_type = 's')" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "518659" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(year_ = 2001)", + "(year_total > 0.00)", + "(sale_type = 'w')" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expressions": [ + "(year_ = 2002)", + "(sale_type = 'w')" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(customer_id = customer_id)", + "Estimated Cardinality": "518659" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(customer_id = customer_id)", + "(CASE WHEN ((year_total > 0.00)) THEN ((CAST(year_total AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE NULL END < CASE WHEN ((year_total > 0.00)) THEN ((CAST(year_total AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE NULL END)" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customer_first_name", + "customer_last_name" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_net_paid" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([2001i64, 2002i64], $.d_year)", + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "d_year", + "ss_net_paid" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": "sum(#4)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 1900)", + "#4" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expression": "((year_ = 2002) OR ((year_ = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "year_", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([2001i64, 2002i64], $.d_year)", + "(($.d_year = 2001i64) or ($.d_year = 2002i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1900)", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_customer_id", + "c_first_name", + "c_last_name", + "d_year", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": "sum(#4)", + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "__internal_decompress_integral_bigint(#3, 1900)", + "#4" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expression": "((year_ = 2002) OR ((year_ = 2001) AND (year_total > 0.00)))", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customer_first_name", + "customer_last_name", + "year_", + "year_total", + "sale_type" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": {} + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((year_ = 2001) AND (year_total > 0.00) AND (sale_type = 's'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#4" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((year_ = 2002) AND (sale_type = 's'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#4" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "518659" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((year_ = 2001) AND (year_total > 0.00) AND (sale_type = 'w'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#4" + ], + "Estimated Cardinality": "72018" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Expression": "((year_ = 2002) AND (sale_type = 'w'))", + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#4" + ], + "Estimated Cardinality": "72018" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "customer_id = customer_id", + "Estimated Cardinality": "518659" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "customer_id = customer_id", + "CASE WHEN ((year_total > 0.00)) THEN ((CAST(year_total AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE NULL END < CASE WHEN ((year_total > 0.00)) THEN ((CAST(year_total AS DOUBLE) / CAST(year_total AS DOUBLE))) ELSE NULL END" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "57955887304299528" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "customer_id ASC" + } + } + ], + "extra_info": { + "CTE Name": "year_total", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q75.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q75.slt.no new file mode 100644 index 00000000000..d4cb80e12f1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q75.slt.no @@ -0,0 +1,2177 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH all_sales AS + ( SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + SUM(sales_cnt) AS sales_cnt , + SUM(sales_amt) AS sales_amt + FROM + (SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + cs_quantity - COALESCE(cr_return_quantity,0) AS sales_cnt , + cs_ext_sales_price - COALESCE(cr_return_amount,0.0) AS sales_amt + FROM catalog_sales + JOIN item ON i_item_sk=cs_item_sk + JOIN date_dim ON d_date_sk=cs_sold_date_sk + LEFT JOIN catalog_returns ON (cs_order_number=cr_order_number + AND cs_item_sk=cr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ss_quantity - COALESCE(sr_return_quantity,0) AS sales_cnt , + ss_ext_sales_price - COALESCE(sr_return_amt,0.0) AS sales_amt + FROM store_sales + JOIN item ON i_item_sk=ss_item_sk + JOIN date_dim ON d_date_sk=ss_sold_date_sk + LEFT JOIN store_returns ON (ss_ticket_number=sr_ticket_number + AND ss_item_sk=sr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ws_quantity - COALESCE(wr_return_quantity,0) AS sales_cnt , + ws_ext_sales_price - COALESCE(wr_return_amt,0.0) AS sales_amt + FROM web_sales + JOIN item ON i_item_sk=ws_item_sk + JOIN date_dim ON d_date_sk=ws_sold_date_sk + LEFT JOIN web_returns ON (ws_order_number=wr_order_number + AND ws_item_sk=wr_item_sk) + WHERE i_category='Books') sales_detail + GROUP BY d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id) +SELECT prev_yr.d_year AS prev_year , + curr_yr.d_year AS year_ , + curr_yr.i_brand_id , + curr_yr.i_class_id , + curr_yr.i_category_id , + curr_yr.i_manufact_id , + prev_yr.sales_cnt AS prev_yr_cnt , + curr_yr.sales_cnt AS curr_yr_cnt , + curr_yr.sales_cnt-prev_yr.sales_cnt AS sales_cnt_diff , + curr_yr.sales_amt-prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, + all_sales prev_yr +WHERE curr_yr.i_brand_id=prev_yr.i_brand_id + AND curr_yr.i_class_id=prev_yr.i_class_id + AND curr_yr.i_category_id=prev_yr.i_category_id + AND curr_yr.i_manufact_id=prev_yr.i_manufact_id + AND curr_yr.d_year=2002 + AND prev_yr.d_year=2002-1 + AND CAST(curr_yr.sales_cnt AS DECIMAL(17,2))/CAST(prev_yr.sales_cnt AS DECIMAL(17,2))<0.9 +ORDER BY sales_cnt_diff, + sales_amt_diff +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = CAST('Books' AS VARCHAR))" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = CAST('Books' AS VARCHAR))" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_order_number = wr_order_number)", + "(ws_item_sk = wr_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": "(i_category = CAST('Books' AS VARCHAR))" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ] + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Expressions": [ + "sum(sales_cnt)", + "sum(sales_amt)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_brand_id = i_brand_id)", + "(i_class_id = i_class_id)", + "(i_category_id = i_category_id)", + "(i_manufact_id = i_manufact_id)", + "(d_year = CAST(2002 AS BIGINT))", + "(d_year = CAST((2002 - 1) AS BIGINT))", + "((CAST(CAST(sales_cnt AS DECIMAL(17,2)) AS DOUBLE) / CAST(CAST(sales_cnt AS DECIMAL(17,2)) AS DOUBLE)) < CAST(0.9 AS DOUBLE))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "prev_year", + "year_", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "prev_yr_cnt", + "curr_yr_cnt", + "sales_cnt_diff", + "sales_amt_diff" + ] + } + } + ], + "extra_info": { + "Order By": [ + "(curr_yr.sales_cnt - prev_yr.sales_cnt)", + "(curr_yr.sales_amt - prev_yr.sales_amt)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "all_sales", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_order_number", + "cs_quantity", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Books\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2002i64) or ($.d_year = 2001i64))", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ], + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ticket_number", + "ss_quantity", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Books\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2002i64) or ($.d_year = 2001i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_order_number", + "ws_quantity", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_category = \"Books\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(($.d_year = 2002i64) or ($.d_year = 2001i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_item_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_order_number = wr_order_number)", + "(ws_item_sk = wr_item_sk)" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1900)", + "__internal_compress_integral_uinteger(#1, 1001001)", + "__internal_compress_integral_utinyint(#2, 1)", + "__internal_compress_integral_utinyint(#3, 1)", + "__internal_compress_integral_usmallint(#4, 1)", + "__internal_compress_integral_utinyint(#5, -99)", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "57692", + "Distinct Targets": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1900)", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 1)", + "__internal_decompress_integral_bigint(#3, 1)", + "__internal_decompress_integral_bigint(#4, 1)", + "__internal_decompress_integral_bigint(#5, -99)", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1900)", + "__internal_compress_integral_uinteger(#1, 1001001)", + "__internal_compress_integral_utinyint(#2, 1)", + "__internal_compress_integral_utinyint(#3, 1)", + "__internal_compress_integral_usmallint(#4, 1)", + "#5", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Expressions": [ + "sum(sales_cnt)", + "sum(sales_amt)" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1900)", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 1)", + "__internal_decompress_integral_bigint(#3, 1)", + "__internal_decompress_integral_bigint(#4, 1)", + "#5", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "(d_year = 2002)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "(d_year = 2001)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(i_brand_id = i_brand_id)", + "(i_class_id = i_class_id)", + "(i_category_id = i_category_id)", + "(i_manufact_id = i_manufact_id)" + ], + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Expressions": "((CAST(CAST(sales_cnt AS DECIMAL(17,2)) AS DOUBLE) / CAST(CAST(sales_cnt AS DECIMAL(17,2)) AS DOUBLE)) < 0.9)", + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Expressions": [ + "prev_year", + "year_", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "prev_yr_cnt", + "curr_yr_cnt", + "sales_cnt_diff", + "sales_amt_diff" + ], + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "all_sales", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_order_number", + "cs_quantity", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Books'", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2002i64) or ($.d_year = 2001i64))", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_item_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "cs_order_number = cr_order_number", + "cs_item_sk = cr_item_sk" + ], + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ticket_number", + "ss_quantity", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Books'", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2002i64) or ($.d_year = 2001i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_item_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ss_ticket_number = sr_ticket_number", + "ss_item_sk = sr_item_sk" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_order_number", + "ws_quantity", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_category='Books'", + "Projections": [ + "i_item_sk", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id" + ], + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(($.d_year = 2002i64) or ($.d_year = 2001i64))", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_item_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ws_order_number = wr_order_number", + "ws_item_sk = wr_item_sk" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Aggregates": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1900)", + "__internal_compress_integral_uinteger(#1, 1001001)", + "__internal_compress_integral_utinyint(#2, 1)", + "__internal_compress_integral_utinyint(#3, 1)", + "__internal_compress_integral_usmallint(#4, 1)", + "__internal_compress_integral_utinyint(#5, -99)", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Aggregates": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1900)", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 1)", + "__internal_decompress_integral_bigint(#3, 1)", + "__internal_decompress_integral_bigint(#4, 1)", + "__internal_decompress_integral_bigint(#5, -99)", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1900)", + "__internal_compress_integral_uinteger(#1, 1001001)", + "__internal_compress_integral_utinyint(#2, 1)", + "__internal_compress_integral_utinyint(#3, 1)", + "__internal_compress_integral_usmallint(#4, 1)", + "#5", + "#6" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": [ + "sum(#5)", + "sum(#6)" + ], + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1900)", + "__internal_decompress_integral_bigint(#1, 1001001)", + "__internal_decompress_integral_bigint(#2, 1)", + "__internal_decompress_integral_bigint(#3, 1)", + "__internal_decompress_integral_bigint(#4, 1)", + "#5", + "#6" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expression": "(d_year = 2002)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expression": "(d_year = 2001)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "i_brand_id = i_brand_id", + "i_class_id = i_class_id", + "i_category_id = i_category_id", + "i_manufact_id = i_manufact_id" + ], + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Expression": "((CAST(CAST(sales_cnt AS DECIMAL(17,2)) AS DOUBLE) / CAST(CAST(sales_cnt AS DECIMAL(17,2)) AS DOUBLE)) < 0.9)", + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Projections": [ + "prev_year", + "year_", + "i_brand_id", + "i_class_id", + "i_category_id", + "i_manufact_id", + "prev_yr_cnt", + "curr_yr_cnt", + "sales_cnt_diff", + "sales_amt_diff" + ], + "Estimated Cardinality": "23168" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "(curr_yr.sales_cnt - prev_yr.sales_cnt) ASC", + "(curr_yr.sales_amt - prev_yr.sales_amt) ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "all_sales", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q76.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q76.slt.no new file mode 100644 index 00000000000..573437a6b87 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q76.slt.no @@ -0,0 +1,1361 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT channel, + col_name, + d_year, + d_qoy, + i_category, + COUNT(*) sales_cnt, + SUM(ext_sales_price) sales_amt +FROM + ( SELECT 'store' AS channel, + 'ss_store_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, + item, + date_dim + WHERE ss_store_sk IS NULL + AND ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + UNION ALL SELECT 'web' AS channel, + 'ws_ship_customer_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, + item, + date_dim + WHERE ws_ship_customer_sk IS NULL + AND ws_sold_date_sk=d_date_sk + AND ws_item_sk=i_item_sk + UNION ALL SELECT 'catalog' AS channel, + 'cs_ship_addr_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, + item, + date_dim + WHERE cs_ship_addr_sk IS NULL + AND cs_sold_date_sk=d_date_sk + AND cs_item_sk=i_item_sk) foo +GROUP BY channel, + col_name, + d_year, + d_qoy, + i_category +ORDER BY channel NULLS FIRST, + col_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_store_sk IS NULL)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_item_sk = i_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_ship_customer_sk IS NULL)", + "(ws_sold_date_sk = d_date_sk)", + "(ws_item_sk = i_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_ship_addr_sk IS NULL)", + "(cs_sold_date_sk = d_date_sk)", + "(cs_item_sk = i_item_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category" + ], + "Expressions": [ + "count_star()", + "sum(ext_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "sales_cnt", + "sales_amt" + ] + } + } + ], + "extra_info": { + "Order By": [ + "foo.channel", + "foo.col_name", + "foo.d_year", + "foo.d_qoy", + "foo.i_category" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.is_null($.ss_store_sk)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = ss_sold_date_sk)", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.is_null($.ws_ship_customer_sk)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = ws_sold_date_sk)", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450815i64 <= $.d_date_sk <= 2452652i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.is_null($.cs_ship_addr_sk)", + "Function": "Vortex Scan", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = cs_sold_date_sk)", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_string_ubigint(#0)", + "#1", + "__internal_compress_integral_utinyint(#2, 1900)", + "__internal_compress_integral_utinyint(#3, 1)", + "#4", + "#5" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category" + ], + "Expressions": [ + "count_star()", + "sum(ext_sales_price)" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_string(#0)", + "#1", + "__internal_decompress_integral_bigint(#2, 1900)", + "__internal_decompress_integral_bigint(#3, 1)", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "sales_cnt", + "sales_amt" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.is_null($.ss_store_sk)", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = ss_sold_date_sk", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450816i64 <= $.d_date_sk <= 2452642i64)", + "Projections": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.is_null($.ws_ship_customer_sk)", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_sales_price" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = ws_sold_date_sk", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450815i64 <= $.d_date_sk <= 2452652i64)", + "Projections": [ + "d_date_sk", + "d_year", + "d_qoy" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.is_null($.cs_ship_addr_sk)", + "Projections": [ + "cs_sold_date_sk", + "cs_item_sk", + "cs_ext_sales_price" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = cs_sold_date_sk", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_string_ubigint(#0)", + "#1", + "__internal_compress_integral_utinyint(#2, 1900)", + "__internal_compress_integral_utinyint(#3, 1)", + "#4", + "#5" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category", + "ext_sales_price" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": [ + "count_star()", + "sum(#5)" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_string(#0)", + "#1", + "__internal_decompress_integral_bigint(#2, 1900)", + "__internal_decompress_integral_bigint(#3, 1)", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "219147" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "foo.channel ASC", + "foo.col_name ASC", + "foo.d_year ASC", + "foo.d_qoy ASC", + "foo.i_category ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q77.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q77.slt.no new file mode 100644 index 00000000000..c7a881c112e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q77.slt.no @@ -0,0 +1,3015 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ss AS + (SELECT s_store_sk, + sum(ss_ext_sales_price) AS sales, + sum(ss_net_profit) AS profit + FROM store_sales, + date_dim, + store + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk) , + sr AS + (SELECT s_store_sk, + sum(sr_return_amt) AS returns_, + sum(sr_net_loss) AS profit_loss + FROM store_returns, + date_dim, + store + WHERE sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), + cs AS + (SELECT cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cs_call_center_sk), + cr AS + (SELECT cr_call_center_sk, + sum(cr_return_amount) AS returns_, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, + date_dim + WHERE cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cr_call_center_sk ), + ws AS + (SELECT wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, + date_dim, + web_page + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), + wr AS + (SELECT wp_web_page_sk, + sum(wr_return_amt) AS returns_, + sum(wr_net_loss) AS profit_loss + FROM web_returns, + date_dim, + web_page + WHERE wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + ss.s_store_sk AS id , + sales , + coalesce(returns_, 0) AS returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ss + LEFT JOIN sr ON ss.s_store_sk = sr.s_store_sk + UNION ALL SELECT 'catalog channel' AS channel , + cs_call_center_sk AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM cs , + cr + UNION ALL SELECT 'web channel' AS channel , + ws.wp_web_page_sk AS id , + sales , + coalesce(returns_, 0) returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ws + LEFT JOIN wr ON ws.wp_web_page_sk = wr.wp_web_page_sk ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST, + returns_ DESC +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(ss_store_sk = s_store_sk)", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "s_store_sk", + "Expressions": [ + "sum(ss_ext_sales_price)", + "sum(ss_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "sales", + "profit" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(sr_returned_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(sr_store_sk = s_store_sk)", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "s_store_sk", + "Expressions": [ + "sum(sr_return_amt)", + "sum(sr_net_loss)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "returns_", + "profit_loss" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "cs_call_center_sk", + "Expressions": [ + "sum(cs_ext_sales_price)", + "sum(cs_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cs_call_center_sk", + "sales", + "profit" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cr_returned_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "cr_call_center_sk", + "Expressions": [ + "sum(cr_return_amount)", + "sum(cr_net_loss)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cr_call_center_sk", + "returns_", + "profit_loss" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "wp_web_page_id", + "wp_rec_start_date", + "wp_rec_end_date", + "wp_creation_date_sk", + "wp_access_date_sk", + "wp_autogen_flag", + "wp_customer_sk", + "wp_url", + "wp_type", + "wp_char_count", + "wp_link_count", + "wp_image_count", + "wp_max_ad_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(ws_web_page_sk = wp_web_page_sk)", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "wp_web_page_sk", + "Expressions": [ + "sum(ws_ext_sales_price)", + "sum(ws_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "sales", + "profit" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "wp_web_page_id", + "wp_rec_start_date", + "wp_rec_end_date", + "wp_creation_date_sk", + "wp_access_date_sk", + "wp_autogen_flag", + "wp_customer_sk", + "wp_url", + "wp_type", + "wp_char_count", + "wp_link_count", + "wp_image_count", + "wp_max_ad_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(wr_returned_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(wr_web_page_sk = wp_web_page_sk)", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "wp_web_page_sk", + "Expressions": [ + "sum(wr_return_amt)", + "sum(wr_net_loss)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "returns_", + "profit_loss" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(s_store_sk = s_store_sk)" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "3" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "4" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "5" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(wp_web_page_sk = wp_web_page_sk)" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "id" + ], + "Expressions": [ + "sum(sales)", + "sum(returns_)", + "sum(profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + } + ], + "extra_info": { + "Order By": [ + "x.channel", + "x.id", + "sum(x.returns_)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "wr", + "Table Index": "5" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "4" + } + } + ], + "extra_info": { + "CTE Name": "cr", + "Table Index": "3" + } + } + ], + "extra_info": { + "CTE Name": "cs", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "sr", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "s_store_sk", + "Expressions": [ + "sum(ss_ext_sales_price)", + "sum(ss_net_profit)" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "sales", + "profit" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "182344" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_store_sk", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "28576" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_store_sk = s_store_sk)", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1)" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Groups": "s_store_sk", + "Expressions": [ + "sum(sr_return_amt)", + "sum(sr_net_loss)" + ], + "Estimated Cardinality": "18063" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "18063" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "18063" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "18063" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(s_store_sk = s_store_sk)", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "182344" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_call_center_sk", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 2450815)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": "cs_call_center_sk", + "Expressions": [ + "sum(cs_ext_sales_price)", + "sum(cs_net_profit)" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_call_center_sk", + "sales", + "profit" + ], + "Estimated Cardinality": "90808" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "90808" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_call_center_sk", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450852i64 <= $.d_date_sk <= 2452907i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 2450852)" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "cr_call_center_sk", + "Expressions": [ + "sum(cr_return_amount)", + "sum(cr_net_loss)" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": [ + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "830348352" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "830348352" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_web_page_sk", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Expressions": "wp_web_page_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_page_sk = wp_web_page_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": "wp_web_page_sk", + "Expressions": [ + "sum(ws_ext_sales_price)", + "sum(ws_net_profit)" + ], + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "sales", + "profit" + ], + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "45280" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450865i64 <= $.d_date_sk <= 2452974i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_web_page_sk", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Expressions": "wp_web_page_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wr_web_page_sk = wp_web_page_sk)", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = wr_returned_date_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 2450865)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "#3" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "wp_web_page_sk", + "Expressions": [ + "sum(wr_return_amt)", + "sum(wr_net_loss)" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(wp_web_page_sk = wp_web_page_sk)", + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "830575976" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "id" + ], + "Expressions": [ + "sum(sales)", + "sum(returns_)", + "sum(profit)" + ], + "Estimated Cardinality": "274040" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "274040" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_sk", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "182344" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_store_sk", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450821i64 <= $.d_date_sk <= 2452820i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "28576" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "s_store_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_store_sk = s_store_sk", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1)" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_sk", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "18063" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "s_store_sk = s_store_sk", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "182344" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_call_center_sk", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 2450815)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "cs_call_center_sk", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "90808" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_returned_date_sk", + "cr_call_center_sk", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450852i64 <= $.d_date_sk <= 2452907i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_usmallint(#3, 2450852)" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "cr_call_center_sk", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Projections": [ + "returns_", + "profit_loss" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "830348352" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_web_page_sk", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "wp_web_page_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_page_sk = wp_web_page_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_utinyint(#0, 1)", + "#1", + "#2", + "__internal_compress_integral_utinyint(#3, 1)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "wp_web_page_sk", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "45280" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450865i64 <= $.d_date_sk <= 2452974i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_returned_date_sk", + "wr_web_page_sk", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "wp_web_page_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wr_web_page_sk = wp_web_page_sk", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = wr_returned_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 2450865)", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "#3" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "wp_web_page_sk", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1", + "#2" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "wp_web_page_sk = wp_web_page_sk", + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "45280" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "830575976" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)", + "sum(#4)" + ], + "Estimated Cardinality": "274040" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "x.channel ASC", + "x.id ASC", + "sum(x.returns_) DESC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q78.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q78.slt.no new file mode 100644 index 00000000000..b58ee92dbb5 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q78.slt.no @@ -0,0 +1,2009 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ws AS + (SELECT d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + sum(ws_quantity) ws_qty, + sum(ws_wholesale_cost) ws_wc, + sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN web_returns ON wr_order_number=ws_order_number + AND ws_item_sk=wr_item_sk + JOIN date_dim ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, + ws_item_sk, + ws_bill_customer_sk ), + cs AS + (SELECT d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + sum(cs_quantity) cs_qty, + sum(cs_wholesale_cost) cs_wc, + sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN catalog_returns ON cr_order_number=cs_order_number + AND cs_item_sk=cr_item_sk + JOIN date_dim ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, + cs_item_sk, + cs_bill_customer_sk ), + ss AS + (SELECT d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + sum(ss_quantity) ss_qty, + sum(ss_wholesale_cost) ss_wc, + sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN store_returns ON sr_ticket_number=ss_ticket_number + AND ss_item_sk=sr_item_sk + JOIN date_dim ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, + ss_item_sk, + ss_customer_sk ) +SELECT ss_sold_year, + ss_item_sk, + ss_customer_sk, + round((ss_qty*1.00)/(coalesce(ws_qty,0)+coalesce(cs_qty,0)),2) ratio, + ss_qty store_qty, + ss_wc store_wholesale_cost, + ss_sp store_sales_price, + coalesce(ws_qty,0)+coalesce(cs_qty,0) other_chan_qty, + coalesce(ws_wc,0)+coalesce(cs_wc,0) other_chan_wholesale_cost, + coalesce(ws_sp,0)+coalesce(cs_sp,0) other_chan_sales_price +FROM ss +LEFT JOIN ws ON (ws_sold_year=ss_sold_year + AND ws_item_sk=ss_item_sk + AND ws_customer_sk=ss_customer_sk) +LEFT JOIN cs ON (cs_sold_year=ss_sold_year + AND cs_item_sk=ss_item_sk + AND cs_customer_sk=ss_customer_sk) +WHERE (coalesce(ws_qty,0)>0 + OR coalesce(cs_qty, 0)>0) + AND ss_sold_year=2000 +ORDER BY ss_sold_year, + ss_item_sk, + ss_customer_sk, + ss_qty DESC, + ss_wc DESC, + ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + ratio +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_order_number = wr_order_number)", + "(ws_item_sk = wr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)" + } + } + ], + "extra_info": { + "Expressions": "(wr_order_number IS NULL)" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "ws_item_sk", + "ws_bill_customer_sk" + ], + "Expressions": [ + "sum(ws_quantity)", + "sum(ws_wholesale_cost)", + "sum(ws_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_year", + "ws_item_sk", + "ws_customer_sk", + "ws_qty", + "ws_wc", + "ws_sp" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)" + } + } + ], + "extra_info": { + "Expressions": "(cr_order_number IS NULL)" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "cs_item_sk", + "cs_bill_customer_sk" + ], + "Expressions": [ + "sum(cs_quantity)", + "sum(cs_wholesale_cost)", + "sum(cs_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_year", + "cs_item_sk", + "cs_customer_sk", + "cs_qty", + "cs_wc", + "cs_sp" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)" + } + } + ], + "extra_info": { + "Expressions": "(sr_ticket_number IS NULL)" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "ss_item_sk", + "ss_customer_sk" + ], + "Expressions": [ + "sum(ss_quantity)", + "sum(ss_wholesale_cost)", + "sum(ss_sales_price)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ss_qty", + "ss_wc", + "ss_sp" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_sold_year = ws_sold_year)", + "(ss_item_sk = ws_item_sk)", + "(ss_customer_sk = ws_customer_sk)" + ] + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_sold_year = cs_sold_year)", + "(ss_item_sk = cs_item_sk)", + "(ss_customer_sk = cs_customer_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "((COALESCE(ws_qty, CAST(0 AS HUGEINT)) > CAST(0 AS HUGEINT)) OR (COALESCE(cs_qty, CAST(0 AS HUGEINT)) > CAST(0 AS HUGEINT)))", + "(ss_sold_year = CAST(2000 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ratio", + "store_qty", + "store_wholesale_cost", + "store_sales_price", + "other_chan_qty", + "other_chan_wholesale_cost", + "other_chan_sales_price" + ] + } + } + ], + "extra_info": { + "Order By": [ + "ss.ss_sold_year", + "ss.ss_item_sk", + "ss.ss_customer_sk", + "ss.ss_qty", + "ss.ss_wc", + "ss.ss_sp", + "(COALESCE(ws.ws_qty, 0) + COALESCE(cs.cs_qty, 0))", + "(COALESCE(ws.ws_wc, 0) + COALESCE(cs.cs_wc, 0))", + "(COALESCE(ws.ws_sp, 0) + COALESCE(cs.cs_sp, 0))", + "round(((ss.ss_qty * 1.00) / (COALESCE(ws.ws_qty, 0) + COALESCE(cs.cs_qty, 0))), 2)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "ss", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "cs", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ws", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_ticket_number = sr_ticket_number)", + "(ss_item_sk = sr_item_sk)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "(sr_ticket_number IS NULL)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 2000)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "ss_item_sk", + "ss_customer_sk" + ], + "Expressions": [ + "sum(ss_quantity)", + "sum(ss_wholesale_cost)", + "sum(ss_sales_price)" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ss_qty", + "ss_wc", + "ss_sp" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_item_sk", + "wr_order_number" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_order_number = wr_order_number)", + "(ws_item_sk = wr_item_sk)" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "(wr_order_number IS NULL)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 2000)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "ws_item_sk", + "ws_bill_customer_sk" + ], + "Expressions": [ + "sum(ws_quantity)", + "sum(ws_wholesale_cost)", + "sum(ws_sales_price)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_year", + "ws_item_sk", + "ws_customer_sk", + "ws_qty", + "ws_wc", + "ws_sp" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_sold_year = ws_sold_year)", + "(ss_item_sk = ws_item_sk)", + "(ss_customer_sk = ws_customer_sk)" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_order_number = cr_order_number)", + "(cs_item_sk = cr_item_sk)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "(cr_order_number IS NULL)", + "Estimated Cardinality": "28731" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 2000)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": [ + "d_year", + "cs_item_sk", + "cs_bill_customer_sk" + ], + "Expressions": [ + "sum(cs_quantity)", + "sum(cs_wholesale_cost)", + "sum(cs_sales_price)" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_year", + "cs_item_sk", + "cs_customer_sk", + "cs_qty", + "cs_wc", + "cs_sp" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_sold_year = cs_sold_year)", + "(ss_item_sk = cs_item_sk)", + "(ss_customer_sk = cs_customer_sk)" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expressions": "((COALESCE(ws_qty, 0) > 0) OR (COALESCE(cs_qty, 0) > 0))", + "Estimated Cardinality": "2306" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ss_qty", + "(COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0))", + "store_wholesale_cost", + "store_sales_price", + "ws_wc", + "cs_wc", + "ws_sp", + "cs_sp" + ], + "Estimated Cardinality": "2306" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ratio", + "store_qty", + "store_wholesale_cost", + "store_sales_price", + "other_chan_qty", + "other_chan_wholesale_cost", + "other_chan_sales_price" + ], + "Estimated Cardinality": "2306" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_item_sk", + "sr_ticket_number" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ss_ticket_number = sr_ticket_number", + "ss_item_sk = sr_item_sk" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expression": "(sr_ticket_number IS NULL)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 2000)" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "ss_item_sk", + "ss_customer_sk", + "ss_quantity", + "ss_wholesale_cost", + "ss_sales_price" + ], + "Estimated Cardinality": "11535" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "sum(#4)", + "sum(#5)" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_sales_price" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_item_sk", + "wr_order_number" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ws_order_number = wr_order_number", + "ws_item_sk = wr_item_sk" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expression": "(wr_order_number IS NULL)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 2000)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_quantity", + "ws_wholesale_cost", + "ws_sales_price" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "sum(#4)", + "sum(#5)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ss_sold_year = ws_sold_year", + "ss_item_sk = ws_item_sk", + "ss_customer_sk = ws_customer_sk" + ], + "Estimated Cardinality": "11534" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_sales_price" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_item_sk", + "cr_order_number" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "cs_order_number = cr_order_number", + "cs_item_sk = cr_item_sk" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expression": "(cr_order_number IS NULL)", + "Estimated Cardinality": "28731" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "28731" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": [ + "d_date_sk", + "d_year" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "#2", + "#3", + "#4", + "__internal_compress_integral_utinyint(#5, 2000)" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Projections": [ + "d_year", + "cs_item_sk", + "cs_bill_customer_sk", + "cs_quantity", + "cs_wholesale_cost", + "cs_sales_price" + ], + "Estimated Cardinality": "5744" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "sum(#4)", + "sum(#5)" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2000)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "5743" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ss_sold_year = cs_sold_year", + "ss_item_sk = cs_item_sk", + "ss_customer_sk = cs_customer_sk" + ], + "Estimated Cardinality": "11534" + } + } + ], + "extra_info": { + "Expression": "((COALESCE(ws_qty, 0) > 0) OR (COALESCE(cs_qty, 0) > 0))", + "Estimated Cardinality": "2306" + } + } + ], + "extra_info": { + "Projections": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ss_qty", + "(COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0))", + "store_wholesale_cost", + "store_sales_price", + "ws_wc", + "cs_wc", + "ws_sp", + "cs_sp" + ], + "Estimated Cardinality": "2306" + } + } + ], + "extra_info": { + "Projections": [ + "ss_sold_year", + "ss_item_sk", + "ss_customer_sk", + "ratio", + "store_qty", + "store_wholesale_cost", + "store_sales_price", + "other_chan_qty", + "other_chan_wholesale_cost", + "other_chan_sales_price" + ], + "Estimated Cardinality": "2306" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "ss.ss_sold_year ASC", + "ss.ss_item_sk ASC", + "ss.ss_customer_sk ASC", + "ss.ss_qty DESC", + "ss.ss_wc DESC", + "ss.ss_sp DESC", + "(COALESCE(ws.ws_qty, 0) + COALESCE(cs.cs_qty, 0)) ASC", + "(COALESCE(ws.ws_wc, 0) + COALESCE(cs.cs_wc, 0)) ASC", + "(COALESCE(ws.ws_sp, 0) + COALESCE(cs.cs_sp, 0)) ASC", + "round(((ss.ss_qty * 1.00) / (COALESCE(ws.ws_qty, 0) + COALESCE(cs.cs_qty, 0))), 2) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q79.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q79.slt.no new file mode 100644 index 00000000000..d8039b8e64f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q79.slt.no @@ -0,0 +1,821 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT c_last_name, + c_first_name, + SUBSTRING(s_city,1,30), + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + store.s_city , + sum(ss_coupon_amt) amt , + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count > 2) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + store.s_city) ms, + customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + SUBSTRING(s_city,1,30) NULLS FIRST, + profit NULLS FIRST, + ss_ticket_number +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "((hd_dep_count = CAST(6 AS BIGINT)) OR (hd_vehicle_count > CAST(2 AS INTEGER)))", + "(d_dow = CAST(1 AS BIGINT))", + "(d_year IN (CAST(1999 AS BIGINT), CAST((1999 + 1) AS BIGINT), CAST((1999 + 2) AS BIGINT)))", + "(s_number_employees >= CAST(200 AS BIGINT))", + "(s_number_employees <= CAST(295 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "s_city" + ], + "Expressions": [ + "sum(ss_coupon_amt)", + "sum(ss_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "s_city", + "amt", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(ss_customer_sk = c_customer_sk)" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "\"substring\"(s_city, CAST(1 AS BIGINT), CAST(30 AS BIGINT))", + "ss_ticket_number", + "amt", + "profit" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_last_name", + "memory.main.customer.c_first_name", + "main.\"substring\"(ms.s_city, 1, 30)", + "ms.profit", + "ms.ss_ticket_number" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_coupon_amt", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([1999i64, 2000i64, 2001i64], $.d_year)", + "($.d_dow = 1i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(200i64 <= $.s_number_employees <= 295i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_city" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(($.hd_dep_count = 6i64) or ($.hd_vehicle_count > 2i32))", + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 1)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "s_city" + ], + "Expressions": [ + "sum(ss_coupon_amt)", + "sum(ss_net_profit)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_ticket_number", + "ss_customer_sk", + "s_city", + "amt", + "profit" + ], + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "\"substring\"(s_city, 1, 30)", + "ss_ticket_number", + "amt", + "profit" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_ticket_number", + "ss_coupon_amt", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_dow=1", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(200i64 <= $.s_number_employees <= 295i64)", + "Projections": [ + "s_store_sk", + "s_city" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(($.hd_dep_count = 6i64) or ($.hd_vehicle_count > 2i32))", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 1)", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 1)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk", + "ss_addr_sk", + "s_city", + "ss_coupon_amt", + "ss_net_profit" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3" + ], + "Aggregates": [ + "sum(#4)", + "sum(#5)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)", + "__internal_decompress_integral_bigint(#2, 1)", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "ss_ticket_number", + "ss_customer_sk", + "s_city", + "amt", + "profit" + ], + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "\"substring\"(s_city, 1, 30)", + "ss_ticket_number", + "amt", + "profit" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer.c_last_name ASC", + "memory.main.customer.c_first_name ASC", + "main.\"substring\"(ms.s_city, 1, 30) ASC", + "ms.profit ASC", + "ms.ss_ticket_number ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q8.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q8.slt.no new file mode 100644 index 00000000000..6fb0934ff07 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q8.slt.no @@ -0,0 +1,1436 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT s_store_name, + sum(ss_net_profit) +FROM store_sales, + date_dim, + store, + (SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE SUBSTRING(ca_zip, 1, 5) IN ('24128', + '76232', + '65084', + '87816', + '83926', + '77556', + '20548', + '26231', + '43848', + '15126', + '91137', + '61265', + '98294', + '25782', + '17920', + '18426', + '98235', + '40081', + '84093', + '28577', + '55565', + '17183', + '54601', + '67897', + '22752', + '86284', + '18376', + '38607', + '45200', + '21756', + '29741', + '96765', + '23932', + '89360', + '29839', + '25989', + '28898', + '91068', + '72550', + '10390', + '18845', + '47770', + '82636', + '41367', + '76638', + '86198', + '81312', + '37126', + '39192', + '88424', + '72175', + '81426', + '53672', + '10445', + '42666', + '66864', + '66708', + '41248', + '48583', + '82276', + '18842', + '78890', + '49448', + '14089', + '38122', + '34425', + '79077', + '19849', + '43285', + '39861', + '66162', + '77610', + '13695', + '99543', + '83444', + '83041', + '12305', + '57665', + '68341', + '25003', + '57834', + '62878', + '49130', + '81096', + '18840', + '27700', + '23470', + '50412', + '21195', + '16021', + '76107', + '71954', + '68309', + '18119', + '98359', + '64544', + '10336', + '86379', + '27068', + '39736', + '98569', + '28915', + '24206', + '56529', + '57647', + '54917', + '42961', + '91110', + '63981', + '14922', + '36420', + '23006', + '67467', + '32754', + '30903', + '20260', + '31671', + '51798', + '72325', + '85816', + '68621', + '13955', + '36446', + '41766', + '68806', + '16725', + '15146', + '22744', + '35850', + '88086', + '51649', + '18270', + '52867', + '39972', + '96976', + '63792', + '11376', + '94898', + '13595', + '10516', + '90225', + '58943', + '39371', + '94945', + '28587', + '96576', + '57855', + '28488', + '26105', + '83933', + '25858', + '34322', + '44438', + '73171', + '30122', + '34102', + '22685', + '71256', + '78451', + '54364', + '13354', + '45375', + '40558', + '56458', + '28286', + '45266', + '47305', + '69399', + '83921', + '26233', + '11101', + '15371', + '69913', + '35942', + '15882', + '25631', + '24610', + '44165', + '99076', + '33786', + '70738', + '26653', + '14328', + '72305', + '62496', + '22152', + '10144', + '64147', + '48425', + '14663', + '21076', + '18799', + '30450', + '63089', + '81019', + '68893', + '24996', + '51200', + '51211', + '45692', + '92712', + '70466', + '79994', + '22437', + '25280', + '38935', + '71791', + '73134', + '56571', + '14060', + '19505', + '72425', + '56575', + '74351', + '68786', + '51650', + '20004', + '18383', + '76614', + '11634', + '18906', + '15765', + '41368', + '73241', + '76698', + '78567', + '97189', + '28545', + '76231', + '75691', + '22246', + '51061', + '90578', + '56691', + '68014', + '51103', + '94167', + '57047', + '14867', + '73520', + '15734', + '63435', + '25733', + '35474', + '24676', + '94627', + '53535', + '17879', + '15559', + '53268', + '59166', + '11928', + '59402', + '33282', + '45721', + '43933', + '68101', + '33515', + '36634', + '71286', + '19736', + '58058', + '55253', + '67473', + '41918', + '19515', + '36495', + '19430', + '22351', + '77191', + '91393', + '49156', + '50298', + '87501', + '18652', + '53179', + '18767', + '63193', + '23968', + '65164', + '68880', + '21286', + '72823', + '58470', + '67301', + '13394', + '31016', + '70372', + '67030', + '40604', + '24317', + '45748', + '39127', + '26065', + '77721', + '31029', + '31880', + '60576', + '24671', + '45549', + '13376', + '50016', + '33123', + '19769', + '22927', + '97789', + '46081', + '72151', + '15723', + '46136', + '51949', + '68100', + '96888', + '64528', + '14171', + '79777', + '28709', + '11489', + '25103', + '32213', + '78668', + '22245', + '15798', + '27156', + '37930', + '62971', + '21337', + '51622', + '67853', + '10567', + '38415', + '15455', + '58263', + '42029', + '60279', + '37125', + '56240', + '88190', + '50308', + '26859', + '64457', + '89091', + '82136', + '62377', + '36233', + '63837', + '58078', + '17043', + '30010', + '60099', + '28810', + '98025', + '29178', + '87343', + '73273', + '30469', + '64034', + '39516', + '86057', + '21309', + '90257', + '67875', + '40162', + '11356', + '73650', + '61810', + '72013', + '30431', + '22461', + '19512', + '13375', + '55307', + '30625', + '83849', + '68908', + '26689', + '96451', + '38193', + '46820', + '88885', + '84935', + '69035', + '83144', + '47537', + '56616', + '94983', + '48033', + '69952', + '25486', + '61547', + '27385', + '61860', + '58048', + '56910', + '16807', + '17871', + '35258', + '31387', + '35458', + '35576') INTERSECT + SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip, + count(*) cnt + FROM customer_address, + customer + WHERE ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag='Y' + GROUP BY ca_zip + HAVING count(*) > 10)A1)A2) V1 +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 1998 + AND (SUBSTRING(s_zip, 1, 2) = SUBSTRING(V1.ca_zip, 1, 2)) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "(\"substring\"(ca_zip, CAST(1 AS BIGINT), CAST(5 AS BIGINT)) IN (CAST('24128' AS VARCHAR), CAST('76232' AS VARCHAR), CAST('65084' AS VARCHAR), CAST('87816' AS VARCHAR), CAST('83926' AS VARCHAR), CAST('77556' AS VARCHAR), CAST('20548' AS VARCHAR), CAST('26231' AS VARCHAR), CAST('43848' AS VARCHAR), CAST('15126' AS VARCHAR), CAST('91137' AS VARCHAR), CAST('61265' AS VARCHAR), CAST('98294' AS VARCHAR), CAST('25782' AS VARCHAR), CAST('17920' AS VARCHAR), CAST('18426' AS VARCHAR), CAST('98235' AS VARCHAR), CAST('40081' AS VARCHAR), CAST('84093' AS VARCHAR), CAST('28577' AS VARCHAR), CAST('55565' AS VARCHAR), CAST('17183' AS VARCHAR), CAST('54601' AS VARCHAR), CAST('67897' AS VARCHAR), CAST('22752' AS VARCHAR), CAST('86284' AS VARCHAR), CAST('18376' AS VARCHAR), CAST('38607' AS VARCHAR), CAST('45200' AS VARCHAR), CAST('21756' AS VARCHAR), CAST('29741' AS VARCHAR), CAST('96765' AS VARCHAR), CAST('23932' AS VARCHAR), CAST('89360' AS VARCHAR), CAST('29839' AS VARCHAR), CAST('25989' AS VARCHAR), CAST('28898' AS VARCHAR), CAST('91068' AS VARCHAR), CAST('72550' AS VARCHAR), CAST('10390' AS VARCHAR), CAST('18845' AS VARCHAR), CAST('47770' AS VARCHAR), CAST('82636' AS VARCHAR), CAST('41367' AS VARCHAR), CAST('76638' AS VARCHAR), CAST('86198' AS VARCHAR), CAST('81312' AS VARCHAR), CAST('37126' AS VARCHAR), CAST('39192' AS VARCHAR), CAST('88424' AS VARCHAR), CAST('72175' AS VARCHAR), CAST('81426' AS VARCHAR), CAST('53672' AS VARCHAR), CAST('10445' AS VARCHAR), CAST('42666' AS VARCHAR), CAST('66864' AS VARCHAR), CAST('66708' AS VARCHAR), CAST('41248' AS VARCHAR), CAST('48583' AS VARCHAR), CAST('82276' AS VARCHAR), CAST('18842' AS VARCHAR), CAST('78890' AS VARCHAR), CAST('49448' AS VARCHAR), CAST('14089' AS VARCHAR), CAST('38122' AS VARCHAR), CAST('34425' AS VARCHAR), CAST('79077' AS VARCHAR), CAST('19849' AS VARCHAR), CAST('43285' AS VARCHAR), CAST('39861' AS VARCHAR), CAST('66162' AS VARCHAR), CAST('77610' AS VARCHAR), CAST('13695' AS VARCHAR), CAST('99543' AS VARCHAR), CAST('83444' AS VARCHAR), CAST('83041' AS VARCHAR), CAST('12305' AS VARCHAR), CAST('57665' AS VARCHAR), CAST('68341' AS VARCHAR), CAST('25003' AS VARCHAR), CAST('57834' AS VARCHAR), CAST('62878' AS VARCHAR), CAST('49130' AS VARCHAR), CAST('81096' AS VARCHAR), CAST('18840' AS VARCHAR), CAST('27700' AS VARCHAR), CAST('23470' AS VARCHAR), CAST('50412' AS VARCHAR), CAST('21195' AS VARCHAR), CAST('16021' AS VARCHAR), CAST('76107' AS VARCHAR), CAST('71954' AS VARCHAR), CAST('68309' AS VARCHAR), CAST('18119' AS VARCHAR), CAST('98359' AS VARCHAR), CAST('64544' AS VARCHAR), CAST('10336' AS VARCHAR), CAST('86379' AS VARCHAR), CAST('27068' AS VARCHAR), CAST('39736' AS VARCHAR), CAST('98569' AS VARCHAR), CAST('28915' AS VARCHAR), CAST('24206' AS VARCHAR), CAST('56529' AS VARCHAR), CAST('57647' AS VARCHAR), CAST('54917' AS VARCHAR), CAST('42961' AS VARCHAR), CAST('91110' AS VARCHAR), CAST('63981' AS VARCHAR), CAST('14922' AS VARCHAR), CAST('36420' AS VARCHAR), CAST('23006' AS VARCHAR), CAST('67467' AS VARCHAR), CAST('32754' AS VARCHAR), CAST('30903' AS VARCHAR), CAST('20260' AS VARCHAR), CAST('31671' AS VARCHAR), CAST('51798' AS VARCHAR), CAST('72325' AS VARCHAR), CAST('85816' AS VARCHAR), CAST('68621' AS VARCHAR), CAST('13955' AS VARCHAR), CAST('36446' AS VARCHAR), CAST('41766' AS VARCHAR), CAST('68806' AS VARCHAR), CAST('16725' AS VARCHAR), CAST('15146' AS VARCHAR), CAST('22744' AS VARCHAR), CAST('35850' AS VARCHAR), CAST('88086' AS VARCHAR), CAST('51649' AS VARCHAR), CAST('18270' AS VARCHAR), CAST('52867' AS VARCHAR), CAST('39972' AS VARCHAR), CAST('96976' AS VARCHAR), CAST('63792' AS VARCHAR), CAST('11376' AS VARCHAR), CAST('94898' AS VARCHAR), CAST('13595' AS VARCHAR), CAST('10516' AS VARCHAR), CAST('90225' AS VARCHAR), CAST('58943' AS VARCHAR), CAST('39371' AS VARCHAR), CAST('94945' AS VARCHAR), CAST('28587' AS VARCHAR), CAST('96576' AS VARCHAR), CAST('57855' AS VARCHAR), CAST('28488' AS VARCHAR), CAST('26105' AS VARCHAR), CAST('83933' AS VARCHAR), CAST('25858' AS VARCHAR), CAST('34322' AS VARCHAR), CAST('44438' AS VARCHAR), CAST('73171' AS VARCHAR), CAST('30122' AS VARCHAR), CAST('34102' AS VARCHAR), CAST('22685' AS VARCHAR), CAST('71256' AS VARCHAR), CAST('78451' AS VARCHAR), CAST('54364' AS VARCHAR), CAST('13354' AS VARCHAR), CAST('45375' AS VARCHAR), CAST('40558' AS VARCHAR), CAST('56458' AS VARCHAR), CAST('28286' AS VARCHAR), CAST('45266' AS VARCHAR), CAST('47305' AS VARCHAR), CAST('69399' AS VARCHAR), CAST('83921' AS VARCHAR), CAST('26233' AS VARCHAR), CAST('11101' AS VARCHAR), CAST('15371' AS VARCHAR), CAST('69913' AS VARCHAR), CAST('35942' AS VARCHAR), CAST('15882' AS VARCHAR), CAST('25631' AS VARCHAR), CAST('24610' AS VARCHAR), CAST('44165' AS VARCHAR), CAST('99076' AS VARCHAR), CAST('33786' AS VARCHAR), CAST('70738' AS VARCHAR), CAST('26653' AS VARCHAR), CAST('14328' AS VARCHAR), CAST('72305' AS VARCHAR), CAST('62496' AS VARCHAR), CAST('22152' AS VARCHAR), CAST('10144' AS VARCHAR), CAST('64147' AS VARCHAR), CAST('48425' AS VARCHAR), CAST('14663' AS VARCHAR), CAST('21076' AS VARCHAR), CAST('18799' AS VARCHAR), CAST('30450' AS VARCHAR), CAST('63089' AS VARCHAR), CAST('81019' AS VARCHAR), CAST('68893' AS VARCHAR), CAST('24996' AS VARCHAR), CAST('51200' AS VARCHAR), CAST('51211' AS VARCHAR), CAST('45692' AS VARCHAR), CAST('92712' AS VARCHAR), CAST('70466' AS VARCHAR), CAST('79994' AS VARCHAR), CAST('22437' AS VARCHAR), CAST('25280' AS VARCHAR), CAST('38935' AS VARCHAR), CAST('71791' AS VARCHAR), CAST('73134' AS VARCHAR), CAST('56571' AS VARCHAR), CAST('14060' AS VARCHAR), CAST('19505' AS VARCHAR), CAST('72425' AS VARCHAR), CAST('56575' AS VARCHAR), CAST('74351' AS VARCHAR), CAST('68786' AS VARCHAR), CAST('51650' AS VARCHAR), CAST('20004' AS VARCHAR), CAST('18383' AS VARCHAR), CAST('76614' AS VARCHAR), CAST('11634' AS VARCHAR), CAST('18906' AS VARCHAR), CAST('15765' AS VARCHAR), CAST('41368' AS VARCHAR), CAST('73241' AS VARCHAR), CAST('76698' AS VARCHAR), CAST('78567' AS VARCHAR), CAST('97189' AS VARCHAR), CAST('28545' AS VARCHAR), CAST('76231' AS VARCHAR), CAST('75691' AS VARCHAR), CAST('22246' AS VARCHAR), CAST('51061' AS VARCHAR), CAST('90578' AS VARCHAR), CAST('56691' AS VARCHAR), CAST('68014' AS VARCHAR), CAST('51103' AS VARCHAR), CAST('94167' AS VARCHAR), CAST('57047' AS VARCHAR), CAST('14867' AS VARCHAR), CAST('73520' AS VARCHAR), CAST('15734' AS VARCHAR), CAST('63435' AS VARCHAR), CAST('25733' AS VARCHAR), CAST('35474' AS VARCHAR), CAST('24676' AS VARCHAR), CAST('94627' AS VARCHAR), CAST('53535' AS VARCHAR), CAST('17879' AS VARCHAR), CAST('15559' AS VARCHAR), CAST('53268' AS VARCHAR), CAST('59166' AS VARCHAR), CAST('11928' AS VARCHAR), CAST('59402' AS VARCHAR), CAST('33282' AS VARCHAR), CAST('45721' AS VARCHAR), CAST('43933' AS VARCHAR), CAST('68101' AS VARCHAR), CAST('33515' AS VARCHAR), CAST('36634' AS VARCHAR), CAST('71286' AS VARCHAR), CAST('19736' AS VARCHAR), CAST('58058' AS VARCHAR), CAST('55253' AS VARCHAR), CAST('67473' AS VARCHAR), CAST('41918' AS VARCHAR), CAST('19515' AS VARCHAR), CAST('36495' AS VARCHAR), CAST('19430' AS VARCHAR), CAST('22351' AS VARCHAR), CAST('77191' AS VARCHAR), CAST('91393' AS VARCHAR), CAST('49156' AS VARCHAR), CAST('50298' AS VARCHAR), CAST('87501' AS VARCHAR), CAST('18652' AS VARCHAR), CAST('53179' AS VARCHAR), CAST('18767' AS VARCHAR), CAST('63193' AS VARCHAR), CAST('23968' AS VARCHAR), CAST('65164' AS VARCHAR), CAST('68880' AS VARCHAR), CAST('21286' AS VARCHAR), CAST('72823' AS VARCHAR), CAST('58470' AS VARCHAR), CAST('67301' AS VARCHAR), CAST('13394' AS VARCHAR), CAST('31016' AS VARCHAR), CAST('70372' AS VARCHAR), CAST('67030' AS VARCHAR), CAST('40604' AS VARCHAR), CAST('24317' AS VARCHAR), CAST('45748' AS VARCHAR), CAST('39127' AS VARCHAR), CAST('26065' AS VARCHAR), CAST('77721' AS VARCHAR), CAST('31029' AS VARCHAR), CAST('31880' AS VARCHAR), CAST('60576' AS VARCHAR), CAST('24671' AS VARCHAR), CAST('45549' AS VARCHAR), CAST('13376' AS VARCHAR), CAST('50016' AS VARCHAR), CAST('33123' AS VARCHAR), CAST('19769' AS VARCHAR), CAST('22927' AS VARCHAR), CAST('97789' AS VARCHAR), CAST('46081' AS VARCHAR), CAST('72151' AS VARCHAR), CAST('15723' AS VARCHAR), CAST('46136' AS VARCHAR), CAST('51949' AS VARCHAR), CAST('68100' AS VARCHAR), CAST('96888' AS VARCHAR), CAST('64528' AS VARCHAR), CAST('14171' AS VARCHAR), CAST('79777' AS VARCHAR), CAST('28709' AS VARCHAR), CAST('11489' AS VARCHAR), CAST('25103' AS VARCHAR), CAST('32213' AS VARCHAR), CAST('78668' AS VARCHAR), CAST('22245' AS VARCHAR), CAST('15798' AS VARCHAR), CAST('27156' AS VARCHAR), CAST('37930' AS VARCHAR), CAST('62971' AS VARCHAR), CAST('21337' AS VARCHAR), CAST('51622' AS VARCHAR), CAST('67853' AS VARCHAR), CAST('10567' AS VARCHAR), CAST('38415' AS VARCHAR), CAST('15455' AS VARCHAR), CAST('58263' AS VARCHAR), CAST('42029' AS VARCHAR), CAST('60279' AS VARCHAR), CAST('37125' AS VARCHAR), CAST('56240' AS VARCHAR), CAST('88190' AS VARCHAR), CAST('50308' AS VARCHAR), CAST('26859' AS VARCHAR), CAST('64457' AS VARCHAR), CAST('89091' AS VARCHAR), CAST('82136' AS VARCHAR), CAST('62377' AS VARCHAR), CAST('36233' AS VARCHAR), CAST('63837' AS VARCHAR), CAST('58078' AS VARCHAR), CAST('17043' AS VARCHAR), CAST('30010' AS VARCHAR), CAST('60099' AS VARCHAR), CAST('28810' AS VARCHAR), CAST('98025' AS VARCHAR), CAST('29178' AS VARCHAR), CAST('87343' AS VARCHAR), CAST('73273' AS VARCHAR), CAST('30469' AS VARCHAR), CAST('64034' AS VARCHAR), CAST('39516' AS VARCHAR), CAST('86057' AS VARCHAR), CAST('21309' AS VARCHAR), CAST('90257' AS VARCHAR), CAST('67875' AS VARCHAR), CAST('40162' AS VARCHAR), CAST('11356' AS VARCHAR), CAST('73650' AS VARCHAR), CAST('61810' AS VARCHAR), CAST('72013' AS VARCHAR), CAST('30431' AS VARCHAR), CAST('22461' AS VARCHAR), CAST('19512' AS VARCHAR), CAST('13375' AS VARCHAR), CAST('55307' AS VARCHAR), CAST('30625' AS VARCHAR), CAST('83849' AS VARCHAR), CAST('68908' AS VARCHAR), CAST('26689' AS VARCHAR), CAST('96451' AS VARCHAR), CAST('38193' AS VARCHAR), CAST('46820' AS VARCHAR), CAST('88885' AS VARCHAR), CAST('84935' AS VARCHAR), CAST('69035' AS VARCHAR), CAST('83144' AS VARCHAR), CAST('47537' AS VARCHAR), CAST('56616' AS VARCHAR), CAST('94983' AS VARCHAR), CAST('48033' AS VARCHAR), CAST('69952' AS VARCHAR), CAST('25486' AS VARCHAR), CAST('61547' AS VARCHAR), CAST('27385' AS VARCHAR), CAST('61860' AS VARCHAR), CAST('58048' AS VARCHAR), CAST('56910' AS VARCHAR), CAST('16807' AS VARCHAR), CAST('17871' AS VARCHAR), CAST('35258' AS VARCHAR), CAST('31387' AS VARCHAR), CAST('35458' AS VARCHAR), CAST('35576' AS VARCHAR)))" + } + } + ], + "extra_info": { + "Expressions": "ca_zip" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ca_address_sk = c_current_addr_sk)", + "(c_preferred_cust_flag = CAST('Y' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "ca_zip", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "(count_star() > CAST(10 AS BIGINT))" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_zip", + "cnt" + ] + } + } + ], + "extra_info": { + "Expressions": "ca_zip" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": "ca_zip" + } + } + ], + "extra_info": { + "Expressions": "ca_zip" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_store_sk = s_store_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(d_qoy = CAST(2 AS BIGINT))", + "(d_year = CAST(1998 AS BIGINT))", + "(\"substring\"(s_zip, CAST(1 AS BIGINT), CAST(2 AS BIGINT)) = \"substring\"(ca_zip, CAST(1 AS BIGINT), CAST(2 AS BIGINT)))" + ] + } + } + ], + "extra_info": { + "Groups": "s_store_name", + "Expressions": "sum(ss_net_profit)" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "sum(ss_net_profit)" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.store.s_store_name" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_qoy = 2i64)", + "($.d_year = 1998i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "INTERSECT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + }, + { + "name": "CHUNK_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(\"substring\"(ca_zip, 1, 5) = #0)", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": "IN (...)", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Expressions": "ca_zip", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Expressions": "ca_zip", + "Estimated Cardinality": "1000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.c_preferred_cust_flag = \"Y\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "400" + } + } + ], + "extra_info": { + "Expressions": "c_current_addr_sk", + "Estimated Cardinality": "400" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_address_sk = c_current_addr_sk)", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Groups": "ca_zip", + "Expressions": "count_star()", + "Estimated Cardinality": "906" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "906" + } + } + ], + "extra_info": { + "Expressions": "(count_star() > 10)", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Expressions": "ca_zip", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Expressions": "ca_zip", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "181", + "Distinct Targets": "ca_zip" + } + } + ], + "extra_info": { + "Expressions": "ca_zip", + "Estimated Cardinality": "181" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_name", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(\"substring\"(ca_zip, 1, 2) = \"substring\"(s_zip, 1, 2))", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "10439537" + } + } + ], + "extra_info": { + "Groups": "s_store_name", + "Expressions": "sum(ss_net_profit)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_name", + "sum(ss_net_profit)" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_store_sk", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_qoy=2" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "ca_zip", + "Estimated Cardinality": "5000" + } + }, + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "\"substring\"(ca_zip, 1, 5) = #0", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expression": "IN (...)", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Projections": "ca_zip", + "Estimated Cardinality": "1000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_zip" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "c_preferred_cust_flag='Y'", + "Projections": "c_current_addr_sk", + "Estimated Cardinality": "400" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_address_sk = c_current_addr_sk", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 1)" + ], + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Projections": "ca_zip", + "Estimated Cardinality": "1000" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "count_star()", + "Estimated Cardinality": "906" + } + } + ], + "extra_info": { + "Expression": "(count_star() > 10)", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Projections": "ca_zip", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "#0 IS NOT DISTINCT FROM #0", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Projections": "ca_zip", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "181" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_name", + "s_zip" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "\"substring\"(ca_zip, 1, 2) = \"substring\"(s_zip, 1, 2)", + "Estimated Cardinality": "181" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "10439537" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_name", + "ss_net_profit" + ], + "Estimated Cardinality": "10439537" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.store.s_store_name ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q80.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q80.slt.no new file mode 100644 index 00000000000..82eb09a8b0f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q80.slt.no @@ -0,0 +1,2711 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ssr AS + (SELECT s_store_id AS store_id, + sum(ss_ext_sales_price) AS sales, + sum(coalesce(sr_return_amt, 0)) AS returns_, + sum(ss_net_profit - coalesce(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN store_returns ON (ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number), date_dim, + store, + item, + promotion + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(coalesce(cr_return_amount, 0)) AS returns_, + sum(cs_net_profit - coalesce(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN catalog_returns ON (cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number), date_dim, + catalog_page, + item, + promotion + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(coalesce(wr_return_amt, 0)) AS returns_, + sum(ws_net_profit - coalesce(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN web_returns ON (ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number), date_dim, + web_site, + item, + promotion + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', store_id) AS id , + sales , + returns_ , + profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', catalog_page_id) AS id , + sales , + returns_ , + profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(ss_store_sk = s_store_sk)", + "(ss_item_sk = i_item_sk)", + "(CAST(i_current_price AS DECIMAL(12,2)) > CAST(50 AS DECIMAL(12,2)))", + "(ss_promo_sk = p_promo_sk)", + "(p_channel_tv = CAST('N' AS VARCHAR))", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "s_store_id", + "Expressions": [ + "sum(ss_ext_sales_price)", + "sum(COALESCE(CAST(sr_return_amt AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))", + "sum((CAST(ss_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(sr_net_loss AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2)))))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "store_id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_item_sk = cr_item_sk)", + "(cs_order_number = cr_order_number)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cp_catalog_page_sk", + "cp_catalog_page_id", + "cp_start_date_sk", + "cp_end_date_sk", + "cp_department", + "cp_catalog_number", + "cp_catalog_page_number", + "cp_description", + "cp_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(cs_catalog_page_sk = cp_catalog_page_sk)", + "(cs_item_sk = i_item_sk)", + "(CAST(i_current_price AS DECIMAL(12,2)) > CAST(50 AS DECIMAL(12,2)))", + "(cs_promo_sk = p_promo_sk)", + "(p_channel_tv = CAST('N' AS VARCHAR))", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "cp_catalog_page_id", + "Expressions": [ + "sum(cs_ext_sales_price)", + "sum(COALESCE(CAST(cr_return_amount AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))", + "sum((CAST(cs_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(cr_net_loss AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2)))))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "catalog_page_id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_item_sk = wr_item_sk)", + "(ws_order_number = wr_order_number)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id", + "web_rec_start_date", + "web_rec_end_date", + "web_name", + "web_open_date_sk", + "web_close_date_sk", + "web_class", + "web_manager", + "web_mkt_id", + "web_mkt_class", + "web_mkt_desc", + "web_market_manager", + "web_company_id", + "web_company_name", + "web_street_number", + "web_street_name", + "web_street_type", + "web_suite_number", + "web_city", + "web_county", + "web_state", + "web_zip", + "web_country", + "web_gmt_offset", + "web_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "p_promo_sk", + "p_promo_id", + "p_start_date_sk", + "p_end_date_sk", + "p_item_sk", + "p_cost", + "p_response_target", + "p_promo_name", + "p_channel_dmail", + "p_channel_email", + "p_channel_catalog", + "p_channel_tv", + "p_channel_radio", + "p_channel_press", + "p_channel_event", + "p_channel_demo", + "p_channel_details", + "p_purpose", + "p_discount_active" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(d_date >= CAST('2000-08-23' AS DATE))", + "(ws_web_site_sk = web_site_sk)", + "(ws_item_sk = i_item_sk)", + "(CAST(i_current_price AS DECIMAL(12,2)) > CAST(50 AS DECIMAL(12,2)))", + "(ws_promo_sk = p_promo_sk)", + "(p_channel_tv = CAST('N' AS VARCHAR))", + "(d_date <= CAST('2000-09-22' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "web_site_id", + "Expressions": [ + "sum(ws_ext_sales_price)", + "sum(COALESCE(CAST(wr_return_amt AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2))))", + "sum((CAST(ws_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(wr_net_loss AS DECIMAL(12,2)), CAST(0 AS DECIMAL(12,2)))))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "id" + ], + "Expressions": [ + "sum(sales)", + "sum(returns_)", + "sum(profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ] + } + } + ], + "extra_info": { + "Order By": [ + "x.channel", + "x.id" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "wsr", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "csr", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ssr", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_ticket_number", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.p_channel_tv = \"N\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_promo_sk = p_promo_sk)", + "Estimated Cardinality": "48077" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "48077" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "48077" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_current_price > decimal128(5000, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "48077" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_usmallint(#5, 1)" + ], + "Estimated Cardinality": "48077" + } + } + ], + "extra_info": { + "Groups": "s_store_id", + "Expressions": [ + "sum(ss_ext_sales_price)", + "sum(COALESCE(CAST(sr_return_amt AS DECIMAL(12,2)), 0.00))", + "sum((CAST(ss_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(sr_net_loss AS DECIMAL(12,2)), 0.00)))" + ], + "Estimated Cardinality": "44284" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "44284" + } + } + ], + "extra_info": { + "Expressions": [ + "store_id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "44284" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "44284" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "44284" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_catalog_page_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_item_sk", + "cr_order_number", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(cs_item_sk = cr_item_sk)", + "(cs_order_number = cr_order_number)" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.p_channel_tv = \"N\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_promo_sk = p_promo_sk)", + "Estimated Cardinality": "23942" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "23942" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.cp_catalog_page_sk <= 9827i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "11718" + } + } + ], + "extra_info": { + "Expressions": [ + "cp_catalog_page_sk", + "cp_catalog_page_id" + ], + "Estimated Cardinality": "11718" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_catalog_page_sk = cp_catalog_page_sk)", + "Estimated Cardinality": "23942" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_current_price > decimal128(5000, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_item_sk = i_item_sk)", + "Estimated Cardinality": "23942" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_usmallint(#5, 1)" + ], + "Estimated Cardinality": "23942" + } + } + ], + "extra_info": { + "Groups": "cp_catalog_page_id", + "Expressions": [ + "sum(cs_ext_sales_price)", + "sum(COALESCE(CAST(cr_return_amount AS DECIMAL(12,2)), 0.00))", + "sum((CAST(cs_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(cr_net_loss AS DECIMAL(12,2)), 0.00)))" + ], + "Estimated Cardinality": "22053" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "22053" + } + } + ], + "extra_info": { + "Expressions": [ + "catalog_page_id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "22053" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "22053" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "22053" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_web_site_sk", + "ws_promo_sk", + "ws_order_number", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_item_sk", + "wr_order_number", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ws_item_sk = wr_item_sk)", + "(ws_order_number = wr_order_number)" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.p_channel_tv = \"N\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "p_promo_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_promo_sk = p_promo_sk)", + "Estimated Cardinality": "11938" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "11938" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_site_sk = web_site_sk)", + "Estimated Cardinality": "11938" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_current_price > decimal128(5000, precision=7, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "11938" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_usmallint(#5, 1)" + ], + "Estimated Cardinality": "11938" + } + } + ], + "extra_info": { + "Groups": "web_site_id", + "Expressions": [ + "sum(ws_ext_sales_price)", + "sum(COALESCE(CAST(wr_return_amt AS DECIMAL(12,2)), 0.00))", + "sum((CAST(ws_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(wr_net_loss AS DECIMAL(12,2)), 0.00)))" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "77333" + } + } + ], + "extra_info": { + "Groups": [ + "channel", + "id" + ], + "Expressions": [ + "sum(sales)", + "sum(returns_)", + "sum(profit)" + ], + "Estimated Cardinality": "67379" + } + } + ], + "extra_info": { + "Expressions": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "67379" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_ext_sales_price", + "ss_net_profit" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_item_sk", + "sr_ticket_number", + "sr_return_amt", + "sr_net_loss" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ss_item_sk = sr_item_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "p_channel_tv='N'", + "Projections": "p_promo_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_promo_sk = p_promo_sk", + "Estimated Cardinality": "48077" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "48077" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_id" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "48077" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.i_current_price > decimal128(5000, precision=7, scale=2))", + "Projections": "i_item_sk", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "48077" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_usmallint(#5, 1)" + ], + "Estimated Cardinality": "48077" + } + } + ], + "extra_info": { + "Projections": [ + "s_store_id", + "ss_ext_sales_price", + "COALESCE(CAST(sr_return_amt AS DECIMAL(12,2)), 0.00)", + "(CAST(ss_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(sr_net_loss AS DECIMAL(12,2)), 0.00))" + ], + "Estimated Cardinality": "48077" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)" + ], + "Estimated Cardinality": "44284" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "44284" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_catalog_page_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_ext_sales_price", + "cs_net_profit" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_item_sk", + "cr_order_number", + "cr_return_amount", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "cs_item_sk = cr_item_sk", + "cs_order_number = cr_order_number" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "p_channel_tv='N'", + "Projections": "p_promo_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_promo_sk = p_promo_sk", + "Estimated Cardinality": "23942" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "23942" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.cp_catalog_page_sk <= 9827i64)", + "Projections": [ + "cp_catalog_page_sk", + "cp_catalog_page_id" + ], + "Estimated Cardinality": "11718" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_catalog_page_sk = cp_catalog_page_sk", + "Estimated Cardinality": "23942" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.i_current_price > decimal128(5000, precision=7, scale=2))", + "Projections": "i_item_sk", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_item_sk = i_item_sk", + "Estimated Cardinality": "23942" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_usmallint(#5, 1)" + ], + "Estimated Cardinality": "23942" + } + } + ], + "extra_info": { + "Projections": [ + "cp_catalog_page_id", + "cs_ext_sales_price", + "COALESCE(CAST(cr_return_amount AS DECIMAL(12,2)), 0.00)", + "(CAST(cs_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(cr_net_loss AS DECIMAL(12,2)), 0.00))" + ], + "Estimated Cardinality": "23942" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)" + ], + "Estimated Cardinality": "22053" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "22053" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_web_site_sk", + "ws_promo_sk", + "ws_order_number", + "ws_ext_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_item_sk", + "wr_order_number", + "wr_return_amt", + "wr_net_loss" + ], + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ws_item_sk = wr_item_sk", + "ws_order_number = wr_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "p_channel_tv='N'", + "Projections": "p_promo_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_promo_sk = p_promo_sk", + "Estimated Cardinality": "11938" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-08-23 <= $.d_date <= 2000-09-22)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "11938" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "web_site_sk", + "web_site_id" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_site_sk = web_site_sk", + "Estimated Cardinality": "11938" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.i_current_price > decimal128(5000, precision=7, scale=2))", + "Projections": "i_item_sk", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "11938" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_compress_integral_usmallint(#5, 1)" + ], + "Estimated Cardinality": "11938" + } + } + ], + "extra_info": { + "Projections": [ + "web_site_id", + "ws_ext_sales_price", + "COALESCE(CAST(wr_return_amt AS DECIMAL(12,2)), 0.00)", + "(CAST(ws_net_profit AS DECIMAL(13,2)) - COALESCE(CAST(wr_net_loss AS DECIMAL(12,2)), 0.00))" + ], + "Estimated Cardinality": "11938" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "sum(#1)", + "sum(#2)", + "sum(#3)" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "10996" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "channel", + "id", + "sales", + "returns_", + "profit" + ], + "Estimated Cardinality": "77333" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": [ + "sum(#2)", + "sum(#3)", + "sum(#4)" + ], + "Estimated Cardinality": "67379" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "x.channel ASC", + "x.id ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q81.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q81.slt.no new file mode 100644 index 00000000000..7d00f186c63 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q81.slt.no @@ -0,0 +1,1122 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH customer_total_return AS + (SELECT cr_returning_customer_sk AS ctr_customer_sk , + ca_state AS ctr_state, + sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns , + date_dim , + customer_address + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk , + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1 , + customer_address , + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cr_returned_date_sk = d_date_sk)", + "(d_year = CAST(2000 AS BIGINT))", + "(cr_returning_addr_sk = ca_address_sk)" + ] + } + } + ], + "extra_info": { + "Groups": [ + "cr_returning_customer_sk", + "ca_state" + ], + "Expressions": "sum(cr_return_amt_inc_tax)" + } + } + ], + "extra_info": { + "Expressions": [ + "ctr_customer_sk", + "ctr_state", + "ctr_total_return" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "(ctr_state = ctr_state)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ctr_total_return)" + } + } + ], + "extra_info": { + "Expressions": "(avg(ctr_total_return) * CAST(1.2 AS DOUBLE))" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "(ca_address_sk = c_current_addr_sk)", + "(ca_state = CAST('GA' AS VARCHAR))", + "(ctr_customer_sk = c_customer_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_id", + "c_salutation", + "c_first_name", + "c_last_name", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type", + "ctr_total_return" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.customer.c_customer_id", + "memory.main.customer.c_salutation", + "memory.main.customer.c_first_name", + "memory.main.customer.c_last_name", + "memory.main.customer_address.ca_street_number", + "memory.main.customer_address.ca_street_name", + "memory.main.customer_address.ca_street_type", + "memory.main.customer_address.ca_suite_number", + "memory.main.customer_address.ca_city", + "memory.main.customer_address.ca_county", + "memory.main.customer_address.ca_state", + "memory.main.customer_address.ca_zip", + "memory.main.customer_address.ca_country", + "memory.main.customer_address.ca_gmt_offset", + "memory.main.customer_address.ca_location_type", + "ctr1.ctr_total_return" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "5000" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returning_customer_sk", + "cr_returning_addr_sk", + "cr_return_amt_inc_tax" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450852i64 <= $.d_date_sk <= 2452907i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ca_address_sk = cr_returning_addr_sk)", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_usmallint(#1, 2)", + "#2" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": [ + "cr_returning_customer_sk", + "ca_state" + ], + "Expressions": "sum(cr_return_amt_inc_tax)", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 2)", + "#1", + "#2" + ], + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Expressions": [ + "ctr_customer_sk", + "ctr_state", + "ctr_total_return" + ], + "Estimated Cardinality": "2920" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_addr_sk", + "c_salutation", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_state = \"GA\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_customer_sk = ctr_customer_sk)", + "Estimated Cardinality": "584" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ctr_state = ctr_state)", + "Estimated Cardinality": "117" + } + } + ], + "extra_info": { + "Groups": "ctr_state", + "Expressions": "avg(ctr_total_return)", + "Estimated Cardinality": "58" + } + } + ], + "extra_info": { + "Expressions": [ + "(avg(ctr_total_return) * 1.2)", + "ctr_state" + ], + "Estimated Cardinality": "58" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(ctr_state IS NOT DISTINCT FROM ctr_state)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_id", + "c_salutation", + "c_first_name", + "c_last_name", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type", + "ctr_total_return" + ], + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "5000" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_returned_date_sk", + "cr_returning_customer_sk", + "cr_returning_addr_sk", + "cr_return_amt_inc_tax" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ca_address_sk = cr_returning_addr_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_usmallint(#1, 2)", + "#2" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Projections": [ + "cr_returning_customer_sk", + "ca_state", + "cr_return_amt_inc_tax" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 2)", + "#1", + "#2" + ], + "Estimated Cardinality": "2920" + } + }, + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_customer_id", + "c_current_addr_sk", + "c_salutation", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_state='GA'", + "Projections": [ + "ca_address_sk", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_customer_sk = ctr_customer_sk", + "Estimated Cardinality": "584" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0", + "Estimated Cardinality": "2920" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ctr_state = ctr_state", + "Estimated Cardinality": "117" + } + } + ], + "extra_info": { + "Projections": [ + "ctr_state", + "ctr_total_return" + ], + "Estimated Cardinality": "117" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)", + "Estimated Cardinality": "58" + } + } + ], + "extra_info": { + "Projections": [ + "(avg(ctr_total_return) * 1.2)", + "ctr_state" + ], + "Estimated Cardinality": "58" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "ctr_state IS NOT DISTINCT FROM ctr_state", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#15", + "Aggregates": "", + "Estimated Cardinality": "572" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "ctr_state IS NOT DISTINCT FROM ctr_state", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(CAST(ctr_total_return AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10", + "#11", + "#12", + "#13", + "#14", + "#15" + ], + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "memory.main.customer.c_customer_id ASC", + "memory.main.customer.c_salutation ASC", + "memory.main.customer.c_first_name ASC", + "memory.main.customer.c_last_name ASC", + "memory.main.customer_address.ca_street_number ASC", + "memory.main.customer_address.ca_street_name ASC", + "memory.main.customer_address.ca_street_type ASC", + "memory.main.customer_address.ca_suite_number ASC", + "memory.main.customer_address.ca_city ASC", + "memory.main.customer_address.ca_county ASC", + "memory.main.customer_address.ca_state ASC", + "memory.main.customer_address.ca_zip ASC", + "memory.main.customer_address.ca_country ASC", + "memory.main.customer_address.ca_gmt_offset ASC", + "memory.main.customer_address.ca_location_type ASC", + "ctr1.ctr_total_return ASC" + ] + } + } + ], + "extra_info": { + "CTE Name": "customer_total_return", + "Table Index": "0", + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q82.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q82.slt.no new file mode 100644 index 00000000000..f07598dc9ee --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q82.slt.no @@ -0,0 +1,575 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id , + i_item_desc , + i_current_price +FROM item, + inventory, + date_dim, + store_sales +WHERE i_current_price BETWEEN 62 AND 62+30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-05-25' AS date) AND cast('2000-07-24' AS date) + AND i_manufact_id IN (129, + 270, + 821, + 423) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND ss_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk", + "inv_warehouse_sk", + "inv_quantity_on_hand" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(CAST(i_current_price AS DECIMAL(12,2)) >= CAST(62 AS DECIMAL(12,2)))", + "(inv_item_sk = i_item_sk)", + "(d_date_sk = inv_date_sk)", + "(d_date >= CAST('2000-05-25' AS DATE))", + "(i_manufact_id IN (CAST(129 AS BIGINT), CAST(270 AS BIGINT), CAST(821 AS BIGINT), CAST(423 AS BIGINT)))", + "(inv_quantity_on_hand >= CAST(100 AS INTEGER))", + "(ss_item_sk = i_item_sk)", + "(CAST(i_current_price AS DECIMAL(12,2)) <= CAST((62 + 30) AS DECIMAL(12,2)))", + "(d_date <= CAST('2000-07-24' AS DATE))", + "(inv_quantity_on_hand <= CAST(500 AS INTEGER))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.item.i_item_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "ss_item_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(100i32 <= $.inv_quantity_on_hand <= 500i32)", + "Function": "Vortex Scan", + "Estimated Cardinality": "46980" + } + } + ], + "extra_info": { + "Expressions": [ + "inv_date_sk", + "inv_item_sk" + ], + "Estimated Cardinality": "46980" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-05-25 <= $.d_date <= 2000-07-24)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_date_sk = d_date_sk)", + "Estimated Cardinality": "46980" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "vortex.list.contains([129i64, 270i64, 821i64, 423i64], $.i_manufact_id)", + "(decimal128(6200, precision=7, scale=2) <= $.i_current_price <= decimal128(9200, precision=7, scale=2))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(inv_item_sk = i_item_sk)", + "Estimated Cardinality": "46980" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "37644552" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "37644552" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Expressions": "", + "Estimated Cardinality": "24884920" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2" + ], + "Estimated Cardinality": "24884920" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "24884920" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "ss_item_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(100i32 <= $.inv_quantity_on_hand <= 500i32)", + "Projections": [ + "inv_date_sk", + "inv_item_sk" + ], + "Estimated Cardinality": "46980" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-05-25 <= $.d_date <= 2000-07-24)", + "(2450815i64 <= $.d_date_sk <= 2452635i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_date_sk = d_date_sk", + "Estimated Cardinality": "46980" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "vortex.list.contains([129i64, 270i64, 821i64, 423i64], $.i_manufact_id)", + "(decimal128(6200, precision=7, scale=2) <= $.i_current_price <= decimal128(9200, precision=7, scale=2))" + ], + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "inv_item_sk = i_item_sk", + "Estimated Cardinality": "46980" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "37644552" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "37644552" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_current_price" + ], + "Estimated Cardinality": "37644552" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "24884920" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.item.i_item_id ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q83.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q83.slt.no new file mode 100644 index 00000000000..a4443b150a1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q83.slt.no @@ -0,0 +1,2285 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH sr_items AS + (SELECT i_item_id item_id, + sum(sr_return_quantity) sr_item_qty + FROM store_returns, + item, + date_dim + WHERE sr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items AS + (SELECT i_item_id item_id, + sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, + item, + date_dim + WHERE cr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items AS + (SELECT i_item_id item_id, + sum(wr_return_quantity) wr_item_qty + FROM web_returns, + item, + date_dim + WHERE wr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT sr_items.item_id , + sr_item_qty , + (sr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 sr_dev , + cr_item_qty , + (cr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 cr_dev , + wr_item_qty , + (wr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 wr_dev , + (sr_item_qty+cr_item_qty+wr_item_qty)/3.0 average +FROM sr_items , + cr_items , + wr_items +WHERE sr_items.item_id=cr_items.item_id + AND sr_items.item_id=wr_items.item_id +ORDER BY sr_items.item_id NULLS FIRST, + sr_item_qty NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_date IN (CAST('2000-06-30' AS DATE), CAST('2000-09-27' AS DATE), CAST('2000-11-17' AS DATE)))" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_week_seq = #[50.0])" + } + } + ], + "extra_info": { + "Expressions": "SUBQUERY" + } + } + ], + "extra_info": { + "Expressions": "d_date" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_date = #[37.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(sr_item_sk = i_item_sk)", + "SUBQUERY", + "(sr_returned_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(sr_return_quantity)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "sr_item_qty" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_date IN (CAST('2000-06-30' AS DATE), CAST('2000-09-27' AS DATE), CAST('2000-11-17' AS DATE)))" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_week_seq = #[106.0])" + } + } + ], + "extra_info": { + "Expressions": "SUBQUERY" + } + } + ], + "extra_info": { + "Expressions": "d_date" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_date = #[93.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(cr_item_sk = i_item_sk)", + "SUBQUERY", + "(cr_returned_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cr_return_quantity)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "cr_item_qty" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "(d_date IN (CAST('2000-06-30' AS DATE), CAST('2000-09-27' AS DATE), CAST('2000-11-17' AS DATE)))" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_week_seq = #[162.0])" + } + } + ], + "extra_info": { + "Expressions": "SUBQUERY" + } + } + ], + "extra_info": { + "Expressions": "d_date" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(d_date = #[149.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(wr_item_sk = i_item_sk)", + "SUBQUERY", + "(wr_returned_date_sk = d_date_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(wr_return_quantity)" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "wr_item_qty" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "2" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(item_id = item_id)", + "(item_id = item_id)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "sr_item_qty", + "sr_dev", + "cr_item_qty", + "cr_dev", + "wr_item_qty", + "wr_dev", + "average" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sr_items.item_id", + "sr_items.sr_item_qty" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "wr_items", + "Table Index": "2" + } + } + ], + "extra_info": { + "CTE Name": "cr_items", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "sr_items", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450821i64 <= $.d_date_sk <= 2452820i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([2000-06-30, 2000-09-27, 2000-11-17], $.d_date)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_week_seq = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_date = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "14609" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_item_sk = i_item_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(sr_return_quantity)", + "Estimated Cardinality": "11437" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "sr_item_qty" + ], + "Estimated Cardinality": "11437" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "11437" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_item_sk", + "cr_return_quantity" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_item_sk = i_item_sk)", + "Estimated Cardinality": "14275" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450852i64 <= $.d_date_sk <= 2452907i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([2000-06-30, 2000-09-27, 2000-11-17], $.d_date)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_week_seq = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_date = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 2450852)" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(cr_return_quantity)", + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "cr_item_qty" + ], + "Estimated Cardinality": "9144" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "9144" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(2450865i64 <= $.d_date_sk <= 2452974i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "73049" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([2000-06-30, 2000-09-27, 2000-11-17], $.d_date)", + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_week_seq = #0)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "(d_date = #0)", + "Estimated Cardinality": "14609" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_item_sk", + "wr_return_quantity" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wr_item_sk = i_item_sk)", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = wr_returned_date_sk)", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 2450865)", + "#1", + "#2" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "i_item_id", + "Expressions": "sum(wr_return_quantity)", + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "wr_item_qty" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(item_id = item_id)", + "Estimated Cardinality": "7996" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(item_id = item_id)", + "Estimated Cardinality": "12996" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "sr_item_qty", + "CAST(((sr_item_qty + cr_item_qty) + wr_item_qty) AS DOUBLE)", + "cr_item_qty", + "wr_item_qty" + ], + "Estimated Cardinality": "12996" + } + } + ], + "extra_info": { + "Expressions": [ + "item_id", + "sr_item_qty", + "sr_dev", + "cr_item_qty", + "cr_dev", + "wr_item_qty", + "wr_dev", + "average" + ], + "Estimated Cardinality": "12996" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_returned_date_sk", + "sr_item_sk", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450821i64 <= $.d_date_sk <= 2452820i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([2000-06-30, 2000-09-27, 2000-11-17], $.d_date)", + "Projections": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_week_seq = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_date = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "14609" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_item_sk = i_item_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "sr_return_quantity" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "11437" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_returned_date_sk", + "cr_item_sk", + "cr_return_quantity" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_item_sk = i_item_sk", + "Estimated Cardinality": "14275" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450852i64 <= $.d_date_sk <= 2452907i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([2000-06-30, 2000-09-27, 2000-11-17], $.d_date)", + "Projections": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_week_seq = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_date = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "__internal_compress_integral_usmallint(#2, 2450852)" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "cr_return_quantity" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "9144" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(2450865i64 <= $.d_date_sk <= 2452974i64)", + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "d_date", + "d_week_seq" + ], + "Estimated Cardinality": "73049" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([2000-06-30, 2000-09-27, 2000-11-17], $.d_date)", + "Projections": "d_week_seq", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_week_seq = #0", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "SEMI", + "Conditions": "d_date = #0", + "Estimated Cardinality": "14609" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_returned_date_sk", + "wr_item_sk", + "wr_return_quantity" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_item_id" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wr_item_sk = i_item_sk", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = wr_returned_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 2450865)", + "#1", + "#2" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "wr_return_quantity" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "6154" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "item_id = item_id", + "Estimated Cardinality": "7996" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "item_id = item_id", + "Estimated Cardinality": "12996" + } + } + ], + "extra_info": { + "Projections": [ + "item_id", + "sr_item_qty", + "CAST(((sr_item_qty + cr_item_qty) + wr_item_qty) AS DOUBLE)", + "cr_item_qty", + "wr_item_qty" + ], + "Estimated Cardinality": "12996" + } + } + ], + "extra_info": { + "Projections": [ + "item_id", + "sr_item_qty", + "sr_dev", + "cr_item_qty", + "cr_dev", + "wr_item_qty", + "wr_dev", + "average" + ], + "Estimated Cardinality": "12996" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sr_items.item_id ASC", + "sr_items.sr_item_qty ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q84.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q84.slt.no new file mode 100644 index 00000000000..95cb87010ef --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q84.slt.no @@ -0,0 +1,618 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT c_customer_id AS customer_id , + concat(concat(coalesce(c_last_name, '') , ', '), coalesce(c_first_name, '')) AS customername +FROM customer , + customer_address , + customer_demographics , + household_demographics , + income_band , + store_returns +WHERE ca_city = 'Edgewood' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 38128 + AND ib_upper_bound <= 38128 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ib_income_band_sk", + "ib_lower_bound", + "ib_upper_bound" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ca_city = CAST('Edgewood' AS VARCHAR))", + "(c_current_addr_sk = ca_address_sk)", + "(ib_lower_bound >= CAST(38128 AS BIGINT))", + "(ib_upper_bound <= (38128 + 50000))", + "(ib_income_band_sk = hd_income_band_sk)", + "(cd_demo_sk = c_current_cdemo_sk)", + "(hd_demo_sk = c_current_hdemo_sk)", + "(sr_cdemo_sk = cd_demo_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customername" + ] + } + } + ], + "extra_info": { + "Order By": "memory.main.customer.c_customer_id" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": "cd_demo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(7i64 <= $.sr_cdemo_sk <= 192051i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": "sr_cdemo_sk", + "Estimated Cardinality": "28576" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7200" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk" + ], + "Estimated Cardinality": "7200" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_city = \"Edgewood\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(hd_demo_sk = c_current_hdemo_sk)", + "Estimated Cardinality": "2000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.ib_lower_bound >= 38128i64)", + "($.ib_upper_bound <= 88128i32)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Expressions": "ib_income_band_sk", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(hd_income_band_sk = ib_income_band_sk)", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_cdemo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "5715" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "109777" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_id", + "customername" + ], + "Estimated Cardinality": "109777" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.cd_demo_sk <= 192051i64)", + "Projections": "cd_demo_sk", + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(7i64 <= $.sr_cdemo_sk <= 192051i64)", + "Projections": "sr_cdemo_sk", + "Estimated Cardinality": "28576" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "hd_demo_sk", + "hd_income_band_sk" + ], + "Estimated Cardinality": "7200" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_city='Edgewood'", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "hd_demo_sk = c_current_hdemo_sk", + "Estimated Cardinality": "2000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "($.ib_lower_bound >= 38128i64)", + "($.ib_upper_bound <= 88128i32)" + ], + "Projections": "ib_income_band_sk", + "Estimated Cardinality": "4" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "hd_income_band_sk = ib_income_band_sk", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_cdemo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "5715" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "109777" + } + } + ], + "extra_info": { + "Projections": [ + "customer_id", + "customername" + ], + "Estimated Cardinality": "109777" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "memory.main.customer.c_customer_id ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q85.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q85.slt.no new file mode 100644 index 00000000000..088c9e2b058 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q85.slt.no @@ -0,0 +1,1113 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) avg1, + avg(wr_refunded_cash) avg2, + avg(wr_fee) +FROM web_sales, + web_returns, + web_page, + customer_demographics cd1, + customer_demographics cd2, + customer_address, + date_dim, + reason +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2000 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( ( cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd1.cd_marital_status = 'S' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'College' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = '2 yr Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ca_country = 'United States' + AND ca_state IN ('IN', + 'OH', + 'NJ') + AND ws_net_profit BETWEEN 100 AND 200) + OR ( ca_country = 'United States' + AND ca_state IN ('WI', + 'CT', + 'KY') + AND ws_net_profit BETWEEN 150 AND 300) + OR ( ca_country = 'United States' + AND ca_state IN ('LA', + 'IA', + 'AR') + AND ws_net_profit BETWEEN 50 AND 250) ) +GROUP BY r_reason_desc +ORDER BY SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) , + avg(wr_refunded_cash) , + avg(wr_fee) +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "wp_web_page_id", + "wp_rec_start_date", + "wp_rec_end_date", + "wp_creation_date_sk", + "wp_access_date_sk", + "wp_autogen_flag", + "wp_customer_sk", + "wp_url", + "wp_type", + "wp_char_count", + "wp_link_count", + "wp_image_count", + "wp_max_ad_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "r_reason_sk", + "r_reason_id", + "r_reason_desc" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_web_page_sk = wp_web_page_sk)", + "(ws_item_sk = wr_item_sk)", + "(ws_order_number = wr_order_number)", + "(ws_sold_date_sk = d_date_sk)", + "(d_year = CAST(2000 AS BIGINT))", + "(cd_demo_sk = wr_refunded_cdemo_sk)", + "(cd_demo_sk = wr_returning_cdemo_sk)", + "(ca_address_sk = wr_refunded_addr_sk)", + "(r_reason_sk = wr_reason_sk)", + "(((cd_marital_status = CAST('M' AS VARCHAR)) AND (cd_marital_status = cd_marital_status) AND (cd_education_status = CAST('Advanced Degree' AS VARCHAR)) AND (cd_education_status = cd_education_status) AND ((ws_sales_price >= CAST(100.00 AS DECIMAL(7,2))) AND (ws_sales_price <= CAST(150.00 AS DECIMAL(7,2))))) OR ((cd_marital_status = CAST('S' AS VARCHAR)) AND (cd_marital_status = cd_marital_status) AND (cd_education_status = CAST('College' AS VARCHAR)) AND (cd_education_status = cd_education_status) AND ((ws_sales_price >= CAST(50.00 AS DECIMAL(7,2))) AND (ws_sales_price <= CAST(100.00 AS DECIMAL(7,2))))) OR ((cd_marital_status = CAST('W' AS VARCHAR)) AND (cd_marital_status = cd_marital_status) AND (cd_education_status = CAST('2 yr Degree' AS VARCHAR)) AND (cd_education_status = cd_education_status) AND ((ws_sales_price >= CAST(150.00 AS DECIMAL(7,2))) AND (ws_sales_price <= CAST(200.00 AS DECIMAL(7,2))))))", + "(((ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('IN' AS VARCHAR), CAST('OH' AS VARCHAR), CAST('NJ' AS VARCHAR))) AND ((CAST(ws_net_profit AS DECIMAL(12,2)) >= CAST(100 AS DECIMAL(12,2))) AND (CAST(ws_net_profit AS DECIMAL(12,2)) <= CAST(200 AS DECIMAL(12,2))))) OR ((ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('WI' AS VARCHAR), CAST('CT' AS VARCHAR), CAST('KY' AS VARCHAR))) AND ((CAST(ws_net_profit AS DECIMAL(12,2)) >= CAST(150 AS DECIMAL(12,2))) AND (CAST(ws_net_profit AS DECIMAL(12,2)) <= CAST(300 AS DECIMAL(12,2))))) OR ((ca_country = CAST('United States' AS VARCHAR)) AND (ca_state IN (CAST('LA' AS VARCHAR), CAST('IA' AS VARCHAR), CAST('AR' AS VARCHAR))) AND ((CAST(ws_net_profit AS DECIMAL(12,2)) >= CAST(50 AS DECIMAL(12,2))) AND (CAST(ws_net_profit AS DECIMAL(12,2)) <= CAST(250 AS DECIMAL(12,2))))))" + ] + } + } + ], + "extra_info": { + "Groups": "r_reason_desc", + "Expressions": [ + "avg(ws_quantity)", + "avg(wr_refunded_cash)", + "avg(wr_fee)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "\"substring\"(r_reason_desc, CAST(1 AS BIGINT), CAST(20 AS BIGINT))", + "avg1", + "avg2", + "avg(wr_fee)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "main.\"substring\"(memory.main.reason.r_reason_desc, 1, 20)", + "avg(memory.main.web_sales.ws_quantity)", + "avg(memory.main.web_returns.wr_refunded_cash)", + "avg(memory.main.web_returns.wr_fee)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(19i64 <= $.cd_demo_sk <= 192069i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(19i64 <= $.cd_demo_sk <= 192069i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "192080" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_web_page_sk", + "ws_order_number", + "ws_quantity", + "ws_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 2000i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14322" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_item_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_cdemo_sk", + "wr_reason_sk", + "wr_order_number", + "wr_fee", + "wr_refunded_cash" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_country = \"United States\")", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wr_refunded_addr_sk = ca_address_sk)", + "Estimated Cardinality": "1407" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Expressions": [ + "r_reason_sk", + "r_reason_desc" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wr_reason_sk = r_reason_sk)", + "Estimated Cardinality": "1407" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ws_item_sk = wr_item_sk)", + "(ws_order_number = wr_order_number)" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expressions": "((((ws_net_profit >= 100.00) AND (ws_net_profit <= 200.00)) AND ((ca_state = 'IN') OR (ca_state = 'OH') OR (ca_state = 'NJ'))) OR (((ws_net_profit >= 150.00) AND (ws_net_profit <= 300.00)) AND ((ca_state = 'WI') OR (ca_state = 'CT') OR (ca_state = 'KY'))) OR (((ws_net_profit >= 50.00) AND (ws_net_profit <= 250.00)) AND ((ca_state = 'LA') OR (ca_state = 'IA') OR (ca_state = 'AR'))))", + "Estimated Cardinality": "2864" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Expressions": "wp_web_page_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_page_sk = wp_web_page_sk)", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = wr_refunded_cdemo_sk)", + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Expressions": "((((ws_sales_price >= 100.00) AND (ws_sales_price <= 150.00)) AND (cd_marital_status = 'M') AND (cd_education_status = 'Advanced Degree')) OR (((ws_sales_price >= 50.00) AND (ws_sales_price <= 100.00)) AND (cd_marital_status = 'S') AND (cd_education_status = 'College')) OR (((ws_sales_price >= 150.00) AND (ws_sales_price <= 200.00)) AND (cd_marital_status = 'W') AND (cd_education_status = '2 yr Degree')))", + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(cd_demo_sk = wr_returning_cdemo_sk)", + "(cd_education_status = cd_education_status)", + "(cd_marital_status = cd_marital_status)" + ], + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_uinteger(#0, 19)", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Groups": "r_reason_desc", + "Expressions": [ + "avg(ws_quantity)", + "avg(wr_refunded_cash)", + "avg(wr_fee)" + ], + "Estimated Cardinality": "47584" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3" + ], + "Estimated Cardinality": "47584" + } + } + ], + "extra_info": { + "Expressions": [ + "\"substring\"(r_reason_desc, 1, 20)", + "avg1", + "avg2", + "avg(wr_fee)" + ], + "Estimated Cardinality": "47584" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(19i64 <= $.cd_demo_sk <= 192069i64)", + "Projections": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(19i64 <= $.cd_demo_sk <= 192069i64)", + "Projections": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "192080" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_web_page_sk", + "ws_order_number", + "ws_quantity", + "ws_sales_price", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=2000", + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14322" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "wr_item_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_cdemo_sk", + "wr_reason_sk", + "wr_order_number", + "wr_fee", + "wr_refunded_cash" + ], + "Estimated Cardinality": "7037" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_country='United States'", + "Projections": [ + "ca_address_sk", + "ca_state" + ], + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wr_refunded_addr_sk = ca_address_sk", + "Estimated Cardinality": "1407" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "r_reason_sk", + "r_reason_desc" + ], + "Estimated Cardinality": "3" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wr_reason_sk = r_reason_sk", + "Estimated Cardinality": "1407" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ws_item_sk = wr_item_sk", + "ws_order_number = wr_order_number" + ], + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Expression": "((((ws_net_profit >= 100.00) AND (ws_net_profit <= 200.00)) AND ((ca_state = 'IN') OR (ca_state = 'OH') OR (ca_state = 'NJ'))) OR (((ws_net_profit >= 150.00) AND (ws_net_profit <= 300.00)) AND ((ca_state = 'WI') OR (ca_state = 'CT') OR (ca_state = 'KY'))) OR (((ws_net_profit >= 50.00) AND (ws_net_profit <= 250.00)) AND ((ca_state = 'LA') OR (ca_state = 'IA') OR (ca_state = 'AR'))))", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#4", + "#5", + "#6", + "#7", + "#9" + ], + "Estimated Cardinality": "2864" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "wp_web_page_sk", + "Estimated Cardinality": "6" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_page_sk = wp_web_page_sk", + "Estimated Cardinality": "2864" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = wr_refunded_cdemo_sk", + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Expression": "((((ws_sales_price >= 100.00) AND (ws_sales_price <= 150.00)) AND (cd_marital_status = 'M') AND (cd_education_status = 'Advanced Degree')) OR (((ws_sales_price >= 50.00) AND (ws_sales_price <= 100.00)) AND (cd_marital_status = 'S') AND (cd_education_status = 'College')) OR (((ws_sales_price >= 150.00) AND (ws_sales_price <= 200.00)) AND (cd_marital_status = 'W') AND (cd_education_status = '2 yr Degree')))", + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "cd_demo_sk = wr_returning_cdemo_sk", + "cd_education_status = cd_education_status", + "cd_marital_status = cd_marital_status" + ], + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_uinteger(#0, 19)", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Projections": [ + "r_reason_desc", + "ws_quantity", + "wr_refunded_cash", + "wr_fee" + ], + "Estimated Cardinality": "78188" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": [ + "avg(#1)", + "avg(#2)", + "avg(#3)" + ], + "Estimated Cardinality": "47584" + } + } + ], + "extra_info": { + "Projections": [ + "\"substring\"(r_reason_desc, 1, 20)", + "avg1", + "avg2", + "avg(wr_fee)" + ], + "Estimated Cardinality": "47584" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "main.\"substring\"(memory.main.reason.r_reason_desc, 1, 20) ASC", + "avg(memory.main.web_sales.ws_quantity) ASC", + "avg(memory.main.web_returns.wr_refunded_cash) ASC", + "avg(memory.main.web_returns.wr_fee) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q86.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q86.slt.no new file mode 100644 index 00000000000..d23dd83cdda --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q86.slt.no @@ -0,0 +1,572 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT sum(ws_net_paid) AS total_sum , + i_category , + i_class , + grouping(i_category)+grouping(i_class) AS lochierarchy , + rank() OVER ( PARTITION BY grouping(i_category)+grouping(i_class), + CASE + WHEN grouping(i_class) = 0 THEN i_category + END + ORDER BY sum(ws_net_paid) DESC) AS rank_within_parent +FROM web_sales , + date_dim d1 , + item +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY rollup(i_category,i_class) +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN grouping(i_category)+grouping(i_class) = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_date_sk = ws_sold_date_sk)", + "(i_item_sk = ws_item_sk)", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class" + ], + "Expressions": "sum(ws_net_paid)" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY (GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)), CASE WHEN ((GROUPING(memory.main.item.i_class) = CAST(0 AS BIGINT))) THEN (i_category) ELSE CAST(NULL AS VARCHAR) END ORDER BY sum(ws_net_paid) DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Expressions": [ + "total_sum", + "i_category", + "i_class", + "lochierarchy", + "rank_within_parent", + "CASE WHEN (((GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)) = CAST(0 AS BIGINT))) THEN (i_category) ELSE CAST(NULL AS VARCHAR) END" + ] + } + } + ], + "extra_info": { + "Order By": [ + "(GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class))", + "#[21.5]", + "rank() OVER (PARTITION BY (GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)), CASE WHEN ((GROUPING(memory.main.item.i_class) = 0)) THEN (memory.main.item.i_category) ELSE NULL END ORDER BY sum(memory.main.web_sales.ws_net_paid) DESC)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "#[21.0]", + "#[21.1]", + "#[21.2]", + "#[21.3]", + "#[21.4]" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_class", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class" + ], + "Expressions": "sum(ws_net_paid)", + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": "RANK() OVER (PARTITION BY (GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)), CASE WHEN ((GROUPING(memory.main.item.i_class) = 0)) THEN (i_category) ELSE NULL END ORDER BY sum(ws_net_paid) DESC NULLS LAST)", + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": [ + "total_sum", + "i_category", + "i_class", + "lochierarchy", + "rank_within_parent", + "CASE WHEN (((GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)) = 0)) THEN (i_category) ELSE NULL END" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "i_item_sk", + "i_class", + "i_category" + ], + "Estimated Cardinality": "1800" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_class", + "ws_net_paid" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "sum(#2)", + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Projections": "RANK() OVER (PARTITION BY (GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)), CASE WHEN ((GROUPING(memory.main.item.i_class) = 0)) THEN (i_category) ELSE NULL END ORDER BY sum(ws_net_paid) DESC NULLS LAST)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7", + "#8", + "#9", + "#10" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Projections": [ + "total_sum", + "i_category", + "i_class", + "lochierarchy", + "rank_within_parent", + "CASE WHEN (((GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)) = 0)) THEN (i_category) ELSE NULL END" + ], + "Estimated Cardinality": "71631" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "(GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)) DESC", + "#5 ASC", + "rank() OVER (PARTITION BY (GROUPING(memory.main.item.i_category) + GROUPING(memory.main.item.i_class)), CASE WHEN ((GROUPING(memory.main.item.i_class) = 0)) THEN (memory.main.item.i_category) ELSE NULL END ORDER BY sum(memory.main.web_sales.ws_net_paid) DESC) ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q87.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q87.slt.no new file mode 100644 index 00000000000..6f895332c28 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q87.slt.no @@ -0,0 +1,1473 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT count(*) +FROM ((SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11)) cool_cust ; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "EXCEPT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "EXCEPT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(ss_customer_sk = c_customer_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(cs_bill_customer_sk = c_customer_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_date_sk = d_date_sk)", + "(ws_bill_customer_sk = c_customer_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "EXCEPT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "EXCEPT", + "children": [ + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_customer_sk = c_customer_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "288464", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "143657", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "288464", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + }, + { + "name": "DISTINCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_bill_customer_sk = c_customer_sk)", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "71632", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "288464", + "Distinct Targets": [ + "c_last_name", + "c_first_name", + "d_date" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_customer_sk = c_customer_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": [ + "#0 IS NOT DISTINCT FROM #0", + "#1 IS NOT DISTINCT FROM #1", + "#2 IS NOT DISTINCT FROM #2" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "288464" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_bill_customer_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": [ + "d_date_sk", + "d_date" + ], + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "c_customer_sk", + "c_first_name", + "c_last_name" + ], + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_bill_customer_sk = c_customer_sk", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": [ + "#0 IS NOT DISTINCT FROM #0", + "#1 IS NOT DISTINCT FROM #1", + "#2 IS NOT DISTINCT FROM #2" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "c_last_name", + "c_first_name", + "d_date" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": "", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q88.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q88.slt.no new file mode 100644 index 00000000000..2b3e030a88a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q88.slt.no @@ -0,0 +1,3516 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * +FROM + (SELECT count(*) h8_30_to_9 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 8 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s1, + (SELECT count(*) h9_to_9_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s2, + (SELECT count(*) h9_30_to_10 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s3, + (SELECT count(*) h10_to_10_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s4, + (SELECT count(*) h10_30_to_11 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s5, + (SELECT count(*) h11_to_11_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s6, + (SELECT count(*) h11_30_to_12 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s7, + (SELECT count(*) h12_to_12_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 12 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s8 ; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(8 AS BIGINT))", + "(t_minute >= CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h8_30_to_9" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(9 AS BIGINT))", + "(t_minute < CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h9_to_9_30" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(9 AS BIGINT))", + "(t_minute >= CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h9_30_to_10" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(10 AS BIGINT))", + "(t_minute < CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h10_to_10_30" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(10 AS BIGINT))", + "(t_minute >= CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h10_30_to_11" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(11 AS BIGINT))", + "(t_minute < CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h11_to_11_30" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(11 AS BIGINT))", + "(t_minute >= CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h11_30_to_12" + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(12 AS BIGINT))", + "(t_minute < CAST(30 AS BIGINT))", + "(((hd_dep_count = CAST(4 AS BIGINT)) AND (hd_vehicle_count <= (4 + 2))) OR ((hd_dep_count = CAST(2 AS BIGINT)) AND (hd_vehicle_count <= (2 + 2))) OR ((hd_dep_count = CAST(0 AS BIGINT)) AND (hd_vehicle_count <= (0 + 2))))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "h12_to_12_30" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "h8_30_to_9", + "h9_to_9_30", + "h9_30_to_10", + "h10_to_10_30", + "h10_30_to_11", + "h11_to_11_30", + "h11_30_to_12", + "h12_to_12_30" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 11i64)", + "($.t_minute >= 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h11_30_to_12", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 12i64)", + "($.t_minute < 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h12_to_12_30", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 11i64)", + "($.t_minute < 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h11_to_11_30", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 10i64)", + "($.t_minute >= 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h10_30_to_11", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 10i64)", + "($.t_minute < 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h10_to_10_30", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 9i64)", + "($.t_minute >= 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h9_30_to_10", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 9i64)", + "($.t_minute < 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h9_to_9_30", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 8i64)", + "($.t_minute >= 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "h8_30_to_9", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "h8_30_to_9", + "h9_to_9_30", + "h9_30_to_10", + "h10_to_10_30", + "h10_30_to_11", + "h11_to_11_30", + "h11_30_to_12", + "h12_to_12_30" + ], + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=11", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=12", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=11", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=10", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=10", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=9", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=9", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=8", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(((($.hd_dep_count = 4i64) and ($.hd_vehicle_count <= 6i32)) or (($.hd_dep_count = 2i64) and ($.hd_vehicle_count <= 4i32))) or (($.hd_dep_count = 0i64) and ($.hd_vehicle_count <= 2i32)))", + "((($.hd_dep_count = 4i64) or ($.hd_dep_count = 2i64)) or ($.hd_dep_count = 0i64))", + "((($.hd_vehicle_count <= 6i32) or ($.hd_vehicle_count <= 4i32)) or ($.hd_vehicle_count <= 2i32))" + ], + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "h8_30_to_9", + "h9_to_9_30", + "h9_30_to_10", + "h10_to_10_30", + "h10_30_to_11", + "h11_to_11_30", + "h11_30_to_12", + "h12_to_12_30" + ], + "Estimated Cardinality": "1" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q89.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q89.slt.no new file mode 100644 index 00000000000..051d489cbef --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q89.slt.no @@ -0,0 +1,856 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT * from + (SELECT i_category, i_class, i_brand, s_store_name, s_company_name, d_moy, sum(ss_sales_price) sum_sales, avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name) avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year = 1999 + AND ((i_category IN ('Books','Electronics','Sports') + AND i_class IN ('computers','stereo','football') ) + OR (i_category IN ('Men','Jewelry','Women') + AND i_class IN ('shirts','birdal','dresses'))) + GROUP BY i_category, i_class, i_brand, s_store_name, s_company_name, d_moy) tmp1 +WHERE CASE + WHEN (avg_monthly_sales <> 0) THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + s_store_name, 1, 2, 3, 5, 6, 7, 8 +LIMIT 100; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "(ss_sold_date_sk = d_date_sk)", + "(ss_store_sk = s_store_sk)", + "(d_year = CAST(1999 AS BIGINT))", + "(((i_category IN (CAST('Books' AS VARCHAR), CAST('Electronics' AS VARCHAR), CAST('Sports' AS VARCHAR))) AND (i_class IN (CAST('computers' AS VARCHAR), CAST('stereo' AS VARCHAR), CAST('football' AS VARCHAR)))) OR ((i_category IN (CAST('Men' AS VARCHAR), CAST('Jewelry' AS VARCHAR), CAST('Women' AS VARCHAR))) AND (i_class IN (CAST('shirts' AS VARCHAR), CAST('birdal' AS VARCHAR), CAST('dresses' AS VARCHAR)))))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy" + ], + "Expressions": "sum(ss_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy", + "sum_sales", + "avg_monthly_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_monthly_sales != CAST(0 AS DOUBLE))) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE CAST(NULL AS DOUBLE) END > CAST(0.1 AS DOUBLE))" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ] + } + } + ], + "extra_info": { + "Order By": [ + "#[34.8]", + "tmp1.s_store_name", + "i_category", + "i_class", + "i_brand", + "s_company_name", + "d_moy", + "sum_sales", + "avg_monthly_sales" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "#[34.0]", + "#[34.1]", + "#[34.2]", + "#[34.3]", + "#[34.4]", + "#[34.5]", + "#[34.6]", + "#[34.7]" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1999i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_name", + "s_company_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "57677" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((vortex.list.contains([\"Books\", \"Electronics\", \"Sports\"], $.i_category) and vortex.list.contains([\"computers\", \"stereo\", \"football\"], $.i_class)) or (vortex.list.contains([\"Men\", \"Jewelry\", \"Women\"], $.i_category) and vortex.list.contains([\"shirts\", \"birdal\", \"dresses\"], $.i_class)))", + "(vortex.list.contains([\"Books\", \"Electronics\", \"Sports\"], $.i_category) or vortex.list.contains([\"Men\", \"Jewelry\", \"Women\"], $.i_category))", + "(vortex.list.contains([\"computers\", \"stereo\", \"football\"], $.i_class) or vortex.list.contains([\"shirts\", \"birdal\", \"dresses\"], $.i_class))" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_brand", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy" + ], + "Expressions": "sum(ss_sales_price)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_decompress_integral_bigint(#5, 1)", + "#6" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy", + "sum_sales", + "avg_monthly_sales" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": "(CASE WHEN ((avg_monthly_sales != 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_store_sk", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "d_year=1999", + "Projections": [ + "d_date_sk", + "d_moy" + ], + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "s_store_sk", + "s_store_name", + "s_company_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "57677" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "((vortex.list.contains([\"Books\", \"Electronics\", \"Sports\"], $.i_category) and vortex.list.contains([\"computers\", \"stereo\", \"football\"], $.i_class)) or (vortex.list.contains([\"Men\", \"Jewelry\", \"Women\"], $.i_category) and vortex.list.contains([\"shirts\", \"birdal\", \"dresses\"], $.i_class)))", + "(vortex.list.contains([\"Books\", \"Electronics\", \"Sports\"], $.i_category) or vortex.list.contains([\"Men\", \"Jewelry\", \"Women\"], $.i_category))", + "(vortex.list.contains([\"computers\", \"stereo\", \"football\"], $.i_class) or vortex.list.contains([\"shirts\", \"birdal\", \"dresses\"], $.i_class))" + ], + "Projections": [ + "i_item_sk", + "i_brand", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "__internal_compress_integral_utinyint(#1, 1)", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy", + "ss_sales_price" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Aggregates": "sum(#6)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "__internal_decompress_integral_bigint(#5, 1)", + "#6" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": "avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Expression": "(CASE WHEN ((avg_monthly_sales != 0.0)) THEN ((abs((CAST(sum_sales AS DOUBLE) - avg_monthly_sales)) / avg_monthly_sales)) ELSE NULL END > 0.1)", + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Projections": [ + "i_category", + "i_class", + "i_brand", + "s_store_name", + "s_company_name", + "d_moy", + "sum_sales", + "avg_monthly_sales", + "(CAST(sum_sales AS DOUBLE) - avg_monthly_sales)" + ], + "Estimated Cardinality": "57677" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "#8 ASC", + "tmp1.s_store_name ASC", + "i_category ASC", + "i_class ASC", + "i_brand ASC", + "s_company_name ASC", + "d_moy ASC", + "sum_sales ASC", + "avg_monthly_sales ASC" + ] + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6", + "#7" + ], + "Estimated Cardinality": "100" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q9.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q9.slt.no new file mode 100644 index 00000000000..d77172efed7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q9.slt.no @@ -0,0 +1,3713 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) > 74129 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) > 122840 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) > 56580 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) > 10097 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) > 165306 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM reason +WHERE r_reason_sk = 1 ; +---- +logical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "r_reason_sk", + "r_reason_id", + "r_reason_desc" + ] + } + } + ], + "extra_info": { + "Expressions": "(r_reason_sk = CAST(1 AS BIGINT))" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(1 AS BIGINT))", + "(ss_quantity <= CAST(20 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[20.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[208.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[208.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(1 AS BIGINT))", + "(ss_quantity <= CAST(20 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[33.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[211.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[211.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(1 AS BIGINT))", + "(ss_quantity <= CAST(20 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[46.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[214.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[214.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(21 AS BIGINT))", + "(ss_quantity <= CAST(40 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[59.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[217.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[217.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(21 AS BIGINT))", + "(ss_quantity <= CAST(40 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[72.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[220.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[220.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(21 AS BIGINT))", + "(ss_quantity <= CAST(40 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[85.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[223.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[223.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(41 AS BIGINT))", + "(ss_quantity <= CAST(60 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[98.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[226.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[226.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(41 AS BIGINT))", + "(ss_quantity <= CAST(60 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[111.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[229.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[229.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(41 AS BIGINT))", + "(ss_quantity <= CAST(60 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[124.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[232.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[232.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(61 AS BIGINT))", + "(ss_quantity <= CAST(80 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[137.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[235.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[235.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(61 AS BIGINT))", + "(ss_quantity <= CAST(80 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[150.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[238.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[238.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(61 AS BIGINT))", + "(ss_quantity <= CAST(80 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[163.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[241.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[241.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(81 AS BIGINT))", + "(ss_quantity <= CAST(100 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[176.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[244.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[244.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(81 AS BIGINT))", + "(ss_quantity <= CAST(100 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[189.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[247.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[247.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_quantity >= CAST(81 AS BIGINT))", + "(ss_quantity <= CAST(100 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#[202.0])", + "count_star()" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#[250.1] > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #[250.0] END" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "bucket1", + "bucket2", + "bucket3", + "bucket4", + "bucket5" + ] + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(41i64 <= $.ss_quantity <= 60i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(41i64 <= $.ss_quantity <= 60i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(61i64 <= $.ss_quantity <= 80i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(61i64 <= $.ss_quantity <= 80i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(61i64 <= $.ss_quantity <= 80i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(81i64 <= $.ss_quantity <= 100i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(81i64 <= $.ss_quantity <= 100i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(81i64 <= $.ss_quantity <= 100i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(21i64 <= $.ss_quantity <= 40i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(21i64 <= $.ss_quantity <= 40i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(21i64 <= $.ss_quantity <= 40i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(41i64 <= $.ss_quantity <= 60i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(1i64 <= $.ss_quantity <= 20i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(1i64 <= $.ss_quantity <= 20i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "avg(ss_net_paid)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(1i64 <= $.ss_quantity <= 20i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Expressions": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "\"first\"(#0)", + "count_star()" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.r_reason_sk = 1i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "42", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "bucket1", + "bucket2", + "bucket3", + "bucket4", + "bucket5" + ], + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(41i64 <= $.ss_quantity <= 60i64)", + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(41i64 <= $.ss_quantity <= 60i64)", + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(61i64 <= $.ss_quantity <= 80i64)", + "Projections": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(61i64 <= $.ss_quantity <= 80i64)", + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(61i64 <= $.ss_quantity <= 80i64)", + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(81i64 <= $.ss_quantity <= 100i64)", + "Projections": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(81i64 <= $.ss_quantity <= 100i64)", + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(81i64 <= $.ss_quantity <= 100i64)", + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + } + ], + "extra_info": {} + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(21i64 <= $.ss_quantity <= 40i64)", + "Projections": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(21i64 <= $.ss_quantity <= 40i64)", + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(21i64 <= $.ss_quantity <= 40i64)", + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(41i64 <= $.ss_quantity <= 60i64)", + "Projections": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(1i64 <= $.ss_quantity <= 20i64)", + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_ext_discount_amt", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(1i64 <= $.ss_quantity <= 20i64)", + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "ss_net_paid", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "avg(#0)" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + }, + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(1i64 <= $.ss_quantity <= 20i64)", + "Projections": "", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Projections": "42", + "Estimated Cardinality": "57692" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Aggregates": [ + "\"first\"(#0)", + "count_star()" + ] + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#1 > 1)) THEN (\"error\"('More than one row returned by a subquery used as an expression - scalar subqueries can only return a single row.", + "Use \"SET scalar_subquery_error_on_multiple_rows=false\" to revert to previous behavior of returning a random row.')) ELSE #0 END" + ], + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "r_reason_sk=1", + "Projections": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": "42", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": {} + } + ], + "extra_info": {} + } + ], + "extra_info": {} + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": [ + "bucket1", + "bucket2", + "bucket3", + "bucket4", + "bucket5" + ], + "Estimated Cardinality": "1" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q90.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q90.slt.no new file mode 100644 index 00000000000..bb1a0361379 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q90.slt.no @@ -0,0 +1,929 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT case when pmc=0 then null else cast(amc AS decimal(15,4))/cast(pmc AS decimal(15,4)) end am_pm_ratio +FROM + (SELECT count(*) amc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 8 AND 8+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) "at", + (SELECT count(*) pmc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 19 AND 19+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +ORDER BY am_pm_ratio +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "wp_web_page_id", + "wp_rec_start_date", + "wp_rec_end_date", + "wp_creation_date_sk", + "wp_access_date_sk", + "wp_autogen_flag", + "wp_customer_sk", + "wp_url", + "wp_type", + "wp_char_count", + "wp_link_count", + "wp_image_count", + "wp_max_ad_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_time_sk = t_time_sk)", + "(ws_ship_hdemo_sk = hd_demo_sk)", + "(ws_web_page_sk = wp_web_page_sk)", + "(t_hour >= CAST(8 AS BIGINT))", + "(hd_dep_count = CAST(6 AS BIGINT))", + "(wp_char_count >= CAST(5000 AS BIGINT))", + "(t_hour <= CAST((8 + 1) AS BIGINT))", + "(wp_char_count <= CAST(5200 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "amc" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wp_web_page_sk", + "wp_web_page_id", + "wp_rec_start_date", + "wp_rec_end_date", + "wp_creation_date_sk", + "wp_access_date_sk", + "wp_autogen_flag", + "wp_customer_sk", + "wp_url", + "wp_type", + "wp_char_count", + "wp_link_count", + "wp_image_count", + "wp_max_ad_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_sold_time_sk = t_time_sk)", + "(ws_ship_hdemo_sk = hd_demo_sk)", + "(ws_web_page_sk = wp_web_page_sk)", + "(t_hour >= CAST(19 AS BIGINT))", + "(hd_dep_count = CAST(6 AS BIGINT))", + "(wp_char_count >= CAST(5000 AS BIGINT))", + "(t_hour <= CAST((19 + 1) AS BIGINT))", + "(wp_char_count <= CAST(5200 AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "pmc" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "am_pm_ratio" + } + } + ], + "extra_info": { + "Order By": "CASE WHEN ((pt.pmc = 0)) THEN (NULL) ELSE (CAST(\"at\".amc AS DECIMAL(15, 4)) / CAST(pt.pmc AS DECIMAL(15, 4))) END" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_time_sk", + "ws_ship_hdemo_sk", + "ws_web_page_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.hd_dep_count = 6i64)", + "($.hd_demo_sk >= 2i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(8i64 <= $.t_hour <= 9i64)", + "(46i64 <= $.t_time_sk <= 86203i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(5000i64 <= $.wp_char_count <= 5200i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "wp_web_page_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_page_sk = wp_web_page_sk)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "amc", + "Estimated Cardinality": "1" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_time_sk", + "ws_ship_hdemo_sk", + "ws_web_page_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.hd_dep_count = 6i64)", + "($.hd_demo_sk >= 2i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(19i64 <= $.t_hour <= 20i64)", + "(46i64 <= $.t_time_sk <= 86203i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "(5000i64 <= $.wp_char_count <= 5200i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "wp_web_page_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_page_sk = wp_web_page_sk)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "pmc", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "am_pm_ratio", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_time_sk", + "ws_ship_hdemo_sk", + "ws_web_page_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "hd_dep_count=6", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(8i64 <= $.t_hour <= 9i64)", + "(46i64 <= $.t_time_sk <= 86203i64)" + ], + "Projections": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_time_sk = t_time_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(5000i64 <= $.wp_char_count <= 5200i64)", + "Projections": "wp_web_page_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_page_sk = wp_web_page_sk", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + }, + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_time_sk", + "ws_ship_hdemo_sk", + "ws_web_page_sk" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "hd_dep_count=6", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(19i64 <= $.t_hour <= 20i64)", + "(46i64 <= $.t_time_sk <= 86203i64)" + ], + "Projections": "t_time_sk", + "Estimated Cardinality": "17280" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_time_sk = t_time_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "(5000i64 <= $.wp_char_count <= 5200i64)", + "Projections": "wp_web_page_sk", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_page_sk = wp_web_page_sk", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": {} + } + ], + "extra_info": { + "Projections": "am_pm_ratio", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "CASE WHEN ((pt.pmc = 0)) THEN (NULL) ELSE (CAST(\"at\".amc AS DECIMAL(15, 4)) / CAST(pt.pmc AS DECIMAL(15, 4))) END ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q91.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q91.slt.no new file mode 100644 index 00000000000..5a04229f331 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q91.slt.no @@ -0,0 +1,857 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + sum(cr_net_loss) Returns_Loss +FROM call_center, + catalog_returns, + date_dim, + customer, + customer_address, + customer_demographics, + household_demographics +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk= c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1998 + AND d_moy = 11 + AND ((cd_marital_status = 'M' + AND cd_education_status = 'Unknown') or(cd_marital_status = 'W' + AND cd_education_status = 'Advanced Degree')) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, + cc_name, + cc_manager, + cd_marital_status, + cd_education_status +ORDER BY sum(cr_net_loss) DESC; +---- +logical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_call_center_id", + "cc_rec_start_date", + "cc_rec_end_date", + "cc_closed_date_sk", + "cc_open_date_sk", + "cc_name", + "cc_class", + "cc_employees", + "cc_sq_ft", + "cc_hours", + "cc_manager", + "cc_mkt_id", + "cc_mkt_class", + "cc_mkt_desc", + "cc_market_manager", + "cc_division", + "cc_division_name", + "cc_company", + "cc_company_name", + "cc_street_number", + "cc_street_name", + "cc_street_type", + "cc_suite_number", + "cc_city", + "cc_county", + "cc_state", + "cc_zip", + "cc_country", + "cc_gmt_offset", + "cc_tax_percentage" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returned_time_sk", + "cr_item_sk", + "cr_refunded_customer_sk", + "cr_refunded_cdemo_sk", + "cr_refunded_hdemo_sk", + "cr_refunded_addr_sk", + "cr_returning_customer_sk", + "cr_returning_cdemo_sk", + "cr_returning_hdemo_sk", + "cr_returning_addr_sk", + "cr_call_center_sk", + "cr_catalog_page_sk", + "cr_ship_mode_sk", + "cr_warehouse_sk", + "cr_reason_sk", + "cr_order_number", + "cr_return_quantity", + "cr_return_amount", + "cr_return_tax", + "cr_return_amt_inc_tax", + "cr_fee", + "cr_return_ship_cost", + "cr_refunded_cash", + "cr_reversed_charge", + "cr_store_credit", + "cr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_customer_id", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk", + "c_first_shipto_date_sk", + "c_first_sales_date_sk", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cr_call_center_sk = cc_call_center_sk)", + "(cr_returned_date_sk = d_date_sk)", + "(cr_returning_customer_sk = c_customer_sk)", + "(cd_demo_sk = c_current_cdemo_sk)", + "(hd_demo_sk = c_current_hdemo_sk)", + "(ca_address_sk = c_current_addr_sk)", + "(d_year = CAST(1998 AS BIGINT))", + "(d_moy = CAST(11 AS BIGINT))", + "(((cd_marital_status = CAST('M' AS VARCHAR)) AND (cd_education_status = CAST('Unknown' AS VARCHAR))) OR ((cd_marital_status = CAST('W' AS VARCHAR)) AND (cd_education_status = CAST('Advanced Degree' AS VARCHAR))))", + "(hd_buy_potential ~~ 'Unknown%')", + "(CAST(ca_gmt_offset AS DECIMAL(12,2)) = CAST(-7 AS DECIMAL(12,2)))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "cc_call_center_id", + "cc_name", + "cc_manager", + "cd_marital_status", + "cd_education_status" + ], + "Expressions": "sum(cr_net_loss)" + } + } + ], + "extra_info": { + "Expressions": [ + "Call_Center", + "Call_Center_Name", + "Manager", + "Returns_Loss" + ] + } + } + ], + "extra_info": { + "Order By": "sum(memory.main.catalog_returns.cr_net_loss)" + } + } +] +logical_opt [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "((($.cd_marital_status = \"M\") and ($.cd_education_status = \"Unknown\")) or (($.cd_marital_status = \"W\") and ($.cd_education_status = \"Advanced Degree\")))", + "(($.cd_marital_status = \"M\") or ($.cd_marital_status = \"W\"))", + "(($.cd_education_status = \"Unknown\") or ($.cd_education_status = \"Advanced Degree\"))", + "(7i64 <= $.cd_demo_sk <= 192051i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "38416" + } + } + ], + "extra_info": { + "Expressions": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "38416" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "$.hd_buy_potential like \"Unknown%\"", + "Function": "Vortex Scan", + "Estimated Cardinality": "1440" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "14275" + } + } + ], + "extra_info": { + "Expressions": [ + "cr_returned_date_sk", + "cr_returning_customer_sk", + "cr_call_center_sk", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.c_customer_sk >= 2i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "10000" + } + } + ], + "extra_info": { + "Expressions": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.ca_gmt_offset = decimal128(-700, precision=5, scale=2))", + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(c_current_addr_sk = ca_address_sk)", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_returning_customer_sk = c_customer_sk)", + "Estimated Cardinality": "2855" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.d_year = 1998i64)", + "($.d_moy = 11i64)", + "(2450852i64 <= $.d_date_sk <= 2452907i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_returned_date_sk = d_date_sk)", + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(hd_demo_sk = c_current_hdemo_sk)", + "Estimated Cardinality": "584" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_call_center_id", + "cc_name", + "cc_manager" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cr_call_center_sk = cc_call_center_sk)", + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cd_demo_sk = c_current_cdemo_sk)", + "Estimated Cardinality": "2244" + } + } + ], + "extra_info": { + "Groups": [ + "cc_call_center_id", + "cc_name", + "cc_manager", + "cd_marital_status", + "cd_education_status" + ], + "Expressions": "sum(cr_net_loss)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Expressions": [ + "Call_Center", + "Call_Center_Name", + "Manager", + "Returns_Loss" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Order By": "sum(memory.main.catalog_returns.cr_net_loss)" + } + } +] +physical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "((($.cd_marital_status = \"M\") and ($.cd_education_status = \"Unknown\")) or (($.cd_marital_status = \"W\") and ($.cd_education_status = \"Advanced Degree\")))", + "(($.cd_marital_status = \"M\") or ($.cd_marital_status = \"W\"))", + "(($.cd_education_status = \"Unknown\") or ($.cd_education_status = \"Advanced Degree\"))", + "(7i64 <= $.cd_demo_sk <= 192051i64)" + ], + "Projections": [ + "cd_demo_sk", + "cd_marital_status", + "cd_education_status" + ], + "Estimated Cardinality": "38416" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "$.hd_buy_potential like \"Unknown%\"", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "1440" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cr_returned_date_sk", + "cr_returning_customer_sk", + "cr_call_center_sk", + "cr_net_loss" + ], + "Estimated Cardinality": "14275" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "($.c_customer_sk >= 2i64)", + "Projections": [ + "c_customer_sk", + "c_current_cdemo_sk", + "c_current_hdemo_sk", + "c_current_addr_sk" + ], + "Estimated Cardinality": "10000" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_gmt_offset=-7.00", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "c_current_addr_sk = ca_address_sk", + "Estimated Cardinality": "2000" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_returning_customer_sk = c_customer_sk", + "Estimated Cardinality": "2855" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "d_year=1998", + "d_moy=11" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "2921" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_returned_date_sk = d_date_sk", + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "hd_demo_sk = c_current_hdemo_sk", + "Estimated Cardinality": "584" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cc_call_center_sk", + "cc_call_center_id", + "cc_name", + "cc_manager" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cr_call_center_sk = cc_call_center_sk", + "Estimated Cardinality": "584" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cd_demo_sk = c_current_cdemo_sk", + "Estimated Cardinality": "2244" + } + } + ], + "extra_info": { + "Projections": [ + "cc_call_center_id", + "cc_name", + "cc_manager", + "cd_marital_status", + "cd_education_status", + "cr_net_loss" + ], + "Estimated Cardinality": "2244" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "sum(#5)", + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Projections": [ + "Call_Center", + "Call_Center_Name", + "Manager", + "Returns_Loss" + ], + "Estimated Cardinality": "0" + } + } + ], + "extra_info": { + "Order By": "sum(memory.main.catalog_returns.cr_net_loss) DESC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q92.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q92.slt.no new file mode 100644 index 00000000000..03adc1f638c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q92.slt.no @@ -0,0 +1,865 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT sum(ws_ext_discount_amt) AS "Excess Discount Amount" +FROM web_sales, + item, + date_dim +WHERE i_manufact_id = 350 + AND i_item_sk = ws_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk + AND ws_ext_discount_amt > + (SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_item_sk = i_item_sk)", + "(d_date >= CAST('2000-01-27' AS DATE))", + "(d_date_sk = ws_sold_date_sk)", + "(d_date <= CAST('2000-04-26' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "avg(ws_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(1.3 AS DOUBLE) * avg(ws_ext_discount_amt))" + } + } + ], + "extra_info": { + "Join Type": "SINGLE", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(i_manufact_id = CAST(350 AS BIGINT))", + "(i_item_sk = ws_item_sk)", + "(d_date >= CAST('2000-01-27' AS DATE))", + "(d_date_sk = ws_sold_date_sk)", + "(CAST(ws_ext_discount_amt AS DOUBLE) > SUBQUERY)", + "(d_date <= CAST('2000-04-26' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ws_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "Excess Discount Amount" + } + } + ], + "extra_info": { + "Order By": "sum(memory.main.web_sales.ws_ext_discount_amt)" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_discount_amt" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.i_manufact_id = 350i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Expressions": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_discount_amt" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_item_sk = i_item_sk)", + "Estimated Cardinality": "12984" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "__internal_compress_integral_usmallint(#2, 2450816)" + ], + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Groups": "i_item_sk", + "Expressions": "avg(ws_ext_discount_amt)", + "Estimated Cardinality": "6492" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "6492" + } + } + ], + "extra_info": { + "Expressions": [ + "(1.3 * avg(ws_ext_discount_amt))", + "i_item_sk" + ], + "Estimated Cardinality": "6492" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "(i_item_sk IS NOT DISTINCT FROM i_item_sk)" + } + } + ], + "extra_info": { + "Expressions": "(CAST(ws_ext_discount_amt AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "sum(ws_ext_discount_amt)", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "Excess Discount Amount", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_discount_amt" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "i_manufact_id=350", + "Projections": "i_item_sk", + "Estimated Cardinality": "72" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "0" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PERFECT_HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_sold_date_sk", + "ws_item_sk", + "ws_ext_discount_amt" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_item_sk = i_item_sk", + "Estimated Cardinality": "12984" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(2000-01-27 <= $.d_date <= 2000-04-26)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_sold_date_sk = d_date_sk", + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1", + "__internal_compress_integral_usmallint(#2, 2450816)" + ], + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_sk", + "ws_ext_discount_amt" + ], + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "avg(#1)" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "6492" + } + } + ], + "extra_info": { + "Projections": [ + "(1.3 * avg(ws_ext_discount_amt))", + "i_item_sk" + ], + "Estimated Cardinality": "6492" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_item_sk IS NOT DISTINCT FROM i_item_sk", + "Estimated Cardinality": "0" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "12984" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": "i_item_sk IS NOT DISTINCT FROM i_item_sk", + "Estimated Cardinality": "0", + "Delim Index": "1" + } + } + ], + "extra_info": { + "Expression": "(CAST(ws_ext_discount_amt AS DOUBLE) > SUBQUERY)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": "#0", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Projections": "ws_ext_discount_amt", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Aggregates": "sum(#0)" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "sum(memory.main.web_sales.ws_ext_discount_amt) ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q93.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q93.slt.no new file mode 100644 index 00000000000..75201ef4165 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q93.slt.no @@ -0,0 +1,482 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT ss_customer_sk, + sum(act_sales) sumsales +FROM + (SELECT ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL THEN (ss_quantity-sr_return_quantity)*ss_sales_price + ELSE (ss_quantity*ss_sales_price) + END act_sales + FROM store_sales + LEFT OUTER JOIN store_returns ON (sr_item_sk = ss_item_sk + AND sr_ticket_number = ss_ticket_number) ,reason + WHERE sr_reason_sk = r_reason_sk + AND r_reason_desc = 'reason 28') t +GROUP BY ss_customer_sk +ORDER BY sumsales NULLS FIRST, + ss_customer_sk NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_returned_date_sk", + "sr_return_time_sk", + "sr_item_sk", + "sr_customer_sk", + "sr_cdemo_sk", + "sr_hdemo_sk", + "sr_addr_sk", + "sr_store_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity", + "sr_return_amt", + "sr_return_tax", + "sr_return_amt_inc_tax", + "sr_fee", + "sr_return_ship_cost", + "sr_refunded_cash", + "sr_reversed_charge", + "sr_store_credit", + "sr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "r_reason_sk", + "r_reason_id", + "r_reason_desc" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(sr_reason_sk = r_reason_sk)", + "(r_reason_desc = CAST('reason 28' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ss_item_sk", + "ss_ticket_number", + "ss_customer_sk", + "act_sales" + ] + } + } + ], + "extra_info": { + "Groups": "ss_customer_sk", + "Expressions": "sum(act_sales)" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_customer_sk", + "sumsales" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sum(t.act_sales)", + "t.ss_customer_sk" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_item_sk", + "ss_customer_sk", + "ss_ticket_number", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Expressions": [ + "sr_item_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "(ss_item_sk = sr_item_sk)", + "(ss_ticket_number = sr_ticket_number)" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(sr_reason_sk = r_reason_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_customer_sk", + "act_sales" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "ss_customer_sk", + "Expressions": "sum(act_sales)", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_customer_sk", + "sumsales" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_item_sk", + "ss_customer_sk", + "ss_ticket_number", + "ss_quantity", + "ss_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sr_item_sk", + "sr_reason_sk", + "sr_ticket_number", + "sr_return_quantity" + ], + "Estimated Cardinality": "28576" + } + } + ], + "extra_info": { + "Join Type": "LEFT", + "Conditions": [ + "ss_item_sk = sr_item_sk", + "ss_ticket_number = sr_ticket_number" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "sr_reason_sk = r_reason_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_customer_sk", + "act_sales" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_customer_sk", + "act_sales" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": "#0", + "Aggregates": "sum(#1)", + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "#1" + ], + "Estimated Cardinality": "182344" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sum(t.act_sales) ASC", + "t.ss_customer_sk ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q94.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q94.slt.no new file mode 100644 index 00000000000..c5acf30049c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q94.slt.no @@ -0,0 +1,1027 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND EXISTS + (SELECT * + FROM web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) + AND NOT exists + (SELECT * + FROM web_returns wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "DEPENDENT_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id", + "web_rec_start_date", + "web_rec_end_date", + "web_name", + "web_open_date_sk", + "web_close_date_sk", + "web_class", + "web_manager", + "web_mkt_id", + "web_mkt_class", + "web_mkt_desc", + "web_market_manager", + "web_company_id", + "web_company_name", + "web_street_number", + "web_street_name", + "web_street_type", + "web_suite_number", + "web_city", + "web_county", + "web_state", + "web_zip", + "web_country", + "web_gmt_offset", + "web_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_order_number = ws_order_number)", + "(ws_warehouse_sk != ws_warehouse_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Expressions": "(ws_order_number = wr_order_number)" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date >= CAST('1999-02-01' AS DATE))", + "(ws_ship_date_sk = d_date_sk)", + "(ws_ship_addr_sk = ca_address_sk)", + "(ca_state = CAST('IL' AS VARCHAR))", + "(ws_web_site_sk = web_site_sk)", + "(web_company_name = CAST('pri' AS VARCHAR))", + "SUBQUERY", + "(NOT SUBQUERY)", + "(d_date <= CAST('1999-04-02' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "count(DISTINCT ws_order_number)", + "sum(ws_ext_ship_cost)", + "sum(ws_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "order count", + "total shipping cost", + "total net profit" + ] + } + } + ], + "extra_info": { + "Order By": "count(DISTINCT ws1.ws_order_number)" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "DELIM_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "14325" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ws_order_number = ws_order_number)", + "(ws_warehouse_sk != ws_warehouse_sk)" + ], + "Estimated Cardinality": "594926" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "594926" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "594926" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_ship_date_sk", + "ws_ship_addr_sk", + "ws_web_site_sk", + "ws_warehouse_sk", + "ws_order_number", + "ws_ext_ship_cost", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.ca_state = \"IL\")", + "($.ca_address_sk <= 4998i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_addr_sk = ca_address_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999-02-01 <= $.d_date <= 1999-04-02)", + "(2450820i64 <= $.d_date_sk <= 2452762i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_date_sk = d_date_sk)", + "Estimated Cardinality": "14326" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_site_sk = web_site_sk)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": [ + "(ws_warehouse_sk IS NOT DISTINCT FROM ws_warehouse_sk)", + "(ws_order_number IS NOT DISTINCT FROM ws_order_number)" + ], + "Estimated Cardinality": "2865" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + }, + { + "name": "DELIM_GET", + "children": [], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(wr_order_number = ws_order_number)", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Expressions": "ws_order_number", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Expressions": "ws_order_number", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "(ws_order_number IS NOT DISTINCT FROM ws_order_number)", + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "count(DISTINCT ws_order_number)", + "sum(ws_ext_ship_cost)", + "sum(ws_net_profit)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "order count", + "total shipping cost", + "total net profit" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LEFT_DELIM_JOIN", + "children": [ + { + "name": "RIGHT_DELIM_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_ship_date_sk", + "ws_ship_addr_sk", + "ws_web_site_sk", + "ws_warehouse_sk", + "ws_order_number", + "ws_ext_ship_cost", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_state='IL'", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_addr_sk = ca_address_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999-02-01 <= $.d_date <= 1999-04-02)", + "(2450820i64 <= $.d_date_sk <= 2452762i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_date_sk = d_date_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_site_sk = web_site_sk", + "Estimated Cardinality": "14326" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "1", + "Estimated Cardinality": "14325" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ws_order_number = ws_order_number", + "ws_warehouse_sk != ws_warehouse_sk" + ], + "Estimated Cardinality": "594926" + } + } + ], + "extra_info": { + "Projections": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "594926" + } + }, + { + "name": "DUMMY_SCAN", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": [ + "ws_warehouse_sk IS NOT DISTINCT FROM ws_warehouse_sk", + "ws_order_number IS NOT DISTINCT FROM ws_order_number" + ], + "Estimated Cardinality": "2865" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "", + "Estimated Cardinality": "14325" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": [ + "ws_warehouse_sk IS NOT DISTINCT FROM ws_warehouse_sk", + "ws_order_number IS NOT DISTINCT FROM ws_order_number" + ], + "Estimated Cardinality": "2865", + "Delim Index": "1" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "COLUMN_DATA_SCAN", + "children": [], + "extra_info": { + "Estimated Cardinality": "573" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "wr_order_number", + "Estimated Cardinality": "7037" + } + }, + { + "name": "DELIM_SCAN", + "children": [], + "extra_info": { + "Delim Index": "2", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "wr_order_number = ws_order_number", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Projections": "ws_order_number", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "ws_order_number IS NOT DISTINCT FROM ws_order_number", + "Estimated Cardinality": "573" + } + }, + { + "name": "HASH_GROUP_BY", + "children": [], + "extra_info": { + "Groups": "#0", + "Aggregates": "", + "Estimated Cardinality": "2808" + } + } + ], + "extra_info": { + "Join Type": "ANTI", + "Conditions": "ws_order_number IS NOT DISTINCT FROM ws_order_number", + "Estimated Cardinality": "573", + "Delim Index": "2" + } + } + ], + "extra_info": { + "Projections": [ + "ws_order_number", + "ws_ext_ship_cost", + "ws_net_profit" + ], + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Aggregates": [ + "count(DISTINCT #0)", + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "count(DISTINCT ws1.ws_order_number) ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q95.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q95.slt.no new file mode 100644 index 00000000000..2992fc6099d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q95.slt.no @@ -0,0 +1,1142 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ws_wh AS + (SELECT ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, + web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND ws1.ws_order_number IN + (SELECT ws_order_number + FROM ws_wh) + AND ws1.ws_order_number IN + (SELECT wr_order_number + FROM web_returns, + ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ws_order_number = ws_order_number)", + "(ws_warehouse_sk != ws_warehouse_sk)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "ws_order_number", + "wh1", + "wh2" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_sold_date_sk", + "ws_sold_time_sk", + "ws_ship_date_sk", + "ws_item_sk", + "ws_bill_customer_sk", + "ws_bill_cdemo_sk", + "ws_bill_hdemo_sk", + "ws_bill_addr_sk", + "ws_ship_customer_sk", + "ws_ship_cdemo_sk", + "ws_ship_hdemo_sk", + "ws_ship_addr_sk", + "ws_web_page_sk", + "ws_web_site_sk", + "ws_ship_mode_sk", + "ws_warehouse_sk", + "ws_promo_sk", + "ws_order_number", + "ws_quantity", + "ws_wholesale_cost", + "ws_list_price", + "ws_sales_price", + "ws_ext_discount_amt", + "ws_ext_sales_price", + "ws_ext_wholesale_cost", + "ws_ext_list_price", + "ws_ext_tax", + "ws_coupon_amt", + "ws_ext_ship_cost", + "ws_net_paid", + "ws_net_paid_inc_tax", + "ws_net_paid_inc_ship", + "ws_net_paid_inc_ship_tax", + "ws_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ca_address_sk", + "ca_address_id", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "web_site_sk", + "web_site_id", + "web_rec_start_date", + "web_rec_end_date", + "web_name", + "web_open_date_sk", + "web_close_date_sk", + "web_class", + "web_manager", + "web_mkt_id", + "web_mkt_class", + "web_mkt_desc", + "web_market_manager", + "web_company_id", + "web_company_name", + "web_street_number", + "web_street_name", + "web_street_type", + "web_suite_number", + "web_city", + "web_county", + "web_state", + "web_zip", + "web_country", + "web_gmt_offset", + "web_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "ws_order_number" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(ws_order_number = #[56.0])" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "wr_returned_date_sk", + "wr_returned_time_sk", + "wr_item_sk", + "wr_refunded_customer_sk", + "wr_refunded_cdemo_sk", + "wr_refunded_hdemo_sk", + "wr_refunded_addr_sk", + "wr_returning_customer_sk", + "wr_returning_cdemo_sk", + "wr_returning_hdemo_sk", + "wr_returning_addr_sk", + "wr_web_page_sk", + "wr_reason_sk", + "wr_order_number", + "wr_return_quantity", + "wr_return_amt", + "wr_return_tax", + "wr_return_amt_inc_tax", + "wr_fee", + "wr_return_ship_cost", + "wr_refunded_cash", + "wr_reversed_charge", + "wr_account_credit", + "wr_net_loss" + ] + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": "(wr_order_number = ws_order_number)" + } + } + ], + "extra_info": { + "Expressions": "wr_order_number" + } + } + ], + "extra_info": { + "Join Type": "MARK", + "Conditions": "(ws_order_number = #[70.0])" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_date >= CAST('1999-02-01' AS DATE))", + "(ws_ship_date_sk = d_date_sk)", + "(ws_ship_addr_sk = ca_address_sk)", + "(ca_state = CAST('IL' AS VARCHAR))", + "(ws_web_site_sk = web_site_sk)", + "(web_company_name = CAST('pri' AS VARCHAR))", + "SUBQUERY", + "SUBQUERY", + "(d_date <= CAST('1999-04-02' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "count(DISTINCT ws_order_number)", + "sum(ws_ext_ship_cost)", + "sum(ws_net_profit)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "order count", + "total shipping cost", + "total net profit" + ] + } + } + ], + "extra_info": { + "Order By": "count(DISTINCT ws1.ws_order_number)" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "ws_wh", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999-02-01 <= $.d_date <= 1999-04-02)", + "(2450820i64 <= $.d_date_sk <= 2452762i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ws_order_number = ws_order_number)", + "(ws_warehouse_sk != ws_warehouse_sk)" + ], + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Expressions": "ws_order_number", + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Expressions": "#0", + "Estimated Cardinality": "2974925" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Expressions": "wr_order_number", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_order_number = wr_order_number)", + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Expressions": "wr_order_number", + "Estimated Cardinality": "2974925" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "(ws_order_number = ws_order_number)", + "(ws_warehouse_sk != ws_warehouse_sk)" + ], + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Expressions": "ws_order_number", + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Expressions": "#0", + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Expressions": "ws_order_number", + "Estimated Cardinality": "2974925" + } + }, + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Expressions": [ + "ws_ship_date_sk", + "ws_ship_addr_sk", + "ws_web_site_sk", + "ws_order_number", + "ws_ext_ship_cost", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.ca_state = \"IL\")", + "($.ca_address_sk <= 4998i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Expressions": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_ship_addr_sk = ca_address_sk)", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "(#0 = ws_order_number)", + "Estimated Cardinality": "2865" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "(#0 = ws_order_number)", + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(d_date_sk = ws_ship_date_sk)", + "Estimated Cardinality": "573" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ws_web_site_sk = web_site_sk)", + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "count(DISTINCT ws_order_number)", + "sum(ws_ext_ship_cost)", + "sum(ws_net_profit)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "order count", + "total shipping cost", + "total net profit" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999-02-01 <= $.d_date <= 1999-04-02)", + "(2450820i64 <= $.d_date_sk <= 2452762i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ws_order_number = ws_order_number", + "ws_warehouse_sk != ws_warehouse_sk" + ], + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Projections": "ws_order_number", + "Estimated Cardinality": "2974925" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": "wr_order_number", + "Estimated Cardinality": "7037" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_order_number = wr_order_number", + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Projections": "wr_order_number", + "Estimated Cardinality": "2974925" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_warehouse_sk", + "ws_order_number" + ], + "Estimated Cardinality": "71632" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": [ + "ws_order_number = ws_order_number", + "ws_warehouse_sk != ws_warehouse_sk" + ], + "Estimated Cardinality": "2974925" + } + } + ], + "extra_info": { + "Projections": "ws_order_number", + "Estimated Cardinality": "2974925" + } + }, + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ws_ship_date_sk", + "ws_ship_addr_sk", + "ws_web_site_sk", + "ws_order_number", + "ws_ext_ship_cost", + "ws_net_profit" + ], + "Estimated Cardinality": "71632" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "ca_state='IL'", + "Projections": "ca_address_sk", + "Estimated Cardinality": "200" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_ship_addr_sk = ca_address_sk", + "Estimated Cardinality": "14326" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "#0 = ws_order_number", + "Estimated Cardinality": "2865" + } + } + ], + "extra_info": { + "Join Type": "RIGHT_SEMI", + "Conditions": "#0 = ws_order_number", + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "d_date_sk = ws_ship_date_sk", + "Estimated Cardinality": "573" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ws_web_site_sk = web_site_sk", + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Projections": [ + "ws_order_number", + "ws_ext_ship_cost", + "ws_net_profit" + ], + "Estimated Cardinality": "573" + } + } + ], + "extra_info": { + "Aggregates": [ + "count(DISTINCT #0)", + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "count(DISTINCT ws1.ws_order_number) ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q96.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q96.slt.no new file mode 100644 index 00000000000..44b3d805043 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q96.slt.no @@ -0,0 +1,446 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT count(*) +FROM store_sales , + household_demographics, + time_dim, + store +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 20 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY count(*) +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "hd_demo_sk", + "hd_income_band_sk", + "hd_buy_potential", + "hd_dep_count", + "hd_vehicle_count" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "t_time_sk", + "t_time_id", + "t_time", + "t_hour", + "t_minute", + "t_second", + "t_am_pm", + "t_shift", + "t_sub_shift", + "t_meal_time" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "s_store_sk", + "s_store_id", + "s_rec_start_date", + "s_rec_end_date", + "s_closed_date_sk", + "s_store_name", + "s_number_employees", + "s_floor_space", + "s_hours", + "s_manager", + "s_market_id", + "s_geography_class", + "s_market_desc", + "s_market_manager", + "s_division_id", + "s_division_name", + "s_company_id", + "s_company_name", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip", + "s_country", + "s_gmt_offset", + "s_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_time_sk = t_time_sk)", + "(ss_hdemo_sk = hd_demo_sk)", + "(ss_store_sk = s_store_sk)", + "(t_hour = CAST(20 AS BIGINT))", + "(t_minute >= CAST(30 AS BIGINT))", + "(hd_dep_count = CAST(7 AS BIGINT))", + "(s_store_name = CAST('ese' AS VARCHAR))" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "count_star()" + } + } + ], + "extra_info": { + "Order By": "count_star()" + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "($.hd_dep_count = 7i64)", + "Function": "Vortex Scan", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Expressions": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_hdemo_sk = hd_demo_sk)", + "Estimated Cardinality": "57692" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "($.t_hour = 20i64)", + "($.t_minute >= 30i64)", + "(28803i64 <= $.t_time_sk <= 75598i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Expressions": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_time_sk = t_time_sk)", + "Estimated Cardinality": "11538" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_store_sk = s_store_sk)", + "Estimated Cardinality": "11538" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "count_star()", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "1" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_time_sk", + "ss_hdemo_sk", + "ss_store_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "hd_dep_count=7", + "Projections": "hd_demo_sk", + "Estimated Cardinality": "288" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_hdemo_sk = hd_demo_sk", + "Estimated Cardinality": "57692" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "t_hour=20", + "Projections": "t_time_sk", + "Estimated Cardinality": "3456" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_time_sk = t_time_sk", + "Estimated Cardinality": "11538" + } + }, + { + "name": "EMPTY_RESULT", + "children": [], + "extra_info": {} + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_store_sk = s_store_sk", + "Estimated Cardinality": "11538" + } + } + ], + "extra_info": { + "Aggregates": "count_star()" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": "count_star() ASC" + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q97.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q97.slt.no new file mode 100644 index 00000000000..71783637044 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q97.slt.no @@ -0,0 +1,910 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +WITH ssci AS + (SELECT ss_customer_sk customer_sk , + ss_item_sk item_sk + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ss_customer_sk , + ss_item_sk), + csci as + ( SELECT cs_bill_customer_sk customer_sk ,cs_item_sk item_sk + FROM catalog_sales,date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY cs_bill_customer_sk ,cs_item_sk) +SELECT sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NULL THEN 1 + ELSE 0 + END) store_only , + sum(CASE + WHEN ssci.customer_sk IS NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) catalog_only , + sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) store_and_catalog +FROM ssci +FULL OUTER JOIN csci ON (ssci.customer_sk=csci.customer_sk + AND ssci.item_sk = csci.item_sk) +LIMIT 100; +---- +logical_plan [ + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_sold_date_sk = d_date_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "ss_customer_sk", + "ss_item_sk" + ], + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_sk", + "item_sk" + ] + } + }, + { + "name": "CTE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(cs_sold_date_sk = d_date_sk)", + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_sk", + "item_sk" + ] + } + }, + { + "name": "LIMIT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "0" + } + }, + { + "name": "CTE_SCAN", + "children": [], + "extra_info": { + "CTE Index": "1" + } + } + ], + "extra_info": { + "Join Type": "FULL", + "Conditions": [ + "(customer_sk = customer_sk)", + "(item_sk = item_sk)" + ] + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "sum(CASE WHEN (((customer_sk IS NOT NULL) AND (customer_sk IS NULL))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN (((customer_sk IS NULL) AND (customer_sk IS NOT NULL))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN (((customer_sk IS NOT NULL) AND (customer_sk IS NOT NULL))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "store_only", + "catalog_only", + "store_and_catalog" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "CTE Name": "csci", + "Table Index": "1" + } + } + ], + "extra_info": { + "CTE Name": "ssci", + "Table Index": "0" + } + } +] +logical_opt [ + { + "name": "PROJECTION", + "children": [ + { + "name": "LIMIT", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "ss_customer_sk", + "ss_item_sk" + ], + "Expressions": "", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_sk", + "item_sk" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 2450815)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Expressions": "", + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Expressions": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Expressions": [ + "customer_sk", + "item_sk" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Join Type": "FULL", + "Conditions": [ + "(customer_sk = customer_sk)", + "(item_sk = item_sk)" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Expressions": [ + "(customer_sk IS NOT NULL)", + "customer_sk", + "customer_sk" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Groups": "", + "Expressions": [ + "sum(CASE WHEN ((#0 AND (customer_sk IS NULL))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((customer_sk IS NULL) AND (customer_sk IS NOT NULL))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN ((#0 AND (customer_sk IS NOT NULL))) THEN (1) ELSE 0 END)" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "store_only", + "catalog_only", + "store_and_catalog" + ], + "Estimated Cardinality": "0" + } + } +] +physical_plan [ + { + "name": "STREAMING_LIMIT", + "children": [ + { + "name": "UNGROUPED_AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_customer_sk" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "ss_customer_sk", + "ss_item_sk" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "", + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)" + ], + "Estimated Cardinality": "288463" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450815i64 <= $.d_date_sk <= 2452652i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_sold_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_compress_integral_usmallint(#0, 1)", + "__internal_compress_integral_usmallint(#1, 1)", + "__internal_compress_integral_usmallint(#2, 2450815)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "cs_bill_customer_sk", + "cs_item_sk" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1" + ], + "Aggregates": "", + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Projections": [ + "__internal_decompress_integral_bigint(#0, 1)", + "__internal_decompress_integral_bigint(#1, 1)" + ], + "Estimated Cardinality": "143656" + } + } + ], + "extra_info": { + "Join Type": "FULL", + "Conditions": [ + "customer_sk = customer_sk", + "item_sk = item_sk" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "(customer_sk IS NOT NULL)", + "customer_sk", + "customer_sk" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Projections": [ + "CASE WHEN ((#0 AND (customer_sk IS NULL))) THEN (1) ELSE 0 END", + "CASE WHEN (((customer_sk IS NULL) AND (customer_sk IS NOT NULL))) THEN (1) ELSE 0 END", + "CASE WHEN ((#0 AND (customer_sk IS NOT NULL))) THEN (1) ELSE 0 END" + ], + "Estimated Cardinality": "288463" + } + } + ], + "extra_info": { + "Aggregates": [ + "sum(#0)", + "sum(#1)", + "sum(#2)" + ] + } + } + ], + "extra_info": {} + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q98.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q98.slt.no new file mode 100644 index 00000000000..64074162d9d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q98.slt.no @@ -0,0 +1,590 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(ss_ext_sales_price) AS itemrevenue, + sum(ss_ext_sales_price)*100.0000/sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM store_sales , + item, + date_dim +WHERE ss_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST; +---- +logical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_sold_time_sk", + "ss_item_sk", + "ss_customer_sk", + "ss_cdemo_sk", + "ss_hdemo_sk", + "ss_addr_sk", + "ss_store_sk", + "ss_promo_sk", + "ss_ticket_number", + "ss_quantity", + "ss_wholesale_cost", + "ss_list_price", + "ss_sales_price", + "ss_ext_discount_amt", + "ss_ext_sales_price", + "ss_ext_wholesale_cost", + "ss_ext_list_price", + "ss_ext_tax", + "ss_coupon_amt", + "ss_net_paid", + "ss_net_paid_inc_tax", + "ss_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_rec_start_date", + "i_rec_end_date", + "i_item_desc", + "i_current_price", + "i_wholesale_cost", + "i_brand_id", + "i_brand", + "i_class_id", + "i_class", + "i_category_id", + "i_category", + "i_manufact_id", + "i_manufact", + "i_size", + "i_formulation", + "i_color", + "i_units", + "i_container", + "i_manager_id", + "i_product_name" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(ss_item_sk = i_item_sk)", + "(i_category IN (CAST('Sports' AS VARCHAR), CAST('Books' AS VARCHAR), CAST('Home' AS VARCHAR)))", + "(ss_sold_date_sk = d_date_sk)", + "(d_date >= CAST('1999-02-22' AS DATE))", + "(d_date <= CAST('1999-03-24' AS DATE))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price" + ], + "Expressions": "sum(ss_ext_sales_price)" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class)" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ] + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_category", + "memory.main.item.i_class", + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "((sum(memory.main.store_sales.ss_ext_sales_price) * 100.0000) / sum(sum(memory.main.store_sales.ss_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class))" + ] + } + } +] +logical_opt [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "vortex.list.contains([\"Sports\", \"Books\", \"Home\"], $.i_category)", + "Function": "Vortex Scan", + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_item_sk = i_item_sk)", + "Estimated Cardinality": "288464" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1999-02-22 <= $.d_date <= 1999-03-24)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(ss_sold_date_sk = d_date_sk)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price" + ], + "Expressions": "sum(ss_ext_sales_price)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": "sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Expressions": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_category", + "memory.main.item.i_class", + "memory.main.item.i_item_id", + "memory.main.item.i_item_desc", + "((sum(memory.main.store_sales.ss_ext_sales_price) * 100.0000) / sum(sum(memory.main.store_sales.ss_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class))" + ] + } + } +] +physical_plan [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "WINDOW", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "ss_sold_date_sk", + "ss_item_sk", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": "vortex.list.contains([\"Sports\", \"Books\", \"Home\"], $.i_category)", + "Projections": [ + "i_item_sk", + "i_item_id", + "i_item_desc", + "i_current_price", + "i_class", + "i_category" + ], + "Estimated Cardinality": "360" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_item_sk = i_item_sk", + "Estimated Cardinality": "288464" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1999-02-22 <= $.d_date <= 1999-03-24)", + "(2450816i64 <= $.d_date_sk <= 2452642i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "ss_sold_date_sk = d_date_sk", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "__internal_compress_integral_usmallint(#6, 2450816)" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "ss_ext_sales_price" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2", + "#3", + "#4" + ], + "Aggregates": "sum(#5)", + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": "sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class)" + } + } + ], + "extra_info": { + "Projections": [ + "#0", + "#1", + "#2", + "#3", + "#4", + "#5", + "#6" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Projections": [ + "i_item_id", + "i_item_desc", + "i_category", + "i_class", + "i_current_price", + "itemrevenue", + "revenueratio" + ], + "Estimated Cardinality": "288464" + } + } + ], + "extra_info": { + "Order By": [ + "memory.main.item.i_category ASC", + "memory.main.item.i_class ASC", + "memory.main.item.i_item_id ASC", + "memory.main.item.i_item_desc ASC", + "((sum(memory.main.store_sales.ss_ext_sales_price) * 100.0000) / sum(sum(memory.main.store_sales.ss_ext_sales_price)) OVER (PARTITION BY memory.main.item.i_class)) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/plans/q99.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q99.slt.no new file mode 100644 index 00000000000..b5d42495899 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/plans/q99.slt.no @@ -0,0 +1,801 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +EXPLAIN (FORMAT json) +SELECT w_substr , + sm_type , + LOWER(cc_name) cc_name_lower , + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 30) + AND (cs_ship_date_sk - cs_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 60) + AND (cs_ship_date_sk - cs_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 90) + AND (cs_ship_date_sk - cs_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM catalog_sales , + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, * + FROM warehouse) AS sq1 , + ship_mode , + call_center , + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY w_substr , + sm_type , + cc_name +ORDER BY w_substr NULLS FIRST, + sm_type NULLS FIRST, + cc_name_lower NULLS FIRST +LIMIT 100; +---- +logical_plan [ + { + "name": "LIMIT", + "children": [ + { + "name": "ORDER_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "FILTER", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "CROSS_PRODUCT", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_sold_time_sk", + "cs_ship_date_sk", + "cs_bill_customer_sk", + "cs_bill_cdemo_sk", + "cs_bill_hdemo_sk", + "cs_bill_addr_sk", + "cs_ship_customer_sk", + "cs_ship_cdemo_sk", + "cs_ship_hdemo_sk", + "cs_ship_addr_sk", + "cs_call_center_sk", + "cs_catalog_page_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk", + "cs_item_sk", + "cs_promo_sk", + "cs_order_number", + "cs_quantity", + "cs_wholesale_cost", + "cs_list_price", + "cs_sales_price", + "cs_ext_discount_amt", + "cs_ext_sales_price", + "cs_ext_wholesale_cost", + "cs_ext_list_price", + "cs_ext_tax", + "cs_coupon_amt", + "cs_ext_ship_cost", + "cs_net_paid", + "cs_net_paid_inc_tax", + "cs_net_paid_inc_ship", + "cs_net_paid_inc_ship_tax", + "cs_net_profit" + ] + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "w_warehouse_sk", + "w_warehouse_id", + "w_warehouse_name", + "w_warehouse_sq_ft", + "w_street_number", + "w_street_name", + "w_street_type", + "w_suite_number", + "w_city", + "w_county", + "w_state", + "w_zip", + "w_country", + "w_gmt_offset" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "sm_ship_mode_sk", + "sm_ship_mode_id", + "sm_type", + "sm_code", + "sm_carrier", + "sm_contract" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_call_center_id", + "cc_rec_start_date", + "cc_rec_end_date", + "cc_closed_date_sk", + "cc_open_date_sk", + "cc_name", + "cc_class", + "cc_employees", + "cc_sq_ft", + "cc_hours", + "cc_manager", + "cc_mkt_id", + "cc_mkt_class", + "cc_mkt_desc", + "cc_market_manager", + "cc_division", + "cc_division_name", + "cc_company", + "cc_company_name", + "cc_street_number", + "cc_street_name", + "cc_street_type", + "cc_suite_number", + "cc_city", + "cc_county", + "cc_state", + "cc_zip", + "cc_country", + "cc_gmt_offset", + "cc_tax_percentage" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan" + } + } + ], + "extra_info": { + "Expressions": [ + "d_date_sk", + "d_date_id", + "d_date", + "d_month_seq", + "d_week_seq", + "d_quarter_seq", + "d_year", + "d_dow", + "d_moy", + "d_dom", + "d_qoy", + "d_fy_year", + "d_fy_quarter_seq", + "d_fy_week_seq", + "d_day_name", + "d_quarter_name", + "d_holiday", + "d_weekend", + "d_following_holiday", + "d_first_dom", + "d_last_dom", + "d_same_day_ly", + "d_same_day_lq", + "d_current_day", + "d_current_week", + "d_current_month", + "d_current_quarter", + "d_current_year" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } + ], + "extra_info": { + "Expressions": [ + "(d_month_seq >= CAST(1200 AS BIGINT))", + "(cs_ship_date_sk = d_date_sk)", + "(cs_warehouse_sk = w_warehouse_sk)", + "(cs_ship_mode_sk = sm_ship_mode_sk)", + "(cs_call_center_sk = cc_call_center_sk)", + "(d_month_seq <= CAST((1200 + 11) AS BIGINT))" + ] + } + } + ], + "extra_info": { + "Groups": [ + "w_substr", + "sm_type", + "cc_name" + ], + "Expressions": [ + "sum(CASE WHEN (((cs_ship_date_sk - cs_sold_date_sk) <= CAST(30 AS BIGINT))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((cs_ship_date_sk - cs_sold_date_sk) > CAST(30 AS BIGINT)) AND ((cs_ship_date_sk - cs_sold_date_sk) <= CAST(60 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((cs_ship_date_sk - cs_sold_date_sk) > CAST(60 AS BIGINT)) AND ((cs_ship_date_sk - cs_sold_date_sk) <= CAST(90 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN ((((cs_ship_date_sk - cs_sold_date_sk) > CAST(90 AS BIGINT)) AND ((cs_ship_date_sk - cs_sold_date_sk) <= CAST(120 AS BIGINT)))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)", + "sum(CASE WHEN (((cs_ship_date_sk - cs_sold_date_sk) > CAST(120 AS BIGINT))) THEN (CAST(1 AS INTEGER)) ELSE CAST(0 AS INTEGER) END)" + ] + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "sm_type", + "cc_name_lower", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ] + } + } + ], + "extra_info": { + "Order By": [ + "sq1.w_substr", + "memory.main.ship_mode.sm_type", + "lower(memory.main.call_center.cc_name)" + ] + } + } + ], + "extra_info": { + "Expressions": "" + } + } +] +logical_opt [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "AGGREGATE", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "COMPARISON_JOIN", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "cs_sold_date_sk", + "cs_ship_date_sk", + "cs_call_center_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "w_warehouse_sk" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_warehouse_sk = w_warehouse_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Expressions": [ + "sm_ship_mode_sk", + "sm_type" + ], + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_mode_sk = sm_ship_mode_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": "", + "Function": "Vortex Scan", + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Expressions": [ + "cc_call_center_sk", + "cc_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_call_center_sk = cc_call_center_sk)", + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450817i64 <= $.d_date_sk <= 2452740i64)" + ], + "Function": "Vortex Scan", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Expressions": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "(cs_ship_date_sk = d_date_sk)", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "sm_type", + "cc_name", + "(cs_ship_date_sk - cs_sold_date_sk)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "w_substr", + "sm_type", + "cc_name" + ], + "Expressions": [ + "sum(CASE WHEN ((#3 <= 30)) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#3 > 30) AND (#3 <= 60))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#3 > 60) AND (#3 <= 90))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN (((#3 > 90) AND (#3 <= 120))) THEN (1) ELSE 0 END)", + "sum(CASE WHEN ((#3 > 120)) THEN (1) ELSE 0 END)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": [ + "w_substr", + "sm_type", + "cc_name_lower", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Expressions": "", + "Estimated Cardinality": "100" + } + } +] +physical_plan [ + { + "name": "TOP_N", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_GROUP_BY", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "PROJECTION", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "HASH_JOIN", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cs_sold_date_sk", + "cs_ship_date_sk", + "cs_call_center_sk", + "cs_ship_mode_sk", + "cs_warehouse_sk" + ], + "Estimated Cardinality": "143657" + } + }, + { + "name": "PROJECTION", + "children": [ + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "w_warehouse_sk", + "w_warehouse_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "w_warehouse_sk" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_warehouse_sk = w_warehouse_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "sm_ship_mode_sk", + "sm_type" + ], + "Estimated Cardinality": "20" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_mode_sk = sm_ship_mode_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Projections": [ + "cc_call_center_sk", + "cc_name" + ], + "Estimated Cardinality": "1" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_call_center_sk = cc_call_center_sk", + "Estimated Cardinality": "143657" + } + }, + { + "name": "READ_VORTEX", + "children": [], + "extra_info": { + "Function": "Vortex Scan", + "Filters": [ + "(1200i64 <= $.d_month_seq <= 1211i64)", + "(2450817i64 <= $.d_date_sk <= 2452740i64)" + ], + "Projections": "d_date_sk", + "Estimated Cardinality": "14609" + } + } + ], + "extra_info": { + "Join Type": "INNER", + "Conditions": "cs_ship_date_sk = d_date_sk", + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "sm_type", + "cc_name", + "(cs_ship_date_sk - cs_sold_date_sk)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "sm_type", + "cc_name", + "CASE WHEN ((#3 <= 30)) THEN (1) ELSE 0 END", + "CASE WHEN (((#3 > 30) AND (#3 <= 60))) THEN (1) ELSE 0 END", + "CASE WHEN (((#3 > 60) AND (#3 <= 90))) THEN (1) ELSE 0 END", + "CASE WHEN (((#3 > 90) AND (#3 <= 120))) THEN (1) ELSE 0 END", + "CASE WHEN ((#3 > 120)) THEN (1) ELSE 0 END" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Groups": [ + "#0", + "#1", + "#2" + ], + "Aggregates": [ + "sum(#3)", + "sum(#4)", + "sum(#5)", + "sum(#6)", + "sum(#7)" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Projections": [ + "w_substr", + "sm_type", + "cc_name_lower", + "30 days", + "31-60 days", + "61-90 days", + "91-120 days", + ">120 days" + ], + "Estimated Cardinality": "143657" + } + } + ], + "extra_info": { + "Top": "100", + "Order By": [ + "sq1.w_substr ASC", + "memory.main.ship_mode.sm_type ASC", + "lower(memory.main.call_center.cc_name) ASC" + ] + } + } +] diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q1.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q1.slt.no new file mode 100644 index 00000000000..535aa94bcab --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q1.slt.no @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query T +WITH customer_total_return AS + (SELECT sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + sum(sr_return_amt) AS ctr_total_return + FROM store_returns, + date_dim + WHERE sr_returned_date_sk = d_date_sk + AND d_year = 2000 + GROUP BY sr_customer_sk, + sr_store_sk) +SELECT c_customer_id +FROM customer_total_return ctr1, + store, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100; +---- +AAAAAAAAAAFBAAAA +AAAAAAAAAANAAAAA +AAAAAAAAABDBAAAA +AAAAAAAAABEBAAAA +AAAAAAAAABECAAAA +AAAAAAAAABHBAAAA +AAAAAAAAABKBAAAA +AAAAAAAAABMAAAAA +AAAAAAAAACFCAAAA +AAAAAAAAACJBAAAA +AAAAAAAAADBBAAAA +AAAAAAAAADCCAAAA +AAAAAAAAADJAAAAA +AAAAAAAAADNAAAAA +AAAAAAAAAEEBAAAA +AAAAAAAAAEGCAAAA +AAAAAAAAAEJBAAAA +AAAAAAAAAEKAAAAA +AAAAAAAAAEPAAAAA +AAAAAAAAAFDCAAAA +AAAAAAAAAFKBAAAA +AAAAAAAAAGFBAAAA +AAAAAAAAAGPBAAAA +AAAAAAAAAHFBAAAA +AAAAAAAAAHHAAAAA +AAAAAAAAAHJAAAAA +AAAAAAAAAHMAAAAA +AAAAAAAAAHPBAAAA +AAAAAAAAAIKBAAAA +AAAAAAAAAILBAAAA +AAAAAAAAAJJAAAAA +AAAAAAAAAJMAAAAA +AAAAAAAAAKCAAAAA +AAAAAAAAAKCCAAAA +AAAAAAAAAKFBAAAA +AAAAAAAAAKJAAAAA +AAAAAAAAALAAAAAA +AAAAAAAAALDCAAAA +AAAAAAAAALEBAAAA +AAAAAAAAALOAAAAA +AAAAAAAAAMAAAAAA +AAAAAAAAAMEAAAAA +AAAAAAAAAMGAAAAA +AAAAAAAAAMPAAAAA +AAAAAAAAANDBAAAA +AAAAAAAAANIBAAAA +AAAAAAAAANKBAAAA +AAAAAAAAANPBAAAA +AAAAAAAAAOFAAAAA +AAAAAAAAAOIBAAAA +AAAAAAAAAOLBAAAA +AAAAAAAAAPIAAAAA +AAAAAAAAAPJAAAAA +AAAAAAAAAPKAAAAA +AAAAAAAAAPNBAAAA +AAAAAAAABAFBAAAA +AAAAAAAABAGAAAAA +AAAAAAAABAHCAAAA +AAAAAAAABAMAAAAA +AAAAAAAABBBAAAAA +AAAAAAAABBFCAAAA +AAAAAAAABBGCAAAA +AAAAAAAABBOAAAAA +AAAAAAAABBPAAAAA +AAAAAAAABCCAAAAA +AAAAAAAABCDBAAAA +AAAAAAAABCKBAAAA +AAAAAAAABDACAAAA +AAAAAAAABDCAAAAA +AAAAAAAABDDBAAAA +AAAAAAAABDJAAAAA +AAAAAAAABDMBAAAA +AAAAAAAABEACAAAA +AAAAAAAABEIAAAAA +AAAAAAAABEMAAAAA +AAAAAAAABFFBAAAA +AAAAAAAABFIBAAAA +AAAAAAAABFJBAAAA +AAAAAAAABGABAAAA +AAAAAAAABHACAAAA +AAAAAAAABHBCAAAA +AAAAAAAABHCAAAAA +AAAAAAAABIABAAAA +AAAAAAAABIDBAAAA +AAAAAAAABJDAAAAA +AAAAAAAABJJAAAAA +AAAAAAAABJKBAAAA +AAAAAAAABJMBAAAA +AAAAAAAABJNAAAAA +AAAAAAAABKCBAAAA +AAAAAAAABKCCAAAA +AAAAAAAABKECAAAA +AAAAAAAABLDBAAAA +AAAAAAAABLMBAAAA +AAAAAAAABLPAAAAA +AAAAAAAABMBCAAAA +AAAAAAAABMCAAAAA +AAAAAAAABMCBAAAA +AAAAAAAABMDBAAAA +AAAAAAAABMEBAAAA diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q10.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q10.slt.no new file mode 100644 index 00000000000..2a19baba86a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q10.slt.no @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIITIIIIIII +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3, + cd_dep_count, + count(*) cnt4, + cd_dep_employed_count, + count(*) cnt5, + cd_dep_college_count, + count(*) cnt6 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ('Rush County', + 'Toole County', + 'Jefferson County', + 'Dona Ana County', + 'La Porte County') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 1 AND 1+3)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100; +---- +M D College 1 9500 1 Good 1 5 1 1 1 0 1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q11.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q11.slt.no new file mode 100644 index 00000000000..77dd66a0170 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q11.slt.no @@ -0,0 +1,89 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTT +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ss_ext_list_price-ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(ws_ext_list_price-ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN (t_w_secyear.year_total*1.0000) / t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN (t_s_secyear.year_total*1.0000) / t_s_firstyear.year_total + ELSE 0.0 + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- +AAAAAAAAFNMBAAAA Shawnna Freeland Y +AAAAAAAAKJHBAAAA Roderick Ballard Y +AAAAAAAALFNAAAAA David Gonzalez N +AAAAAAAALKIAAAAA John Robbins Y diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q12.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q12.slt.no new file mode 100644 index 00000000000..ea76649d831 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q12.slt.no @@ -0,0 +1,132 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + sum(ws_ext_sales_price) AS itemrevenue, + sum(ws_ext_sales_price)*100.0000/sum(sum(ws_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM web_sales, + item, + date_dim +WHERE ws_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price +ORDER BY i_category, + i_class, + i_item_id, + i_item_desc, + revenueratio +LIMIT 100; +---- +AAAAAAAACKEAAAAA Physical, local rates cannot explain; quickly lovely horses used to take. Quick, various subjects keep usually; please easy sources ought to thin Books arts 35.27 0 0 +AAAAAAAAIJGAAAAA Industrial figures shall not meet still. Live, civil years ought to spend tiny groups. Brief years know again unfortunately present texts. So as prime terms become. Effective sets get other oth Books arts 4.1 4278.12 72.150489759573 +AAAAAAAAMFFAAAAA So tiny sales obtain as ill tons. Constant others increase women. New Books arts 8.22 1651.32 27.849510240427 +AAAAAAAAADFAAAAA Good groups steal respective chapters. Components could rely needs. Men need only wide, private courts. New, sudden forms see only. Letters will not find at the faces. Just fascinating humans s Books business 78.25 4458.55 45.007490228381 +AAAAAAAAEICAAAAA Contemporary, signific Books business 2.42 5161.11 52.09958571567 +AAAAAAAAKMAAAAAA Conservative women ought to beat positions. Agai Books business 0.19 286.58 2.892924055949 +AAAAAAAAGMCAAAAA Now old phenomena will suppress sufficiently by a arguments. C Books computers 9.23 6536.02 74.190249278929 +AAAAAAAALCDAAAAA Groups see legs. Systems lead hot, golden hands. Then general enquiries comply often social houses. Relentlessly annual ministers should not minimise suf Books computers 4.34 1968.38 22.343047125874 +AAAAAAAAMJEAAAAA Advantages w Books computers 1.04 305.41 3.466703595197 +AAAAAAAAGOCAAAAA Frantically necess Books cooking 4.37 1065.24 6.35584725537 +AAAAAAAAKCCAAAAA Bitter reasons may not bear cuts. Marine, normal shares make also. Trying contracts lift numerous reports. Also general feelings argue rights; still quiet techniques Books cooking 4.44 10498.56 62.640572792363 +AAAAAAAALIGAAAAA Visitors will determine reluctant forms. Laws could not need fresh paths. Social, critical police must not thin Books cooking 0.88 5196.2 31.003579952267 +AAAAAAAACIDAAAAA Magic, dead sports call; recently european wives o Books entertainments 3.51 4638.06 65.023938537892 +AAAAAAAAJKGAAAAA Most final departments will attempt also other customers. Severe units put increased years; flights Books entertainments 4.92 2053.79 28.793399552773 +AAAAAAAAKDEAAAAA Free activities might act on a years. Other, new fingers can claim specifically at the alternatives. Great, straightforward features come now; sure, little stand Books entertainments 6.46 110.88 1.55449785149 +AAAAAAAAOOEAAAAA True, sole women market far except for a depths. Dif Books entertainments 1.45 330.12 4.628164057845 +AAAAAAAABGAAAAAA More reg Books fiction 57.09 1461.78 34.482449518777 +AAAAAAAALIAAAAAA Lines shall describe explicitly northern, firm systems. Later Books fiction 2.99 9.76 0.230232119268 +AAAAAAAAOCGAAAAA National, suitable weeks tax yet personal, subjective groups. White, likely boys drive states; de Books fiction 8.69 2762.56 65.167012643895 +AAAAAAAAPMBAAAAA Unlikely, interested chemicals control likely countries. Assistant, medical museums choose horses. Far fierce waters should touch significantly publishers. At first foreign entries may unde Books fiction 8.79 5.1 0.12030571806 +AAAAAAAAPNGAAAAA Ancient firms shall not show all thence emotional affairs. Ever annual revenues used to sta Books home repair 1.73 8778.5 100 +AAAAAAAACLBAAAAA Foreign, successful books might see bri Books mystery 3 1287.76 100 +AAAAAAAAEBFAAAAA Large wings used to see particul Books parenting 99.89 17.82 0.393768644349 +AAAAAAAAEFEAAAAA Extern Books parenting 2.15 3289.34 72.68456524141 +AAAAAAAAGFCAAAAA Royal versions restore oddly in a travellers; inc measures should play enough complex kinds. Necessary, local stations mean quite serious stones. Econo Books parenting 2.09 1055.34 23.319854159761 +AAAAAAAAIHFAAAAA Permanent cards act again. Christian cases should not include positions. Quite multiple films should locate physical risks; by now negative leaders shall give duties. Victor Books parenting 4.64 163 3.60181195448 +AAAAAAAACLGAAAAA Failures think just eventually top factors. Animals ought to lose nearly terrible, necessary books. Public principles must not go sometimes else commercial wages. Serious oth Books reference 2.23 306.88 2.516298790802 +AAAAAAAAHFBAAAAA Difficult, ready masses ought to take tools. Attempts must receive immediately. Pilots s Books reference 38.26 3118.67 25.571902860765 +AAAAAAAAHMGAAAAA White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Books reference 4.95 6925.5 56.786454886931 +AAAAAAAALIDAAAAA German, ultimate personnel want even. Asian, old hospitals could not open far applicable, logical seeds. Years worry schemes. Perhaps li Books reference 1.55 1844.64 15.125343461502 +AAAAAAAAFCDAAAAA Bombs ensure once members. Even national effects can get quickly new extraordinary clubs. Main, occupational barriers tackle just equal ser Books romance 4.5 48.48 2.732976678374 +AAAAAAAALLDAAAAA Officials must prevent openly local, federal elements. Expenses sleep lines; russian, young conclusions cost actually up the leaders. Regulations Books romance 90.72 1341.12 75.603335043323 +AAAAAAAAMPEAAAAA Skills eat great, soviet provinces. Male, widespread months must help in public responsible cells. Widely main responses might appear Books romance 2.81 384.29 21.663688278304 +AAAAAAAACPCAAAAA Elections grow arab, domestic initiatives. Wide courses shall order involved, new services. Compulsory, concerne Books science 0.31 975.52 41.151110698648 +AAAAAAAADAHAAAAA Similar fields run old cities. Golden, warm opportunities compare by a wives. Initial, regular libraries touch sometimes. Still unemployed stations contribute below Books science 2.33 154.08 6.499675184976 +AAAAAAAADPEAAAAA Double effects put. Long, personal keys vote national metres; other, logical residents decide especially. Materials provide different, different families. Clearly open systems take pa Books science 0.45 1240.98 52.349214116377 +AAAAAAAABJAAAAAA Prospects know Books self-help 59.77 1950.21 9.631760644419 +AAAAAAAAFGCAAAAA Pp. would agree thus processes. Married plans should want most in the houses. Ministers could write very foreign, level features. Ot Books self-help 1.89 13333.95 65.854146396875 +AAAAAAAAJHAAAAAA However increasing dates meet. Large, ready goals mean now blind structures. Crea Books self-help 38.79 239.44 1.182554067869 +AAAAAAAAMPBAAAAA Beautiful, short women could occur consciously women. Books self-help 2.94 4724.1 23.331538890837 +AAAAAAAAAGCAAAAA Facilities form busy years. Women meet rather on the benefits. Only remarkable factors cannot start supreme, crucial skills; stairs take Books sports 7.52 19264.21 100 +AAAAAAAAAHDAAAAA National reasons Books travel 4.02 647.29 3.488003034874 +AAAAAAAADJEAAAAA Good, domestic authorities can drink only blue, old findings. Historical, Books travel 84.79 2321.23 12.508237860371 +AAAAAAAAKPAAAAAA Flowers suffer following, subst Books travel 4.16 3077.62 16.584139875771 +AAAAAAAAMEAAAAAA Original interests see of course british, important terms. Yet appropriate principles conclude in a arrangements; good countries would get sometimes; Books travel 3.84 5784.29 31.169369331503 +AAAAAAAAMGBAAAAA White trees grow simply. Then possible banks used to get happily unhappy accused minds. Very fires should touch then particular towns. National systems watch actively victorian papers. Con Books travel 8.58 37.1 0.199917985128 +AAAAAAAAPCCAAAAA For instance total methods clear. Level, english sorts prove most. Territorial Books travel 3.3 6690.08 36.050331912353 +AAAAAAAAOJGAAAAA NULL Books NULL NULL 2157.45 100 +AAAAAAAAABDAAAAA Great, wonderful lakes must not arrange already to the rules. Easy, cultural elections need rather sensible orders. Hardly favorable prospects take at Home accent 1.06 3526.38 32.042706889893 +AAAAAAAAEAGAAAAA Over other countries cannot remai Home accent 9.45 1911.74 17.37116376275 +AAAAAAAAOLDAAAAA So old proposals could not reconsider varieties. Sentences Home accent 0.48 5567.13 50.586129347357 +AAAAAAAAADEAAAAA International colleges shall mind large, outer hundreds. Technical, major times shall turn afterwards even medical questions. Alone members oug Home bathroom 2.57 908.04 7.534907572829 +AAAAAAAAHBFAAAAA There young things should not compete small, relative problems. Sources find right dealers. Late authorities must find groups. Feet fall continually major courses. Now Home bathroom 7.89 11143.07 92.465092427171 +AAAAAAAAAOGAAAAA As prime legs proceed probably orange, historic experiments. Here different skills may not appease usually continental terms. Cheerful daughters take on a shops. Far Home bedding 3.51 5946.04 75.219388406981 +AAAAAAAAEKDAAAAA So general children can afford now particular characteristics. Publishers see under a exchanges; similarly wonderful Home bedding 1.78 1958.89 24.780611593019 +AAAAAAAADOFAAAAA New needs write as. Back drivers like but for a years. Times perform soon economic odds. Very cold windows used to know occasionally. Cases must take Home blinds/shades 2.08 1816.2 40.445474770014 +AAAAAAAAIJFAAAAA Ty Home blinds/shades 1.08 2674.29 59.554525229986 +AAAAAAAAAIAAAAAA Great, tiny animals adopt then outcomes. Terms sweep less dry, physical signs. National, black terms adapt for a reasons; groups shall Home curtains/drapes 4.06 676.14 9.171469613589 +AAAAAAAAGKDAAAAA Once again real differences can make black offenders. Consequen Home curtains/drapes 0.46 4236.1 57.460381622336 +AAAAAAAAOPFAAAAA Limited ey Home curtains/drapes 4.92 2459.97 33.368148764075 +AAAAAAAAJNGAAAAA Financial, clear nations ought to come. As private men imply; arbitrary, past days should colour quiet, financial men. Lips come by a questions. Deep years must not connec Home decor 4.49 829.27 7.026372090068 +AAAAAAAALLGAAAAA Aspects acc Home decor 3.23 10972.98 92.973627909932 +AAAAAAAABNCAAAAA Words shall not avoid then thick inches. Nevertheless gold facilities shall panic however. Good govern Home flatware 9.67 42.99 0.165118607703 +AAAAAAAAEBGAAAAA Relations shall know head, decent weaknesses. Systematic implications might not keep in a managers. Much great others Home flatware 6.97 7920.96 30.423305114529 +AAAAAAAANMDAAAAA Players shall not ensue still rational, public losses. Uncertain times walk anywhere. Costs get. Nearly white sales remove available ends. Rivers will think then customers. Families trust together sig Home flatware 2.03 13999.2 53.768979133755 +AAAAAAAAODFAAAAA Domestic years refuse strictly more selective years. Studies become schools. Almost clear countries end unknown, special images; further little men may no Home flatware 9.22 4072.68 15.642597144013 +AAAAAAAAABEAAAAA Less short parts can mention careful groups. Even successful tons say in a rights. Then chinese traditions repair. Attit Home furniture 8.76 2899.44 17.978302818054 +AAAAAAAAABGAAAAA Extra millions should condemn. Uncomfortable nurses should not joi Home furniture 4.64 7086.6 43.941257880978 +AAAAAAAAAFDAAAAA Most increased shares may not examine sometimes evident, environmental roots. Minerals may live ge Home furniture 0.85 6141.4 38.080439300968 +AAAAAAAAJFFAAAAA Close, small reports will expand seriously men. Serious, a Home glassware 0.82 4606.5 55.923808136359 +AAAAAAAAOOAAAAAA Previously recent expectations win over true minutes. Extra perc Home glassware 2.39 3630.6 44.076191863641 +AAAAAAAAEHFAAAAA Kids used to know even. Homes require i Home kids 3.14 1571.32 100 +AAAAAAAAHOEAAAAA Separate studies may not trust only. Backs push recent centres. Messages open. Magic sides ought to get fresh items; concerned partners pass as through Home lighting 1.46 1521.23 14.822512391637 +AAAAAAAAICAAAAAA Usually other children must stop shares. Relations Home lighting 9.93 87.83 0.855795154814 +AAAAAAAALBBAAAAA Democrats pay papers. Moving, conventional seats could not mind instead. Alone activit Home lighting 9.13 2869.49 27.959645209915 +AAAAAAAAOJAAAAAA Great, absent relations should participate alone wonderful issues; chains will care on behalf of a police. Substantial activities exert grey, free Home lighting 9.17 5784.42 56.362047243634 +AAAAAAAAALGAAAAA Big, western sentences could use; prices bring average board Home mattresses 4.48 1144.93 43.218442002589 +AAAAAAAALGCAAAAA Different, new tests could not warn able, great bodies. Good, moving years might convey; permanently confident e Home mattresses 9.27 1504.24 56.781557997411 +AAAAAAAABDGAAAAA New sites shou Home paint 4.83 18884.52 79.863857947406 +AAAAAAAAGCDAAAAA Particular groups prove patient benefits. Fresh moments take together. Easier strong Home paint 2.01 411.57 1.740556181222 +AAAAAAAAILEAAAAA Sweet days allow theoretical, conventional events. Simple, useful offences w Home paint 0.76 3692.08 15.614045400702 +AAAAAAAAMGFAAAAA Resources could not provide ai Home paint 7.56 657.72 2.78154047067 +AAAAAAAAKECAAAAA Possible countries see ever. Never particular users ought to encourage in a casualties. Still upper proposals will see though succe Home rugs 87.61 0 0 +AAAAAAAANGAAAAAA Solutions may not go central, interesting sectors. Enterprises resist inte Home rugs 9.46 29.7 0.867041898267 +AAAAAAAAPCFAAAAA Standard women sit however sale Home rugs 7.34 3395.74 99.132958101733 +AAAAAAAAOEBAAAAA Over different children would provide successfully important international forms; well particular birds list in order. Horses used to pay never cert Home tables 1.94 4974 100 +AAAAAAAAAICAAAAA Only, other occasions can work also birds. General women get si Home wallpaper 4.82 1431.8 6.671901174968 +AAAAAAAAGCFAAAAA Medical, proposed friends suggest then even arbitrary years. Governments continue upon the yea Home wallpaper 8.17 3264.04 15.209772531879 +AAAAAAAAJKDAAAAA Hardly well-known agencies might eat now similar british circumstances; institutions tell eventually. Informal problems will per Home wallpaper 57.16 143.85 0.670312183279 +AAAAAAAAKABAAAAA Certainly difficult fields like for a fields. Old, ideal committees should experiment out of a messages. Hearts see geo Home wallpaper 8.59 7843.78 36.550443496434 +AAAAAAAAKEFAAAAA Important, awful changes shall determine then awful, possible respondents. Children clear especially. Really saf Home wallpaper 0.75 3796.8 17.692327406845 +AAAAAAAAKPBAAAAA For example flat users lower very new developments; animals enter systems. Male courses want Home wallpaper 6.27 2997 13.96541962661 +AAAAAAAAMNDAAAAA Compatible kids go at the acts. Massive operations may not mark brilliantly. Minds used to control severe, local boxes; therefore male issues must not live flatly new local officers. Substantial Home wallpaper 4.16 1982.88 9.239823579984 +AAAAAAAADCFAAAAA Police might not generate completely now personal newspapers. Levels settle widely furthermore basic f Sports archery 6.79 7340 34.901989128078 +AAAAAAAAEFCAAAAA Statistical, Sports archery 0.35 669.64 3.184164577619 +AAAAAAAAEKFAAAAA Sure schools might fit as essential organisations; feelings average lazily modest aspects. British difficulties should enable Sports archery 0.14 1629.12 7.746529772253 +AAAAAAAAMNGAAAAA Conscious, c Sports archery 4.8 11391.56 54.16731652205 +AAAAAAAACPAAAAAA At all lengthy sales must not restore poor, clean calculations; also alone inves Sports athletic shoes 1.76 3897.85 66.953005701015 +AAAAAAAAGAEAAAAA Equations may not lea Sports athletic shoes 6.16 494.12 8.487453128516 +AAAAAAAAPDBAAAAA Poor, serious years help bare, great days. Wide institutions detach carefully needs. Supreme models find almost new changes. Businesses assume just even experimental words. Mos Sports athletic shoes 0.45 1429.8 24.559541170469 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q13.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q13.slt.no new file mode 100644 index 00000000000..8979a67975d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q13.slt.no @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RRRR +SELECT avg(ss_quantity) avg1, + avg(ss_ext_sales_price) avg2, + avg(ss_ext_wholesale_cost) avg3, + sum(ss_ext_wholesale_cost) +FROM store_sales , + store , + customer_demographics , + household_demographics , + customer_address , + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 and((ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 ) + OR (ss_hdemo_sk=hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1)) and((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('TX', 'OH', 'TX') + AND ss_net_profit BETWEEN 100 AND 200) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', 'NM', 'KY') + AND ss_net_profit BETWEEN 150 AND 300) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', 'TX', 'MS') + AND ss_net_profit BETWEEN 50 AND 250)) ; +---- +4 536.56 298.88 298.88 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q14.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q14.slt.no new file mode 100644 index 00000000000..593421d84ba --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q14.slt.no @@ -0,0 +1,239 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIIIRI +WITH cross_items AS + (SELECT i_item_sk ss_item_sk + FROM item, + (SELECT iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, + item iss, + date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, + item ics, + date_dim d2 WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 INTERSECT + SELECT iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, + item iws, + date_dim d3 WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) sq1 + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id ), + avg_sales AS + (SELECT avg(quantity*list_price) average_sales + FROM + (SELECT ss_quantity quantity, + ss_list_price list_price + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL SELECT ws_quantity quantity, + ws_list_price list_price + FROM web_sales, + date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) sq2) +SELECT channel, + i_brand_id, + i_class_id, + i_category_id, + sum(sales) AS sum_sales, + sum(number_sales) AS sum_number_sales +FROM + (SELECT 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ss_quantity*ss_list_price) sales, + count(*) number_sales + FROM store_sales, + item, + date_dim + WHERE ss_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ss_quantity*ss_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(cs_quantity*cs_list_price) sales, + count(*) number_sales + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(cs_quantity*cs_list_price) > + (SELECT average_sales + FROM avg_sales) + UNION ALL SELECT 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + sum(ws_quantity*ws_list_price) sales, + count(*) number_sales + FROM web_sales, + item, + date_dim + WHERE ws_item_sk IN + (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999+2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING sum(ws_quantity*ws_list_price) > + (SELECT average_sales + FROM avg_sales)) y +GROUP BY ROLLUP (channel, + i_brand_id, + i_class_id, + i_category_id) +ORDER BY channel NULLS FIRST, + i_brand_id NULLS FIRST, + i_class_id NULLS FIRST, + i_category_id NULLS FIRST +LIMIT 100; +---- +NULL NULL NULL NULL 67233944.61 15544 +catalog NULL NULL NULL 22754494.09 4442 +catalog 1001001 NULL NULL 160332.73 23 +catalog 1001001 1 NULL 54197.89 8 +catalog 1001001 1 5 54197.89 8 +catalog 1001001 3 NULL 74447.97 12 +catalog 1001001 3 2 52741.46 7 +catalog 1001001 3 5 21706.51 5 +catalog 1001001 7 NULL 31686.87 3 +catalog 1001001 7 7 31686.87 3 +catalog 1001002 NULL NULL 537384.24 104 +catalog 1001002 1 NULL 426344.77 83 +catalog 1001002 1 1 426344.77 83 +catalog 1001002 3 NULL 13382.56 4 +catalog 1001002 3 1 13382.56 4 +catalog 1001002 5 NULL 8913.7 2 +catalog 1001002 5 1 8913.7 2 +catalog 1001002 8 NULL 46506.85 8 +catalog 1001002 8 1 46506.85 8 +catalog 1001002 9 NULL 42236.36 7 +catalog 1001002 9 1 42236.36 7 +catalog 1002001 NULL NULL 302169.32 55 +catalog 1002001 1 NULL 94206.3 18 +catalog 1002001 1 2 49591.03 10 +catalog 1002001 1 9 44615.27 8 +catalog 1002001 2 NULL 113767.8 22 +catalog 1002001 2 5 29844.64 7 +catalog 1002001 2 6 44381.06 9 +catalog 1002001 2 7 39542.1 6 +catalog 1002001 4 NULL 94195.22 15 +catalog 1002001 4 5 36295.8 6 +catalog 1002001 4 9 57899.42 9 +catalog 1002002 NULL NULL 414619.86 96 +catalog 1002002 1 NULL 22777.7 4 +catalog 1002002 1 1 22777.7 4 +catalog 1002002 2 NULL 336274.18 76 +catalog 1002002 2 1 336274.18 76 +catalog 1002002 3 NULL 27482.94 5 +catalog 1002002 3 1 27482.94 5 +catalog 1002002 5 NULL 10904.22 4 +catalog 1002002 5 1 10904.22 4 +catalog 1002002 9 NULL 17180.82 7 +catalog 1002002 9 1 17180.82 7 +catalog 1003001 NULL NULL 154892.53 28 +catalog 1003001 3 NULL 54541.82 12 +catalog 1003001 3 1 36077.44 7 +catalog 1003001 3 4 18464.38 5 +catalog 1003001 4 NULL 9922.68 2 +catalog 1003001 4 9 9922.68 2 +catalog 1003001 7 NULL 20286.34 4 +catalog 1003001 7 6 20286.34 4 +catalog 1003001 11 NULL 70141.69 10 +catalog 1003001 11 8 33058.59 5 +catalog 1003001 11 9 37083.1 5 +catalog 1003002 NULL NULL 474728.93 85 +catalog 1003002 3 NULL 366122.12 65 +catalog 1003002 3 1 366122.12 65 +catalog 1003002 6 NULL 64280.42 7 +catalog 1003002 6 1 64280.42 7 +catalog 1003002 9 NULL 44326.39 13 +catalog 1003002 9 1 44326.39 13 +catalog 1004001 NULL NULL 237955.87 56 +catalog 1004001 2 NULL 39889.24 7 +catalog 1004001 2 2 39889.24 7 +catalog 1004001 3 NULL 58498.59 13 +catalog 1004001 3 2 16031.89 3 +catalog 1004001 3 3 19853.35 6 +catalog 1004001 3 5 22613.35 4 +catalog 1004001 4 NULL 118255.22 30 +catalog 1004001 4 2 19709.93 5 +catalog 1004001 4 4 23560.47 4 +catalog 1004001 4 7 40304.66 7 +catalog 1004001 4 8 11754.54 6 +catalog 1004001 4 9 22925.62 8 +catalog 1004001 13 NULL 21312.82 6 +catalog 1004001 13 9 21312.82 6 +catalog 1004002 NULL NULL 274240.25 62 +catalog 1004002 3 NULL 7323.4 4 +catalog 1004002 3 1 7323.4 4 +catalog 1004002 4 NULL 266916.85 58 +catalog 1004002 4 1 266916.85 58 +catalog 2001001 NULL NULL 165508.03 31 +catalog 2001001 1 NULL 110949.03 23 +catalog 2001001 1 3 13033.35 3 +catalog 2001001 1 4 15746.13 6 +catalog 2001001 1 8 16102.04 4 +catalog 2001001 1 9 66067.51 10 +catalog 2001001 4 NULL 34298.44 5 +catalog 2001001 4 3 34298.44 5 +catalog 2001001 7 NULL 20260.56 3 +catalog 2001001 7 9 20260.56 3 +catalog 2001002 NULL NULL 236409.59 48 +catalog 2001002 1 NULL 211602.01 44 +catalog 2001002 1 2 211602.01 44 +catalog 2001002 2 NULL 24807.58 4 +catalog 2001002 2 2 24807.58 4 +catalog 2002001 NULL NULL 154934.27 31 +catalog 2002001 2 NULL 105218.28 22 +catalog 2002001 2 2 30565.3 8 +catalog 2002001 2 6 25976.19 6 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q15.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q15.slt.no new file mode 100644 index 00000000000..db8e75124c4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q15.slt.no @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +SELECT ca_zip, + sum(cs_sales_price) +FROM catalog_sales, + customer, + customer_address, + date_dim +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND (SUBSTRING(ca_zip, 1, 5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR ca_state IN ('CA', + 'WA', + 'GA') + OR cs_sales_price > 500) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip +ORDER BY ca_zip NULLS FIRST +LIMIT 100; +---- +NULL 901.05 +30169 1039.8 +30191 182.28 +30411 791.61 +30534 591.82 +31289 1197.76 +33003 97.91 +33394 690.36 +33683 682.74 +34289 703.01 +36060 946.18 +36867 624.75 +36871 377.01 +36909 441.38 +37057 524.59 +38222 1064.62 +38252 392.2 +38371 308.93 +39237 947.12 +39454 380.51 +39843 632.17 +90162 598.27 +90411 394.23 +91904 164.72 +92808 728.28 +94212 409.46 +94854 70.36 +95752 571.44 +98014 389.35 +98877 408.22 +98883 589.24 +99391 290.39 +99843 555.1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q16.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q16.slt.no new file mode 100644 index 00000000000..e51f0049826 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q16.slt.no @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT count(DISTINCT cs_order_number) AS "order count", + sum(cs_ext_ship_cost) AS "total shipping cost", + sum(cs_net_profit) AS "total net profit" +FROM catalog_sales cs1, + date_dim, + customer_address, + call_center +WHERE d_date BETWEEN '2002-02-01' AND cast('2002-04-02' AS date) + AND cs1.cs_ship_date_sk = d_date_sk + AND cs1.cs_ship_addr_sk = ca_address_sk + AND ca_state = 'GA' + AND cs1.cs_call_center_sk = cc_call_center_sk + AND cc_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 cs_order_number) +LIMIT 100; +---- +0 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q17.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q17.slt.no new file mode 100644 index 00000000000..717ae6fcf23 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q17.slt.no @@ -0,0 +1,53 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIRRRIRRRIRRR +SELECT i_item_id, + i_item_desc, + s_state, + count(ss_quantity) AS store_sales_quantitycount, + avg(ss_quantity) AS store_sales_quantityave, + stddev_samp(ss_quantity) AS store_sales_quantitystdev, + stddev_samp(ss_quantity)/avg(ss_quantity) AS store_sales_quantitycov, + count(sr_return_quantity) AS store_returns_quantitycount, + avg(sr_return_quantity) AS store_returns_quantityave, + stddev_samp(sr_return_quantity) AS store_returns_quantitystdev, + stddev_samp(sr_return_quantity)/avg(sr_return_quantity) AS store_returns_quantitycov, + count(cs_quantity) AS catalog_sales_quantitycount, + avg(cs_quantity) AS catalog_sales_quantityave, + stddev_samp(cs_quantity) AS catalog_sales_quantitystdev, + stddev_samp(cs_quantity)/avg(cs_quantity) AS catalog_sales_quantitycov +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_quarter_name = '2001Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ('2001Q1', + '2001Q2', + '2001Q3') +GROUP BY i_item_id, + i_item_desc, + s_state +ORDER BY i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +AAAAAAAAMPCAAAAA Defences pay mothers. Democratic, traditional tears make on a institutions; yet open ye TN 1 67 NULL NULL 1 64 NULL NULL 1 11 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q18.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q18.slt.no new file mode 100644 index 00000000000..b011f113a25 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q18.slt.no @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRRRRRR +SELECT i_item_id, + ca_country, + ca_state, + ca_county, + avg(cast(cs_quantity AS decimal(12, 2))) agg1, + avg(cast(cs_list_price AS decimal(12, 2))) agg2, + avg(cast(cs_coupon_amt AS decimal(12, 2))) agg3, + avg(cast(cs_sales_price AS decimal(12, 2))) agg4, + avg(cast(cs_net_profit AS decimal(12, 2))) agg5, + avg(cast(c_birth_year AS decimal(12, 2))) agg6, + avg(cast(cd1.cd_dep_count AS decimal(12, 2))) agg7 +FROM catalog_sales, + customer_demographics cd1, + customer_demographics cd2, + customer, + customer_address, + date_dim, + item +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Unknown' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN (1, + 6, + 8, + 9, + 12, + 2) + AND d_year = 1998 + AND ca_state IN ('MS', + 'IN', + 'ND', + 'OK', + 'NM', + 'VA', + 'MS') +GROUP BY ROLLUP (i_item_id, + ca_country, + ca_state, + ca_county) +ORDER BY ca_country NULLS FIRST, + ca_state NULLS FIRST, + ca_county NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +NULL NULL NULL NULL 49.23 94.8513 154.62715 48.39135 17.47275 1955.725 3.05 +AAAAAAAAAAFAAAAA NULL NULL NULL 75 77.19 0 69.47 2566.5 1933 2 +AAAAAAAAAAHAAAAA NULL NULL NULL 20 184.86 0 147.88 1321.6 1969 5 +AAAAAAAAABDAAAAA NULL NULL NULL 92 14.53 0 1.45 -425.96 1928 1 +AAAAAAAAAEAAAAAA NULL NULL NULL 66 7.55 0 6.34 100.98 1967 0 +AAAAAAAAAFAAAAAA NULL NULL NULL 35 145.28 0 97.33 517.3 1985 2 +AAAAAAAAAFDAAAAA NULL NULL NULL 13 116.76 33.52 19.84 -530.77 1950 0 +AAAAAAAAAGEAAAAA NULL NULL NULL 91 206.985 836.955 78.89 -1022.415 1945.5 4 +AAAAAAAAAHGAAAAA NULL NULL NULL 23 34.085 0 13.78 -159.78 1969.5 5 +AAAAAAAAAIAAAAAA NULL NULL NULL 100 113.57 0 64.73 -761 1964 1 +AAAAAAAAAIDAAAAA NULL NULL NULL 52 58.68 0 36.96 -539.24 1964 1 +AAAAAAAAAIFAAAAA NULL NULL NULL 7 54.62 77.06 39.32 -34.99 1974 1 +AAAAAAAAALCAAAAA NULL NULL NULL 61 139.03 3985.74 65.34 -3963.17 1969 5 +AAAAAAAAALFAAAAA NULL NULL NULL 19 35.47 0 35.47 125.97 1965 0 +AAAAAAAAAMCAAAAA NULL NULL NULL 78 65.03 0 50.72 1618.5 1969 5 +AAAAAAAAANAAAAAA NULL NULL NULL 22 270.85 0 108.34 383.9 1965 0 +AAAAAAAAANGAAAAA NULL NULL NULL 27 158.57 0 114.17 607.77 1979 6 +AAAAAAAAAODAAAAA NULL NULL NULL 46 31.9 0 6.38 -483 1967 0 +AAAAAAAAAPBAAAAA NULL NULL NULL 16 83.26 0 4.16 -530.88 1965 0 +AAAAAAAAAPEAAAAA NULL NULL NULL 6 53.31 0 16.52 -102.06 1927 0 +AAAAAAAABCBAAAAA NULL NULL NULL 8 200.34 0 34.05 -436.8 1935 6 +AAAAAAAABGAAAAAA NULL NULL NULL 81 153.27 0 125.68 4296.24 1965 5 +AAAAAAAABLBAAAAA NULL NULL NULL 52 106.855 716.58 80.055 -780.37 1969.5 5 +AAAAAAAABOBAAAAA NULL NULL NULL 11 92.59 0 30.55 -114.62 1935 6 +AAAAAAAABPAAAAAA NULL NULL NULL 31 43.14 0 20.7 10.85 1969 5 +AAAAAAAACAAAAAAA NULL NULL NULL 60 143.32 0 131.85 3186 1969 5 +AAAAAAAACADAAAAA NULL NULL NULL 36 90.095 0 35.43 -298.58 1945.5 4 +AAAAAAAACCGAAAAA NULL NULL NULL 7 54.16 0 18.95 -97.16 1965 0 +AAAAAAAACDDAAAAA NULL NULL NULL 18 42.44 0 15.27 -266.94 1928 1 +AAAAAAAACDGAAAAA NULL NULL NULL 81 110.22 0 84.86 2681.91 1979 6 +AAAAAAAACEFAAAAA NULL NULL NULL 30 91.01 1908.81 69.16 -876.21 1961 2 +AAAAAAAACFGAAAAA NULL NULL NULL 47 36.79 146.09 23.91 -352.42 1948 4 +AAAAAAAACHEAAAAA NULL NULL NULL 86 184.04 0 171.15 7621.32 1937 4 +AAAAAAAACIGAAAAA NULL NULL NULL 24 54.76 0 28.47 -449.76 1979 6 +AAAAAAAACJGAAAAA NULL NULL NULL 24.5 151.345 90.16 142.145 2890.74 1969.5 5 +AAAAAAAACLDAAAAA NULL NULL NULL 73 89.95 0 39.57 -3612.77 1979 6 +AAAAAAAACLEAAAAA NULL NULL NULL 58 116.25 0 47.66 -193.14 1927 0 +AAAAAAAACLGAAAAA NULL NULL NULL 8 130.54 0 91.37 127.28 1958 6 +AAAAAAAACNBAAAAA NULL NULL NULL 82 10.83 392.02 4.98 -340.36 1974 1 +AAAAAAAACOEAAAAA NULL NULL NULL 79 82.63 0 66.93 -19.75 1969 5 +AAAAAAAADAHAAAAA NULL NULL NULL 81 27.505 0 18.015 -198.76 1969.5 5 +AAAAAAAADBAAAAAA NULL NULL NULL 56 121.35 0 10.92 -3918.88 1969 5 +AAAAAAAADGEAAAAA NULL NULL NULL 46 64.84 0 9.07 -1030.86 1985 2 +AAAAAAAADHAAAAAA NULL NULL NULL 3 143.86 0 119.4 64.59 1969 5 +AAAAAAAADHGAAAAA NULL NULL NULL 6 50.52 0 32.83 -30.96 1950 0 +AAAAAAAADKDAAAAA NULL NULL NULL 69 32.1 0 25.68 -378.81 1958 6 +AAAAAAAADKGAAAAA NULL NULL NULL 98 45.2 0 21.24 -238.14 1937 3 +AAAAAAAADLFAAAAA NULL NULL NULL 25 216.71 0 67.18 -514 1979 6 +AAAAAAAADNGAAAAA NULL NULL NULL 48 46.67 0 15.4 -687.84 1985 2 +AAAAAAAADOCAAAAA NULL NULL NULL 58 51.42 0 17.99 -721.52 1958 6 +AAAAAAAAEABAAAAA NULL NULL NULL 16 27.5 0 24.2 151.84 1958 6 +AAAAAAAAEBGAAAAA NULL NULL NULL 8 71.78 0 29.42 -22.16 1928 1 +AAAAAAAAECFAAAAA NULL NULL NULL 58 116.99 0 37.43 -332.92 1974 1 +AAAAAAAAEKAAAAAA NULL NULL NULL 60 40.56 127.156666666667 15.6 -738.066666666667 1946.333333333333 4 +AAAAAAAAEKDAAAAA NULL NULL NULL 94 138.07 1855.51 35.89 -6253.77 1961 1 +AAAAAAAAEMDAAAAA NULL NULL NULL 53 54.86 0 32.91 599.43 1961 2 +AAAAAAAAEMEAAAAA NULL NULL NULL 23 46.85 0 10.77 -819.26 1933 2 +AAAAAAAAEOFAAAAA NULL NULL NULL 57 89.74 0 36.79 -3018.15 1964 1 +AAAAAAAAFBEAAAAA NULL NULL NULL 26 25.71 256.22 13.88 -520.12 1961 1 +AAAAAAAAFGFAAAAA NULL NULL NULL 93 79.15 0 70.44 1403.37 1969 5 +AAAAAAAAFHEAAAAA NULL NULL NULL 24 108.28 0 9.74 -1040.16 1991 6 +AAAAAAAAFIGAAAAA NULL NULL NULL 6 36.67 46.53 8.43 -97.83 1944 5 +AAAAAAAAFOAAAAAA NULL NULL NULL 13 150.89 0 72.42 -91 1961 2 +AAAAAAAAGABAAAAA NULL NULL NULL 97 276.87 0 163.35 6218.67 1965 0 +AAAAAAAAGBGAAAAA NULL NULL NULL 79 116.35 0 2.32 -3830.71 1967 0 +AAAAAAAAGCCAAAAA NULL NULL NULL 35 33.19 0 11.94 -18.9 1927 0 +AAAAAAAAGCDAAAAA NULL NULL NULL 79 169.31 0 113.43 4217.81 1979 6 +AAAAAAAAGCFAAAAA NULL NULL NULL 36 46.28 0 24.52 -704.16 1965 5 +AAAAAAAAGCGAAAAA NULL NULL NULL 12 72.74 5.74 1.45 -844.18 1937 3 +AAAAAAAAGDEAAAAA NULL NULL NULL 90 52.94 0 50.29 1022.4 1937 4 +AAAAAAAAGEAAAAAA NULL NULL NULL 56 32.93 0 2.96 -522.48 1937 4 +AAAAAAAAGFDAAAAA NULL NULL NULL 94 39.71 0 39.31 1958.96 1979 6 +AAAAAAAAGFGAAAAA NULL NULL NULL 65 51.86 2902.82 45.11 -3063.37 1979 6 +AAAAAAAAGHBAAAAA NULL NULL NULL 91 86.58 0 84.84 3781.05 1985 2 +AAAAAAAAGHGAAAAA NULL NULL NULL 11 126.26 411.58 47.97 -603.53 1937 4 +AAAAAAAAGIAAAAAA NULL NULL NULL 49 26.22 40.06 10.22 30.99 1961 1 +AAAAAAAAGKGAAAAA NULL NULL NULL 75 85.65 57.6 2.56 -3356.85 1969 5 +AAAAAAAAGLAAAAAA NULL NULL NULL 53 91.36 0 46.59 -1255.57 1950 0 +AAAAAAAAGLGAAAAA NULL NULL NULL 2 49.81 0 38.35 -16.42 1950 0 +AAAAAAAAGOCAAAAA NULL NULL NULL 71 67.77 0 23.04 -711.42 1944 5 +AAAAAAAAGOGAAAAA NULL NULL NULL 9 156.99 0 1.56 -737.55 1948 4 +AAAAAAAAGPCAAAAA NULL NULL NULL 81 76.71 813.3 13.04 -5731.62 1964 1 +AAAAAAAAHAGAAAAA NULL NULL NULL 95 116.24 0 83.69 1297.7 1961 1 +AAAAAAAAHBFAAAAA NULL NULL NULL 52 17.84 0 8.56 -227.24 1944 5 +AAAAAAAAHCEAAAAA NULL NULL NULL 82 128.99 0 69.65 -68.88 1937 4 +AAAAAAAAHDDAAAAA NULL NULL NULL 100 209.68 0 159.35 8803 1928 1 +AAAAAAAAHGDAAAAA NULL NULL NULL 31 96.35 1463.4 48.17 -2788.03 1948 4 +AAAAAAAAHHFAAAAA NULL NULL NULL 44 136.94 0 93.11 1944.8 1937 4 +AAAAAAAAHJGAAAAA NULL NULL NULL 32 202.53 0 135.69 1396.16 1967 0 +AAAAAAAAHMAAAAAA NULL NULL NULL 18 157.62 0 0 -1576.26 1961 1 +AAAAAAAAHOBAAAAA NULL NULL NULL 3 122.51 93.16 79.63 -3.07 1964 1 +AAAAAAAAHPGAAAAA NULL NULL NULL 19 106.79 0 95.04 256.88 1944 5 +AAAAAAAAIAGAAAAA NULL NULL NULL 3 3.12 0 0.46 -6.36 1927 0 +AAAAAAAAIGGAAAAA NULL NULL NULL 58 161.645 0 74.945 1760.16 1954 3 +AAAAAAAAIIDAAAAA NULL NULL NULL 51 152.41 0 39.62 -826.71 1965 0 +AAAAAAAAIKFAAAAA NULL NULL NULL 85.666666666667 38.373333333333 122.976666666667 14.08 -493.193333333333 1946.333333333333 4 +AAAAAAAAIMAAAAAA NULL NULL NULL 100 3.08 0 0.49 -151 1937 4 +AAAAAAAAINCAAAAA NULL NULL NULL 16 40.09 0 39.68 246.08 1933 2 +AAAAAAAAINFAAAAA NULL NULL NULL 11 45.49 0 2.27 -395.56 1948 4 +AAAAAAAAIPGAAAAA NULL NULL NULL 59 99.44 0 77.56 -709.77 1950 0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q19.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q19.slt.no new file mode 100644 index 00000000000..a5384bec4fd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q19.slt.no @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITITR +SELECT i_brand_id brand_id, + i_brand brand, + i_manufact_id, + i_manufact, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item, + customer, + customer_address, + store +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=8 + AND d_moy=11 + AND d_year=1998 + AND ss_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND SUBSTRING(ca_zip, 1, 5) <> SUBSTRING(s_zip, 1, 5) + AND ss_store_sk = s_store_sk +GROUP BY i_brand, + i_brand_id, + i_manufact_id, + i_manufact +ORDER BY ext_price DESC, + i_brand, + i_brand_id, + i_manufact_id, + i_manufact +LIMIT 100 ; +---- +1002002 importoamalg #2 489 n steingese 25908.9 +3001002 amalgexporti #2 448 eingeseese 19805.73 +4003001 exportiedu pack #1 659 n stantically 17669.8 +10009003 maxiunivamalg #3 389 n steingpri 15308.21 +1002002 importoamalg #2 50 baranti 15077.51 +3004001 edu packexporti #1 119 n stoughtought 14958.01 +8016009 corpmaxi #9 734 esepriation 14304.64 +6011004 amalgbrand #4 9 n st 13791.82 +3002002 importoexporti #2 597 ationn stanti 12402.87 +9002011 importomaxi #11 606 callybarcally 6591.58 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q2.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q2.slt.no new file mode 100644 index 00000000000..e31b71cf6be --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q2.slt.no @@ -0,0 +1,2597 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRRRRRRR +WITH wscs AS + (SELECT sold_date_sk, + sales_price + FROM + (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales + UNION ALL SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales) sq1), + wswscs AS + (SELECT d_week_seq, + sum(CASE + WHEN (d_day_name='Sunday') THEN sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN sales_price + ELSE NULL + END) sat_sales + FROM wscs, + date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + round(sun_sales1/sun_sales2, 2) r1, + round(mon_sales1/mon_sales2, 2) r2, + round(tue_sales1/tue_sales2, 2) r3, + round(wed_sales1/wed_sales2, 2) r4, + round(thu_sales1/thu_sales2, 2) r5, + round(fri_sales1/fri_sales2, 2) r6, + round(sat_sales1/sat_sales2, 2) +FROM + (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 2001+1) z +WHERE d_week_seq1 = d_week_seq2-53 +ORDER BY d_week_seq1 NULLS FIRST; +---- +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5270 3.63 1.79 4.16 2.13 1.68 4.03 5.66 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5271 1.09 1 1.63 0.85 4.06 1.02 0.63 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5272 1.27 0.68 0.77 0.62 0.74 1.11 0.9 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5273 0.75 0.54 2.46 0.99 1.11 0.44 0.68 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5274 1.85 0.86 0.67 1.75 0.85 0.53 0.28 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5275 0.69 1.08 0.73 2.99 0.89 0.77 0.59 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5276 1.49 1.81 1.29 1.08 1.2 0.7 0.72 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5277 0.8 0.8 0.89 2.02 0.82 1.76 1.84 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5278 1.11 1.34 1 1.64 1.48 NULL 1.63 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5279 2.26 0.66 0.63 1.23 0.61 0.66 1.12 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5280 0.82 1.38 0.87 0.77 0.64 1.09 1.06 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5281 0.79 0.91 1.14 1.95 0.54 1.08 1.08 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5282 1.06 2.23 0.82 0.77 1.54 1.44 0.9 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5283 0.87 0.82 0.55 1.63 0.62 0.91 0.62 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5284 1.57 0.78 1.73 0.72 0.63 1.01 0.55 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5285 1.42 0.55 0.62 1.21 1.44 1.24 3.24 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5286 0.6 1.31 1.51 1.49 1.07 0.48 1.42 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5287 1.98 1.34 0.44 0.87 1.07 1.85 0.84 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5288 1.31 1.14 0.51 2.47 2.36 1.8 0.83 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5289 1.37 1.28 1.01 1.03 1.05 1.52 0.67 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5290 2.24 0.73 0.6 2.48 0.54 0.63 1.41 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5291 2.06 0.92 1.03 1.85 0.69 1.46 0.8 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5292 0.69 0.97 0.58 2 0.92 0.91 0.96 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5293 1.57 0.81 0.71 1.52 0.51 1.02 0.71 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5294 0.93 1.08 0.6 1.07 0.98 1.94 1.15 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5295 0.79 0.76 1.12 1.9 1.17 1.45 1.39 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5296 0.99 1.12 0.56 1.49 0.76 0.96 1.24 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5297 0.93 1.07 1.15 1.03 1.09 1.96 1.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5298 1.13 1.03 1.01 1.35 0.8 1.63 2.1 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5299 1.66 1.11 1.04 1.69 4.01 0.6 1.15 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5300 0.75 0.32 0.78 1.18 1.53 0.56 0.55 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5301 1.17 0.98 0.69 0.13 0.94 0.57 0.91 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5302 0.86 1.7 0.84 0.71 0.97 1 1.44 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5303 0.93 0.59 0.89 1.04 0.9 1.43 1.12 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5304 0.54 1.04 1.02 0.83 0.94 1.03 1.67 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5305 1.15 1.03 0.68 0.86 0.93 1.44 1.31 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5306 1.02 0.96 1.17 1.13 1.25 1.09 0.84 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5307 0.87 0.66 1.14 1.03 1.13 0.97 1.03 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5308 0.68 1.45 0.96 0.95 1.03 1.01 0.62 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5309 1.34 1.08 1.14 1.93 1.64 0.59 1.1 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5310 0.9 1.09 1.22 0.92 1.53 1.16 1.29 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5311 0.95 0.94 1.13 0.44 0.87 1.05 0.94 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5312 0.48 0.78 1.32 1.45 1.08 0.74 1.15 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5313 0.36 0.58 0.74 1.02 1.17 0.75 0.72 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5314 1.36 0.93 0.64 0.63 0.49 0.58 0.78 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5315 0.97 0.96 1.25 1.3 1.04 0.97 1.02 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5316 0.84 0.99 0.95 0.89 1.29 1.2 0.82 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5317 0.82 1.97 0.92 1.07 0.99 0.59 0.98 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5318 0.9 0.85 0.93 0.93 0.91 1.31 1.06 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5319 0.98 0.9 1.12 1.4 1.15 0.95 0.86 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5320 0.9 1.04 0.9 0.8 1.12 1.02 0.89 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5321 0.8 0.73 0.75 1.11 0.79 0.89 1.09 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 +5322 3.79 4.47 0.8 2.31 0.82 9.52 4.29 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q20.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q20.slt.no new file mode 100644 index 00000000000..2e99d802a8d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q20.slt.no @@ -0,0 +1,132 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(cs_ext_sales_price) AS itemrevenue, + sum(cs_ext_sales_price)*100.0000/sum(sum(cs_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM catalog_sales , + item, + date_dim +WHERE cs_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST +LIMIT 100; +---- +AAAAAAAAOJGAAAAA NULL Books NULL NULL 227.76 100 +AAAAAAAACKEAAAAA Physical, local rates cannot explain; quickly lovely horses used to take. Quick, various subjects keep usually; please easy sources ought to thin Books arts 35.27 5748.96 44.104636657813 +AAAAAAAAKGBAAAAA Important, scientific words replace sure united friends. Important areas list fresh, gross directions. Mild services leave sadly commercial, appropriate ju Books arts 5.6 4084.33 31.333996173327 +AAAAAAAAMFFAAAAA So tiny sales obtain as ill tons. Constant others increase women. New Books arts 8.22 2374.63 18.217589502578 +AAAAAAAANIBAAAAA Open, real terms should avoid discussions. Just obvious adults will say strong, poor drawings. Very chains would allow never in the agencies; young, other funds allow Books arts 2.72 826.9 6.343777666282 +AAAAAAAAADFAAAAA Good groups steal respective chapters. Components could rely needs. Men need only wide, private courts. New, sudden forms see only. Letters will not find at the faces. Just fascinating humans s Books business 78.25 8435.35 45.301317792073 +AAAAAAAAKMAAAAAA Conservative women ought to beat positions. Agai Books business 0.19 729.3 3.916642589313 +AAAAAAAALDFAAAAA Dramatically particular charts used to boost unusually false organisers. I Books business 3.68 9455.89 50.782039618615 +AAAAAAAAFEEAAAAA Directly good effects could not complete. Implications may not investigate individually; electrical husba Books computers 3.83 1188.6 12.014458591258 +AAAAAAAALCDAAAAA Groups see legs. Systems lead hot, golden hands. Then general enquiries comply often social houses. Relentlessly annual ministers should not minimise suf Books computers 4.34 1478.2 14.941757268717 +AAAAAAAAMJEAAAAA Advantages w Books computers 1.04 4257.96 43.03978134211 +AAAAAAAAOGFAAAAA Similar months should want available, normal points; powers make. Soviet books will not enter indepe Books computers 99.41 2968.32 30.004002797915 +AAAAAAAAGOCAAAAA Frantically necess Books cooking 4.37 2732.39 21.401487708041 +AAAAAAAAJHGAAAAA Sure methods impose for instance spare feet. Special, clear problems would allow distinguished word Books cooking 20.16 8910.31 69.790143405531 +AAAAAAAAKCCAAAAA Bitter reasons may not bear cuts. Marine, normal shares make also. Trying contracts lift numerous reports. Also general feelings argue rights; still quiet techniques Books cooking 4.44 920.36 7.208734194962 +AAAAAAAALIGAAAAA Visitors will determine reluctant forms. Laws could not need fresh paths. Social, critical police must not thin Books cooking 0.88 204.23 1.599634691465 +AAAAAAAACIDAAAAA Magic, dead sports call; recently european wives o Books entertainments 3.51 1907.01 8.601328485583 +AAAAAAAAJKGAAAAA Most final departments will attempt also other customers. Severe units put increased years; flights Books entertainments 4.92 6530.82 29.456441287784 +AAAAAAAAKDEAAAAA Free activities might act on a years. Other, new fingers can claim specifically at the alternatives. Great, straightforward features come now; sure, little stand Books entertainments 6.46 7933.07 35.78111334976 +AAAAAAAAMKDAAAAA More local leaders Books entertainments 1.52 4362.16 19.674973422621 +AAAAAAAAOOEAAAAA True, sole women market far except for a depths. Dif Books entertainments 1.45 1438.05 6.486143454252 +AAAAAAAABGAAAAAA More reg Books fiction 57.09 2821.38 4.791864743929 +AAAAAAAACEFAAAAA Bottom, national fea Books fiction 4.25 13636.37 23.160170072152 +AAAAAAAADEAAAAAA Already Books fiction 1.47 12714.77 21.594913868449 +AAAAAAAAHDDAAAAA Partially great points will fulfil at least big, recent years. Solicitors ought to achieve cases. Hidden, major Books fiction 45.99 5977.78 10.152731368679 +AAAAAAAALIAAAAAA Lines shall describe explicitly northern, firm systems. Later Books fiction 2.99 16955.77 28.797877800638 +AAAAAAAAMLAAAAAA Very national teams shall not treat as important remaining details. Outdoor, good calls would not say. Various, unpleasant plants will not pass legal, final courts. Likely, Books fiction 0.47 1601.86 2.720617732709 +AAAAAAAANDDAAAAA Voters can write today dealers. Women see very other years. Able, russian barriers use systems. So young fingers would say primary, new companies. Only disabled children ought to renew fol Books fiction 2.73 2834.1 4.81346854049 +AAAAAAAAOCGAAAAA National, suitable weeks tax yet personal, subjective groups. White, likely boys drive states; de Books fiction 8.69 58.41 0.099204226192 +AAAAAAAAPMBAAAAA Unlikely, interested chemicals control likely countries. Assistant, medical museums choose horses. Far fierce waters should touch significantly publishers. At first foreign entries may unde Books fiction 8.79 2278.1 3.869151646763 +AAAAAAAAAMEAAAAA Lexical, religious days would go pregnant, natural employees; lines raise v Books history 9.64 2692.35 24.588165241676 +AAAAAAAACIBAAAAA Correct concentrations might not come questions. Economic, pure shelves should track. Only, long feet might not like much Books history 4.94 1342.91 12.264264670158 +AAAAAAAAJGEAAAAA Periods indicate regularly emotional, entire positions. Women mount originally large, religious refugees. Industrial, present wi Books history 0.65 2817.9 25.734763620822 +AAAAAAAALAFAAAAA Substantial flowers make perhaps regular negotiations. For example basic victims ought to cease below technological young troops. Citizens shall let carefully hostile, other characte Books history 5.91 3476.52 31.749678988984 +AAAAAAAAOGGAAAAA Inner friends used to love. New, european tables must not choose long, present pp.; about Books history 0.66 620.1 5.66312747836 +AAAAAAAAEIBAAAAA Legal, eligible concessions take still however conservative profits. Books home repair 0.82 292.14 1.546863384228 +AAAAAAAAFDFAAAAA Import Books home repair 7.18 4261.95 22.566763881741 +AAAAAAAAGBEAAAAA Y Books home repair 2.1 4501.76 23.836543125158 +AAAAAAAAMBGAAAAA More available quantities fit also in a interests. As foreign representations reflect darling sides Books home repair 3.33 2099.75 11.118047480774 +AAAAAAAAPNGAAAAA Ancient firms shall not show all thence emotional affairs. Ever annual revenues used to sta Books home repair 1.73 7730.36 40.931782128099 +AAAAAAAAADCAAAAA Possibly dependent prices might laugh also financial careers. Contrary, clever costs could sense; reliable, d Books mystery 1.55 3450.73 10.819021019889 +AAAAAAAACECAAAAA Crazy moves like there african, future sections. Terms shall see american, new theories. Upper, private shops will swim asleep days. Once more final terms can afford together. Still Books mystery 4.92 5900.96 18.501189683785 +AAAAAAAAMABAAAAA Children argue naturally already unable thanks. Low cars improve either light, powerful tools. Lar Books mystery 3.73 10304.93 32.308889504101 +AAAAAAAAOFBAAAAA Dependent, high weeks accept through an proposals. Ric Books mystery 3.1 12238.41 38.370899792225 +AAAAAAAAEBFAAAAA Large wings used to see particul Books parenting 99.89 261.4 2.88554413039 +AAAAAAAAEFEAAAAA Extern Books parenting 2.15 70.7 0.78044364965 +AAAAAAAAIHFAAAAA Permanent cards act again. Christian cases should not include positions. Quite multiple films should locate physical risks; by now negative leaders shall give duties. Victor Books parenting 4.64 4001.84 44.175539107733 +AAAAAAAAKHAAAAAA Well lovely hands know even Books parenting 2.62 803.28 8.867252827314 +AAAAAAAANMAAAAAA Very detailed points can mention then. Miles could not know very as a inhabitants. Still nearb Books parenting 7.3 3921.73 43.291220284912 +AAAAAAAAAODAAAAA Successful subjects might se Books reference 3.68 2567.04 10.608800083646 +AAAAAAAACLGAAAAA Failures think just eventually top factors. Animals ought to lose nearly terrible, necessary books. Public principles must not go sometimes else commercial wages. Serious oth Books reference 2.23 2726.3 11.266973505689 +AAAAAAAAEPBAAAAA Developers suggest even aspects. Most human teachers dive Books reference 6.28 4341.81 17.943387828462 +AAAAAAAAHFBAAAAA Difficult, ready masses ought to take tools. Attempts must receive immediately. Pilots s Books reference 38.26 1428.48 5.903475887982 +AAAAAAAAHMGAAAAA White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Books reference 4.95 3184.28 13.159666359056 +AAAAAAAALIDAAAAA German, ultimate personnel want even. Asian, old hospitals could not open far applicable, logical seeds. Years worry schemes. Perhaps li Books reference 1.55 5199.8 21.489201054499 +AAAAAAAANJAAAAAA Recent performances get yet other publications; current patients could not carry comparatively intense, vital times. Wide problems smooth truly. Tomorrow used years catch a Books reference 2.21 4749.56 19.628495280666 +AAAAAAAABOBAAAAA Solutions gain. Various shares create elsewhere. Specific, excellent police sa Books romance 2.38 8836.59 29.795233822683 +AAAAAAAAFCDAAAAA Bombs ensure once members. Even national effects can get quickly new extraordinary clubs. Main, occupational barriers tackle just equal ser Books romance 4.5 5339.12 18.002456695101 +AAAAAAAALLDAAAAA Officials must prevent openly local, federal elements. Expenses sleep lines; russian, young conclusions cost actually up the leaders. Regulations Books romance 90.72 998.13 3.365496954757 +AAAAAAAAMOAAAAAA Industries feel however. Domestic statements slide firms. European figures must plead now strong languages. Dangerous meetings set toda Books romance 0.75 14152.49 47.719397270121 +AAAAAAAANPDAAAAA Human, bright beaches would not buy particularly hungry wages. Often only areas get most increased blocks; there final children attempt slowly recent parties; golden, Books romance 2.9 331.4 1.117415257338 +AAAAAAAACDFAAAAA Narrow, basic investors matter together. Uniquely wide parents feel surely severe properties. Only huge arrangements will not last miles. Urban months enhance. Members might not stop personnel. Books science 4.18 8846.34 28.723179390239 +AAAAAAAACPCAAAAA Elections grow arab, domestic initiatives. Wide courses shall order involved, new services. Compulsory, concerne Books science 0.31 12163.69 39.494282371834 +AAAAAAAADAHAAAAA Similar fields run old cities. Golden, warm opportunities compare by a wives. Initial, regular libraries touch sometimes. Still unemployed stations contribute below Books science 2.33 1696.95 5.509826579836 +AAAAAAAADPEAAAAA Double effects put. Long, personal keys vote national metres; other, logical residents decide especially. Materials provide different, different families. Clearly open systems take pa Books science 0.45 2983.23 9.686248827463 +AAAAAAAAENFAAAAA Quite clean scores write well lesser, important acti Books science 1.51 1164.24 3.780170598608 +AAAAAAAAIPFAAAAA Babies might attend open problems. Just private sections should mean truly industrial alone factors. Others suggest yet terms. Able, small properties would not know moreover diff Books science 2.51 3944.16 12.80629223202 +AAAAAAAABJAAAAAA Prospects know Books self-help 59.77 4113.36 11.772035719979 +AAAAAAAAFGCAAAAA Pp. would agree thus processes. Married plans should want most in the houses. Ministers could write very foreign, level features. Ot Books self-help 1.89 13582.95 38.87308005686 +AAAAAAAAJHAAAAAA However increasing dates meet. Large, ready goals mean now blind structures. Crea Books self-help 38.79 1678.47 4.803617673851 +AAAAAAAAKGEAAAAA In order interesting ingredients get more. Young, in Books self-help 9.23 3664.14 10.486411829503 +AAAAAAAAMPBAAAAA Beautiful, short women could occur consciously women. Books self-help 2.94 11902.87 34.064854719807 +AAAAAAAADJEAAAAA Good, domestic authorities can drink only blue, old findings. Historical, Books travel 84.79 30.56 0.263217053295 +AAAAAAAALCAAAAAA Resources shall not continue thus similar, practical results. Practical words f Books travel 6.08 6396.03 55.089796118754 +AAAAAAAAMGBAAAAA White trees grow simply. Then possible banks used to get happily unhappy accused minds. Very fires should touch then particular towns. National systems watch actively victorian papers. Con Books travel 8.58 580.62 5.000951750144 +AAAAAAAAMODAAAAA Months provide firmly whole, historical characters. Relatively perfect centres find tomorrow products. Others dream linguistic, good visitor Books travel 0.23 4602.98 39.646035077807 +AAAAAAAAABDAAAAA Great, wonderful lakes must not arrange already to the rules. Easy, cultural elections need rather sensible orders. Hardly favorable prospects take at Home accent 1.06 746.9 2.812763143426 +AAAAAAAAEAGAAAAA Over other countries cannot remai Home accent 9.45 29.75 0.11203602024 +AAAAAAAAGHBAAAAA Advantages c Home accent 8.82 5303.16 19.971258524152 +AAAAAAAAGPFAAAAA Potential, late services could hide. Feet take enough arms; running degrees diagnose especially persons. Close types should not re Home accent 3.2 11988.35 45.147126831554 +AAAAAAAAOLDAAAAA So old proposals could not reconsider varieties. Sentences Home accent 0.48 8485.8 31.956815480629 +AAAAAAAAADEAAAAA International colleges shall mind large, outer hundreds. Technical, major times shall turn afterwards even medical questions. Alone members oug Home bathroom 2.57 5641.2 56.929603959197 +AAAAAAAAHBFAAAAA There young things should not compete small, relative problems. Sources find right dealers. Late authorities must find groups. Feet fall continually major courses. Now Home bathroom 7.89 4267.88 43.070396040803 +AAAAAAAAAOGAAAAA As prime legs proceed probably orange, historic experiments. Here different skills may not appease usually continental terms. Cheerful daughters take on a shops. Far Home bedding 3.51 13119.72 52.430182846172 +AAAAAAAAEKDAAAAA So general children can afford now particular characteristics. Publishers see under a exchanges; similarly wonderful Home bedding 1.78 1357.62 5.425440850538 +AAAAAAAAHHCAAAAA Trades shall become. Terms provide yesterday black investigations. Industrial lines mean. Bri Home bedding 1.65 5750.64 22.981215047464 +AAAAAAAAMDFAAAAA Really evil methods see abroad present diseases. Here good police will not sit now alternatively strong markets. Then fascinating years mean Home bedding 1.79 4.28 0.017104113699 +AAAAAAAAMPFAAAAA Issues go new banks. Significant, ordina Home bedding 79.19 4790.96 19.146057142126 +AAAAAAAACAFAAAAA Western, young groups could understand more never important police; general years emerge broad talks. Findings insure so waiting problems Home blinds/shades 29.09 2666.88 8.75881915164 +AAAAAAAADOFAAAAA New needs write as. Back drivers like but for a years. Times perform soon economic odds. Very cold windows used to know occasionally. Cases must take Home blinds/shades 2.08 3224.23 10.589320656833 +AAAAAAAAFOAAAAAA Inevitably general children must focus Home blinds/shades 3.2 546.98 1.796443371867 +AAAAAAAAGHDAAAAA Low men ought to try really. Just natural relationships shall not relate slightly other Home blinds/shades 6.97 4643.94 15.252066313846 +AAAAAAAAPOCAAAAA Top options care tomorrow dangerous emotions. Cool deputies establish t Home blinds/shades 3.71 19365.91 63.603350505814 +AAAAAAAAACAAAAAA Ce Home curtains/drapes 1.77 4527.71 16.055350536495 +AAAAAAAAAIAAAAAA Great, tiny animals adopt then outcomes. Terms sweep less dry, physical signs. National, black terms adapt for a reasons; groups shall Home curtains/drapes 4.06 378.72 1.342948721358 +AAAAAAAACMFAAAAA Literally available ages stand never unusual bo Home curtains/drapes 42.98 3180.77 11.279074261816 +AAAAAAAAGKDAAAAA Once again real differences can make black offenders. Consequen Home curtains/drapes 0.46 8349.87 29.608806611767 +AAAAAAAAIAGAAAAA Full, japanese pages must admit; fixed farms Home curtains/drapes 0.79 8336.28 29.560616199 +AAAAAAAAINFAAAAA Happy products provide mediterranean figures. Home curtains/drapes 5.48 1911.68 6.778855649679 +AAAAAAAAMMBAAAAA Recent flowers should trace alike hard questions. Small areas could not give easy, enthusiastic ends. Obvious concessions shall relate never reasons. Italian, acute officers c Home curtains/drapes 8.88 1244.88 4.414369466214 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q21.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q21.slt.no new file mode 100644 index 00000000000..62eef546227 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q21.slt.no @@ -0,0 +1,67 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTII +SELECT * +FROM + (SELECT w_warehouse_name, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_after + FROM inventory, + warehouse, + item, + date_dim + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) + GROUP BY w_warehouse_name, + i_item_id) x +WHERE (CASE + WHEN inv_before > 0 THEN (inv_after*1.000) / inv_before + ELSE NULL + END) BETWEEN 2.000/3.000 AND 3.000/2.000 +ORDER BY w_warehouse_name NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +Conventional childr AAAAAAAAABDAAAAA 1660 1398 +Conventional childr AAAAAAAABKFAAAAA 1524 2237 +Conventional childr AAAAAAAACAAAAAAA 2135 2684 +Conventional childr AAAAAAAACBFAAAAA 2850 2630 +Conventional childr AAAAAAAACFEAAAAA 2423 2185 +Conventional childr AAAAAAAACLGAAAAA 2671 2070 +Conventional childr AAAAAAAADEAAAAAA 3180 2181 +Conventional childr AAAAAAAAEFFAAAAA 2078 2093 +Conventional childr AAAAAAAAEKCAAAAA 3299 2487 +Conventional childr AAAAAAAAEMEAAAAA 2670 2548 +Conventional childr AAAAAAAAENDAAAAA 2068 1872 +Conventional childr AAAAAAAAFCGAAAAA 3133 2172 +Conventional childr AAAAAAAAFJFAAAAA 2601 1835 +Conventional childr AAAAAAAAGIGAAAAA 1258 1400 +Conventional childr AAAAAAAAGMBAAAAA 2761 2460 +Conventional childr AAAAAAAAGNBAAAAA 3025 2683 +Conventional childr AAAAAAAAHDAAAAAA 1441 1728 +Conventional childr AAAAAAAAHGDAAAAA 2187 2314 +Conventional childr AAAAAAAAKJAAAAAA 1358 1516 +Conventional childr AAAAAAAAMBAAAAAA 3883 2616 +Conventional childr AAAAAAAAMJCAAAAA 2269 1700 +Conventional childr AAAAAAAAMJEAAAAA 2140 1813 +Conventional childr AAAAAAAANEFAAAAA 2230 2362 +Conventional childr AAAAAAAANGDAAAAA 1629 1614 +Conventional childr AAAAAAAANNCAAAAA 2314 1730 +Conventional childr AAAAAAAAOEBAAAAA 2037 2167 +Conventional childr AAAAAAAAOFDAAAAA 2563 2055 +Conventional childr AAAAAAAAOGAAAAAA 2453 2121 +Conventional childr AAAAAAAAOOEAAAAA 2786 1880 +Conventional childr AAAAAAAAPAEAAAAA 2111 1555 +Conventional childr AAAAAAAAPHDAAAAA 2899 3268 +Conventional childr AAAAAAAAPKAAAAAA 2900 2530 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q22.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q22.slt.no new file mode 100644 index 00000000000..5d7c4980eaa --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q22.slt.no @@ -0,0 +1,123 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTR +SELECT i_product_name , + i_brand , + i_class , + i_category , + avg(inv_quantity_on_hand) qoh +FROM inventory , + date_dim , + item +WHERE inv_date_sk=d_date_sk + AND inv_item_sk=i_item_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 +GROUP BY rollup(i_product_name ,i_brand ,i_class ,i_category) +ORDER BY qoh NULLS FIRST, + i_product_name NULLS FIRST, + i_brand NULLS FIRST, + i_class NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +oughtableought NULL NULL NULL 387.102040816326 +oughtableought exportiunivamalg #2 NULL NULL 387.102040816326 +oughtableought exportiunivamalg #2 self-help NULL 387.102040816326 +oughtableought exportiunivamalg #2 self-help Books 387.102040816326 +anticallyantiought NULL NULL NULL 387.2 +anticallyantiought exportimaxi #6 NULL NULL 387.2 +anticallyantiought exportimaxi #6 sailing NULL 387.2 +anticallyantiought exportimaxi #6 sailing Sports 387.2 +oughteingeing NULL NULL NULL 387.576923076923 +oughteingeing univunivamalg #6 NULL NULL 387.576923076923 +oughteingeing univunivamalg #6 travel NULL 387.576923076923 +oughteingeing univunivamalg #6 travel Books 387.576923076923 +callyeingantiought NULL NULL NULL 392.551020408163 +callyeingantiought importoscholar #1 NULL NULL 392.551020408163 +callyeingantiought importoscholar #1 country NULL 392.551020408163 +callyeingantiought importoscholar #1 country Music 392.551020408163 +antieingcallyought NULL NULL NULL 393.468085106383 +antieingcallyought importonameless #6 NULL NULL 393.468085106383 +antieingcallyought importonameless #6 paint NULL 393.468085106383 +antieingcallyought importonameless #6 paint Home 393.468085106383 +ationantiese NULL NULL NULL 402.884615384615 +ationantiese scholaramalgamalg #16 NULL NULL 402.884615384615 +ationantiese scholaramalgamalg #16 portable NULL 402.884615384615 +ationantiese scholaramalgamalg #16 portable Electronics 402.884615384615 +eseableeing NULL NULL NULL 407.040816326531 +eseableeing importoamalg #1 NULL NULL 407.040816326531 +eseableeing importoamalg #1 fragrances NULL 407.040816326531 +eseableeing importoamalg #1 fragrances Women 407.040816326531 +ablen stn st NULL NULL NULL 407.607843137255 +ablen stn st brandmaxi #9 NULL NULL 407.607843137255 +ablen stn st brandmaxi #9 reference NULL 407.607843137255 +ablen stn st brandmaxi #9 reference Books 407.607843137255 +eseeseableought NULL NULL NULL 411.30612244898 +eseeseableought amalgexporti #1 NULL NULL 411.30612244898 +eseeseableought amalgexporti #1 newborn NULL 411.30612244898 +eseeseableought amalgexporti #1 newborn Children 411.30612244898 +priationought NULL NULL NULL 411.78 +priationought amalgimporto #2 NULL NULL 411.78 +priationought amalgimporto #2 accessories NULL 411.78 +priationought amalgimporto #2 accessories Men 411.78 +eseantioughtought NULL NULL NULL 412.16 +eseantioughtought exportiamalgamalg #16 NULL NULL 412.16 +eseantioughtought exportiamalgamalg #16 stereo NULL 412.16 +eseantioughtought exportiamalgamalg #16 stereo Electronics 412.16 +ationn station NULL NULL NULL 413.382978723404 +ationn station importoamalg #2 NULL NULL 413.382978723404 +ationn station importoamalg #2 fragrances NULL 413.382978723404 +ationn station importoamalg #2 fragrances Women 413.382978723404 +callycallyoughtought NULL NULL NULL 413.387755102041 +callycallyoughtought importoimporto #1 NULL NULL 413.387755102041 +callycallyoughtought importoimporto #1 shirts NULL 413.387755102041 +callycallyoughtought importoimporto #1 shirts Men 413.387755102041 +prieingcally NULL NULL NULL 415.159090909091 +prieingcally namelessbrand #4 NULL NULL 415.159090909091 +prieingcally namelessbrand #4 lighting NULL 415.159090909091 +prieingcally namelessbrand #4 lighting Home 415.159090909091 +priationcally NULL NULL NULL 416.38 +priationcally maxinameless #4 NULL NULL 416.38 +priationcally maxinameless #4 optics NULL 416.38 +priationcally maxinameless #4 optics Sports 416.38 +oughtationpri NULL NULL NULL 417.020833333333 +oughtationpri univnameless #2 NULL NULL 417.020833333333 +oughtationpri univnameless #2 flatware NULL 417.020833333333 +oughtationpri univnameless #2 flatware Home 417.020833333333 +ableationable NULL NULL NULL 417.634615384615 +ableationable corpnameless #3 NULL NULL 417.634615384615 +ableationable corpnameless #3 furniture NULL 417.634615384615 +ableationable corpnameless #3 furniture Home 417.634615384615 +callyn stationought NULL NULL NULL 417.918367346939 +callyn stationought importoscholar #1 NULL NULL 417.918367346939 +callyn stationought importoscholar #1 country NULL 417.918367346939 +callyn stationought importoscholar #1 country Music 417.918367346939 +n steingeing NULL NULL NULL 417.960784313725 +n steingeing exportischolar #2 NULL NULL 417.960784313725 +n steingeing exportischolar #2 pop NULL 417.960784313725 +n steingeing exportischolar #2 pop Music 417.960784313725 +ationn stn st NULL NULL NULL 421.085106382979 +ationn stn st exportiimporto #2 NULL NULL 421.085106382979 +ationn stn st exportiimporto #2 pants NULL 421.085106382979 +ationn stn st exportiimporto #2 pants Men 421.085106382979 +n stpricallyought NULL NULL NULL 421.367346938776 +n stpricallyought scholarcorp #8 NULL NULL 421.367346938776 +n stpricallyought scholarcorp #8 earings NULL 421.367346938776 +n stpricallyought scholarcorp #8 earings Jewelry 421.367346938776 +baresepriought NULL NULL NULL 422.875 +baresepriought importobrand #1 NULL NULL 422.875 +baresepriought importobrand #1 bedding NULL 422.875 +baresepriought importobrand #1 bedding Home 422.875 +ationcallypriought NULL NULL NULL 422.877551020408 +ationcallypriought edu packunivamalg #12 NULL NULL 422.877551020408 +ationcallypriought edu packunivamalg #12 sports NULL 422.877551020408 +ationcallypriought edu packunivamalg #12 sports Books 422.877551020408 +eingeingpriought NULL NULL NULL 422.957446808511 +eingeingpriought importonameless #9 NULL NULL 422.957446808511 +eingeingpriought importonameless #9 paint NULL 422.957446808511 +eingeingpriought importonameless #9 paint Home 422.957446808511 +esepricallyought NULL NULL NULL 423.1 +esepricallyought scholarunivamalg #3 NULL NULL 423.1 +esepricallyought scholarunivamalg #3 karoke NULL 423.1 +esepricallyought scholarunivamalg #3 karoke Electronics 423.1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q23.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q23.slt.no new file mode 100644 index 00000000000..ddd4afbdcbc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q23.slt.no @@ -0,0 +1,90 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +WITH frequent_ss_items AS + (SELECT itemdesc, + i_item_sk item_sk, + d_date solddate, + count(*) cnt + FROM store_sales, + date_dim, + (SELECT SUBSTRING(i_item_desc, 1, 30) itemdesc, + * + FROM item) sq1 + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY itemdesc, + i_item_sk, + d_date + HAVING count(*) >4), + max_store_sales AS + (SELECT max(csales) tpcds_cmax + FROM + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) csales + FROM store_sales, + customer, + date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2000, + 2000+1, + 2000+2, + 2000+3) + GROUP BY c_customer_sk) sq2), + best_ss_customer AS + (SELECT c_customer_sk, + sum(ss_quantity*ss_sales_price) ssales + FROM store_sales, + customer, + max_store_sales + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING sum(ss_quantity*ss_sales_price) > (50/100.0) * max(tpcds_cmax)) +SELECT c_last_name, + c_first_name, + sales +FROM + (SELECT c_last_name, + c_first_name, + sum(cs_quantity*cs_list_price) sales + FROM catalog_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = item_sk + AND cs_bill_customer_sk = best_ss_customer.c_customer_sk + AND cs_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name + UNION ALL SELECT c_last_name, + c_first_name, + sum(ws_quantity*ws_list_price) sales + FROM web_sales, + customer, + date_dim, + frequent_ss_items, + best_ss_customer + WHERE d_year = 2000 + AND d_moy = 2 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = item_sk + AND ws_bill_customer_sk = best_ss_customer.c_customer_sk + AND ws_bill_customer_sk = customer.c_customer_sk + GROUP BY c_last_name, + c_first_name) sq3 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + sales NULLS FIRST +LIMIT 100; +---- +Kiser Teresa 10345.95 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q24.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q24.slt.no new file mode 100644 index 00000000000..784e15983be --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q24.slt.no @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTR +WITH ssales AS + (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + sum(ss_net_paid) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_country <> upper(ca_country) + AND s_zip = ca_zip + AND s_market_id=8 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + sum(netpaid) paid +FROM ssales +WHERE i_color = 'peach' +GROUP BY c_last_name, + c_first_name, + s_store_name +HAVING sum(netpaid) > + (SELECT 0.05*avg(netpaid) + FROM ssales) +ORDER BY c_last_name, + c_first_name, + s_store_name ; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q25.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q25.slt.no new file mode 100644 index 00000000000..901d462b688 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q25.slt.no @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id , + i_item_desc , + s_store_id , + s_store_name , + sum(ss_net_profit) AS store_sales_profit , + sum(sr_net_loss) AS store_returns_loss , + sum(cs_net_profit) AS catalog_sales_profit +FROM store_sales , + store_returns , + catalog_sales , + date_dim d1 , + date_dim d2 , + date_dim d3 , + store , + item +WHERE d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +ORDER BY i_item_id , + i_item_desc , + s_store_id , + s_store_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q26.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q26.slt.no new file mode 100644 index 00000000000..28a7d498547 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q26.slt.no @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRRR +SELECT i_item_id, + avg(cs_quantity) agg1, + avg(cs_list_price) agg2, + avg(cs_coupon_amt) agg3, + avg(cs_sales_price) agg4 +FROM catalog_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +AAAAAAAAAABAAAAA 54 25.36 0 13.94 +AAAAAAAAAAFAAAAA 11 36.71 0 1.46 +AAAAAAAAABGAAAAA 89 66.46 234.21 14.62 +AAAAAAAAACFAAAAA 22 82.72 0 29.77 +AAAAAAAAACGAAAAA 43 140.34 0 112.27 +AAAAAAAAAEAAAAAA 18 45.92 0 16.07 +AAAAAAAAAEDAAAAA 47 205.23 4699.3 119.03 +AAAAAAAAAEEAAAAA 68 61.1 0 2.44 +AAAAAAAAAEGAAAAA 62 104.6 0 82.63 +AAAAAAAAAFFAAAAA 86 101.97 0 76.47 +AAAAAAAAAGEAAAAA 27 41.89 0 17.59 +AAAAAAAAAHDAAAAA 67 39.98 0 39.98 +AAAAAAAAAHGAAAAA 81 97.035 36.645 77.565 +AAAAAAAAAIDAAAAA 55 81.54 0 51.37 +AAAAAAAAAIFAAAAA 27.5 121.975 0 36.885 +AAAAAAAAAMEAAAAA 83 33.4 0 9.68 +AAAAAAAAAOCAAAAA 3 31.04 0 22.03 +AAAAAAAAAODAAAAA 78 145.2 0 47.91 +AAAAAAAAAPCAAAAA 44.5 204.765 0 134.585 +AAAAAAAABAGAAAAA 24 240.38 1047.02 79.32 +AAAAAAAABCEAAAAA 16 37.15 0 17.08 +AAAAAAAABDAAAAAA 20 205.62 0 45.23 +AAAAAAAABECAAAAA 33 56.44 0 38.37 +AAAAAAAABFBAAAAA 4 38.1 0 5.33 +AAAAAAAABGDAAAAA 73 170.7 0 110.95 +AAAAAAAABGGAAAAA 28 43.92 168.71 43.04 +AAAAAAAABIBAAAAA 90 80.46 130.24 4.02 +AAAAAAAABLBAAAAA 75 48.125 0 4.245 +AAAAAAAABNCAAAAA 19 43.54 0 19.59 +AAAAAAAACADAAAAA 40 38.62 0 24.71 +AAAAAAAACAGAAAAA 45 174.08 0 80.07 +AAAAAAAACBEAAAAA 28 156.26 0 101.56 +AAAAAAAACBFAAAAA 15 61.865 0 23.74 +AAAAAAAACCDAAAAA 97 2.3 0 2.23 +AAAAAAAACEBAAAAA 92 10.88 0 9.13 +AAAAAAAACFGAAAAA 65 188.16 0 171.22 +AAAAAAAACGDAAAAA 65 114.12 3429.23 76.46 +AAAAAAAACHEAAAAA 90 136.25 0 114.45 +AAAAAAAACJCAAAAA 92 209.94 0 197.34 +AAAAAAAACJDAAAAA 12 35.57 54.62 28.45 +AAAAAAAACJGAAAAA 20.666666666667 167.803333333333 0 84.006666666667 +AAAAAAAACKBAAAAA 8 40.28 78.34 25.77 +AAAAAAAACKFAAAAA 37.5 138.32 0 56.61 +AAAAAAAACLBAAAAA 80 57.18 0 53.17 +AAAAAAAACLGAAAAA 69 212.81 0 29.79 +AAAAAAAACMCAAAAA 9 220.33 0 134.4 +AAAAAAAACMDAAAAA 58 111.03 0 18.87 +AAAAAAAACMFAAAAA 87 114.81 0 104.47 +AAAAAAAACNBAAAAA 43 232.62 4876.95 123.28 +AAAAAAAACOGAAAAA 53.5 143.66 0 91.275 +AAAAAAAACPAAAAAA 95 147.36 0 63.36 +AAAAAAAACPDAAAAA 88 162.8 0 42.32 +AAAAAAAADAEAAAAA 97 152.99 1941.94 26 +AAAAAAAADAHAAAAA 76.5 106.67 0 73.925 +AAAAAAAADBDAAAAA 47 204.9 0 69.66 +AAAAAAAADEDAAAAA 80 183.9 0 1.83 +AAAAAAAADGBAAAAA 77 29.44 0 0.88 +AAAAAAAADICAAAAA 68 230.38 0 168.17 +AAAAAAAADKAAAAAA 43 237.65 0 14.25 +AAAAAAAADMEAAAAA 86 184.57 8047.36 143.96 +AAAAAAAADOCAAAAA 61 215.67 0 107.83 +AAAAAAAADPBAAAAA 100 135.16 527.1 35.14 +AAAAAAAAEBCAAAAA 27 166.3 0 69.84 +AAAAAAAAECFAAAAA 5 120.67 0 44.64 +AAAAAAAAEDEAAAAA 96 152.42 0 76.21 +AAAAAAAAEDGAAAAA 38 172.1 0 15.48 +AAAAAAAAEGDAAAAA 75 108.23 0 24.89 +AAAAAAAAEICAAAAA 84 178.4 0 144.5 +AAAAAAAAEIFAAAAA 90 41.27 0 6.6 +AAAAAAAAEJBAAAAA 56 66.66 0 41.17 +AAAAAAAAEJDAAAAA 99 218.15 0 159.24 +AAAAAAAAEJEAAAAA 28 124.1 0 60.8 +AAAAAAAAEKGAAAAA 52 189.49 0 58.74 +AAAAAAAAEMDAAAAA 86 62.3 0 59.8 +AAAAAAAAEMEAAAAA 42 14.63 0 7.31 +AAAAAAAAENDAAAAA 93 249.63 0 32.45 +AAAAAAAAENFAAAAA 47 76.99 0 36.2 +AAAAAAAAEOBAAAAA 10 119.27 0 98.99 +AAAAAAAAEOFAAAAA 34 3.46 0 3.18 +AAAAAAAAFACAAAAA 71 18.1 0 5.79 +AAAAAAAAFAFAAAAA 45 28.45 0 25.32 +AAAAAAAAFCAAAAAA 66 72.87 0 43.72 +AAAAAAAAFCGAAAAA 26 77.69 0 9.32 +AAAAAAAAFDCAAAAA 77.5 39.83 0 10.285 +AAAAAAAAFEEAAAAA 19.5 96.145 638.385 44.68 +AAAAAAAAFFDAAAAA 43 106.67 0 2.13 +AAAAAAAAFFGAAAAA 85 55.99 119.91 35.27 +AAAAAAAAFGCAAAAA 63 112.015 5.26 93.905 +AAAAAAAAFHBAAAAA 45 42.79 0 40.65 +AAAAAAAAFHEAAAAA 81 131.99 0 50.15 +AAAAAAAAFIGAAAAA 37 62.35 0 1.24 +AAAAAAAAFKBAAAAA 99 160.19 0 8 +AAAAAAAAFLGAAAAA 88 3.09 0 1.2 +AAAAAAAAFNBAAAAA 3 109.15 66.4 85.13 +AAAAAAAAFODAAAAA 64 116.48 0 81.53 +AAAAAAAAGAFAAAAA 57 169.09 0 65.94 +AAAAAAAAGBEAAAAA 33 67.33 0 18.85 +AAAAAAAAGBGAAAAA 79 110.44 586.24 61.84 +AAAAAAAAGDCAAAAA 45 96.55 129.89 12.55 +AAAAAAAAGDEAAAAA 65 39.35 0 33.05 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q27.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q27.slt.no new file mode 100644 index 00000000000..e00eafa07e9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q27.slt.no @@ -0,0 +1,165 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIRRRR +WITH results AS + (SELECT i_item_id, + s_state, + 0 AS g_state, + ss_quantity agg1, + ss_list_price agg2, + ss_coupon_amt agg3, + ss_sales_price agg4 + FROM store_sales, + customer_demographics, + date_dim, + store, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND d_year = 2002 + AND s_state = 'TN' ) +SELECT i_item_id, + s_state, + g_state, + agg1, + agg2, + agg3, + agg4 +FROM + ( SELECT i_item_id, + s_state, + 0 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id , + s_state + UNION ALL SELECT i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results + GROUP BY i_item_id + UNION ALL SELECT NULL AS i_item_id, + NULL AS s_state, + 1 AS g_state, + avg(agg1) agg1, + avg(agg2) agg2, + avg(agg3) agg3, + avg(agg4) agg4 + FROM results ) foo +ORDER BY i_item_id NULLS FIRST, + s_state NULLS FIRST +LIMIT 100; +---- +NULL NULL 1 50.996183206107 77.562038216561 179.138826530612 39.329783715013 +AAAAAAAAAAEAAAAA NULL 1 38 96.47 0 92.61 +AAAAAAAAAAEAAAAA TN 0 38 96.47 0 92.61 +AAAAAAAAAAFAAAAA NULL 1 7 126.82 0 22.82 +AAAAAAAAAAFAAAAA TN 0 7 126.82 0 22.82 +AAAAAAAAAAHAAAAA NULL 1 53.5 14.415 2.93 6.395 +AAAAAAAAAAHAAAAA TN 0 53.5 14.415 2.93 6.395 +AAAAAAAAABAAAAAA NULL 1 88 64.14 0 59.65 +AAAAAAAAABAAAAAA TN 0 88 64.14 0 59.65 +AAAAAAAAABEAAAAA NULL 1 29 92.04 0 61.66 +AAAAAAAAABEAAAAA TN 0 29 92.04 0 61.66 +AAAAAAAAACCAAAAA NULL 1 68 98.19 0 68.1 +AAAAAAAAACCAAAAA TN 0 68 98.19 0 68.1 +AAAAAAAAACDAAAAA NULL 1 77 152.46 0 18.29 +AAAAAAAAACDAAAAA TN 0 77 152.46 0 18.29 +AAAAAAAAACFAAAAA NULL 1 42 76.37 385.815 11.125 +AAAAAAAAACFAAAAA TN 0 42 76.37 385.815 11.125 +AAAAAAAAADBAAAAA NULL 1 75 65.33 3073.03 41.81 +AAAAAAAAADBAAAAA TN 0 75 65.33 3073.03 41.81 +AAAAAAAAADCAAAAA NULL 1 43 80.82 0 68.69 +AAAAAAAAADCAAAAA TN 0 43 80.82 0 68.69 +AAAAAAAAADEAAAAA NULL 1 73 108.55 0 59.7 +AAAAAAAAADEAAAAA TN 0 73 108.55 0 59.7 +AAAAAAAAADFAAAAA NULL 1 13 103.18 0 87.7 +AAAAAAAAADFAAAAA TN 0 13 103.18 0 87.7 +AAAAAAAAAEAAAAAA NULL 1 65.5 84.265 1414.25 66.03 +AAAAAAAAAEAAAAAA TN 0 65.5 84.265 1414.25 66.03 +AAAAAAAAAEBAAAAA NULL 1 13 111.82 0 16.77 +AAAAAAAAAEBAAAAA TN 0 13 111.82 0 16.77 +AAAAAAAAAEDAAAAA NULL 1 42 116.9 0 13.895 +AAAAAAAAAEDAAAAA TN 0 42 116.9 0 13.895 +AAAAAAAAAEGAAAAA NULL 1 20.5 42.36 0 23.075 +AAAAAAAAAEGAAAAA TN 0 20.5 42.36 0 23.075 +AAAAAAAAAFCAAAAA NULL 1 53.5 74.87 0 37.965 +AAAAAAAAAFCAAAAA TN 0 53.5 74.87 0 37.965 +AAAAAAAAAFFAAAAA NULL 1 43.666666666667 39.46 0 26.31 +AAAAAAAAAFFAAAAA TN 0 43.666666666667 39.46 0 26.31 +AAAAAAAAAFGAAAAA NULL 1 69 100.133333333333 1050.94 57.703333333333 +AAAAAAAAAFGAAAAA TN 0 69 100.133333333333 1050.94 57.703333333333 +AAAAAAAAAGBAAAAA NULL 1 29 146.75 0 36.68 +AAAAAAAAAGBAAAAA TN 0 29 146.75 0 36.68 +AAAAAAAAAHAAAAAA NULL 1 69 82.58 0 80.92 +AAAAAAAAAHAAAAAA TN 0 69 82.58 0 80.92 +AAAAAAAAAHBAAAAA NULL 1 100 66.33 0 5.96 +AAAAAAAAAHBAAAAA TN 0 100 66.33 0 5.96 +AAAAAAAAAHDAAAAA NULL 1 58 94.02 0 49.83 +AAAAAAAAAHDAAAAA TN 0 58 94.02 0 49.83 +AAAAAAAAAHEAAAAA NULL 1 58 120.87 0 26.59 +AAAAAAAAAHEAAAAA TN 0 58 120.87 0 26.59 +AAAAAAAAAIAAAAAA NULL 1 21 147.66 91.68 5.9 +AAAAAAAAAIAAAAAA TN 0 21 147.66 91.68 5.9 +AAAAAAAAAICAAAAA NULL 1 49 66.64 0 16.66 +AAAAAAAAAICAAAAA TN 0 49 66.64 0 16.66 +AAAAAAAAAIDAAAAA NULL 1 68 44.81 0 22.85 +AAAAAAAAAIDAAAAA TN 0 68 44.81 0 22.85 +AAAAAAAAAIFAAAAA NULL 1 57 58.93 0 27.425 +AAAAAAAAAIFAAAAA TN 0 57 58.93 0 27.425 +AAAAAAAAAIGAAAAA NULL 1 15.5 27.885 0 21.15 +AAAAAAAAAIGAAAAA TN 0 15.5 27.885 0 21.15 +AAAAAAAAAJBAAAAA NULL 1 13 100.39 0 8.03 +AAAAAAAAAJBAAAAA TN 0 13 100.39 0 8.03 +AAAAAAAAAJFAAAAA NULL 1 62 95.735 0 28.475 +AAAAAAAAAJFAAAAA TN 0 62 95.735 0 28.475 +AAAAAAAAAKDAAAAA NULL 1 53 102.46 0 29.71 +AAAAAAAAAKDAAAAA TN 0 53 102.46 0 29.71 +AAAAAAAAALCAAAAA NULL 1 30 112.48 0 62.98 +AAAAAAAAALCAAAAA TN 0 30 112.48 0 62.98 +AAAAAAAAALDAAAAA NULL 1 6 55.88 0 22.35 +AAAAAAAAALDAAAAA TN 0 6 55.88 0 22.35 +AAAAAAAAALFAAAAA NULL 1 75.5 62.615 0 41.77 +AAAAAAAAALFAAAAA TN 0 75.5 62.615 0 41.77 +AAAAAAAAAMCAAAAA NULL 1 34 67.285 1065.62 41.345 +AAAAAAAAAMCAAAAA TN 0 34 67.285 1065.62 41.345 +AAAAAAAAANAAAAAA NULL 1 72 138.955 0 50.78 +AAAAAAAAANAAAAAA TN 0 72 138.955 0 50.78 +AAAAAAAAANDAAAAA NULL 1 16 3.46 0 0.93 +AAAAAAAAANDAAAAA TN 0 16 3.46 0 0.93 +AAAAAAAAANGAAAAA NULL 1 56 108.79 0 65.515 +AAAAAAAAANGAAAAA TN 0 56 108.79 0 65.515 +AAAAAAAAAOAAAAAA NULL 1 65 57.58 0 22.45 +AAAAAAAAAOAAAAAA TN 0 65 57.58 0 22.45 +AAAAAAAAAOGAAAAA NULL 1 72 37.55 285.43 36.04 +AAAAAAAAAOGAAAAA TN 0 72 37.55 285.43 36.04 +AAAAAAAAAPCAAAAA NULL 1 26 164.13 788.56 54.16 +AAAAAAAAAPCAAAAA TN 0 26 164.13 788.56 54.16 +AAAAAAAAAPFAAAAA NULL 1 58.333333333333 69.806666666667 0 32.63 +AAAAAAAAAPFAAAAA TN 0 58.333333333333 69.806666666667 0 32.63 +AAAAAAAABADAAAAA NULL 1 13 41.28 1.87 2.06 +AAAAAAAABADAAAAA TN 0 13 41.28 1.87 2.06 +AAAAAAAABDDAAAAA NULL 1 66 42.78 0 32.945 +AAAAAAAABDDAAAAA TN 0 66 42.78 0 32.945 +AAAAAAAABECAAAAA NULL 1 60.5 52.7 0 24.3 +AAAAAAAABECAAAAA TN 0 60.5 52.7 0 24.3 +AAAAAAAABFEAAAAA NULL 1 99 93.01 0 0 +AAAAAAAABFEAAAAA TN 0 99 93.01 0 0 +AAAAAAAABGAAAAAA NULL 1 16 183.78 0 23.89 +AAAAAAAABGAAAAAA TN 0 16 183.78 0 23.89 +AAAAAAAABGDAAAAA NULL 1 64 49.39 0 8.89 +AAAAAAAABGDAAAAA TN 0 64 49.39 0 8.89 +AAAAAAAABGGAAAAA NULL 1 26 4.05 0 0.52 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q28.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q28.slt.no new file mode 100644 index 00000000000..dfe2926555b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q28.slt.no @@ -0,0 +1,57 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RIIRIIRIIRIIRIIRII +SELECT * +FROM + (SELECT avg(ss_list_price) B1_LP, + count(ss_list_price) B1_CNT, + count(DISTINCT ss_list_price) B1_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 0 AND 5 + AND (ss_list_price BETWEEN 8 AND 8+10 + OR ss_coupon_amt BETWEEN 459 AND 459+1000 + OR ss_wholesale_cost BETWEEN 57 AND 57+20)) B1, + (SELECT avg(ss_list_price) B2_LP, + count(ss_list_price) B2_CNT, + count(DISTINCT ss_list_price) B2_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 6 AND 10 + AND (ss_list_price BETWEEN 90 AND 90+10 + OR ss_coupon_amt BETWEEN 2323 AND 2323+1000 + OR ss_wholesale_cost BETWEEN 31 AND 31+20)) B2, + (SELECT avg(ss_list_price) B3_LP, + count(ss_list_price) B3_CNT, + count(DISTINCT ss_list_price) B3_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 11 AND 15 + AND (ss_list_price BETWEEN 142 AND 142+10 + OR ss_coupon_amt BETWEEN 12214 AND 12214+1000 + OR ss_wholesale_cost BETWEEN 79 AND 79+20)) B3, + (SELECT avg(ss_list_price) B4_LP, + count(ss_list_price) B4_CNT, + count(DISTINCT ss_list_price) B4_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 16 AND 20 + AND (ss_list_price BETWEEN 135 AND 135+10 + OR ss_coupon_amt BETWEEN 6071 AND 6071+1000 + OR ss_wholesale_cost BETWEEN 38 AND 38+20)) B4, + (SELECT avg(ss_list_price) B5_LP, + count(ss_list_price) B5_CNT, + count(DISTINCT ss_list_price) B5_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 25 + AND (ss_list_price BETWEEN 122 AND 122+10 + OR ss_coupon_amt BETWEEN 836 AND 836+1000 + OR ss_wholesale_cost BETWEEN 17 AND 17+20)) B5, + (SELECT avg(ss_list_price) B6_LP, + count(ss_list_price) B6_CNT, + count(DISTINCT ss_list_price) B6_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 26 AND 30 + AND (ss_list_price BETWEEN 154 AND 154+10 + OR ss_coupon_amt BETWEEN 7326 AND 7326+1000 + OR ss_wholesale_cost BETWEEN 7 AND 7+20)) B6 +LIMIT 100; +---- +78.051324031891 3512 2840 69.589553072626 3580 2677 134.091937521938 2849 2465 82.692868983105 3137 2543 61.341167722391 3631 2778 39.378027009223 3036 2203 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q29.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q29.slt.no new file mode 100644 index 00000000000..68d32f7dec2 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q29.slt.no @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIII +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + sum(ss_quantity) AS store_sales_quantity, + sum(sr_return_quantity) AS store_returns_quantity, + sum(cs_quantity) AS catalog_sales_quantity +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_moy = 9 + AND d1.d_year = 1999 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 9 AND 9 + 3 + AND d2.d_year = 1999 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN (1999, + 1999+1, + 1999+2) +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q3.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q3.slt.no new file mode 100644 index 00000000000..75e063ccba1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q3.slt.no @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IITR +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) sum_agg +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 128 + AND dt.d_moy=11 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + sum_agg DESC, + brand_id +LIMIT 100; +---- +1998 3001001 amalgexporti #1 35091.22 +1998 6004008 edu packcorp #8 7815.69 +1998 1004001 edu packamalg #1 4804.39 +1999 1004001 edu packamalg #1 21945.56 +1999 3001001 amalgexporti #1 15640.06 +1999 6004008 edu packcorp #8 3158.28 +2000 1004001 edu packamalg #1 19485.89 +2000 6004008 edu packcorp #8 16982.85 +2000 3001001 amalgexporti #1 16927.9 +2001 3001001 importoscholar #2 31223.1 +2001 1004001 exportiexporti #2 29816.3 +2001 6004008 edu packcorp #8 24093.07 +2002 6004008 edu packcorp #8 20111.76 +2002 3001001 importoscholar #2 13535.81 +2002 1004001 exportiexporti #2 11338.71 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q30.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q30.slt.no new file mode 100644 index 00000000000..50ee4c7a1fd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q30.slt.no @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTIIITTTIR +WITH customer_total_return AS + (SELECT wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + sum(wr_return_amt) AS ctr_total_return + FROM web_returns, + date_dim, + customer_address + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2002 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date_sk, + ctr_total_return +FROM customer_total_return ctr1, + customer_address, + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id NULLS FIRST, + c_salutation NULLS FIRST, + c_first_name NULLS FIRST, + c_last_name NULLS FIRST, + c_preferred_cust_flag NULLS FIRST, + c_birth_day NULLS FIRST, + c_birth_month NULLS FIRST, + c_birth_year NULLS FIRST, + c_birth_country NULLS FIRST, + c_login NULLS FIRST, + c_email_address NULLS FIRST, + c_last_review_date_sk NULLS FIRST, + ctr_total_return NULLS FIRST +LIMIT 100; +---- +AAAAAAAAACJAAAAA Sir Roger Gonzalez Y 8 1 1980 TUVALU (empty) Roger.Gonzalez@Qbki8Z3ti6ttqLr.com 2452380 3439.08 +AAAAAAAABDACAAAA Dr. Wesley Lee N 18 8 1944 UZBEKISTAN (empty) Wesley.Lee@XFQyCJ38Yy9.com 2452335 2839.5 +AAAAAAAABJDAAAAA Mr. Rob Blanco N 9 2 1977 UKRAINE (empty) Rob.Blanco@6GhI1MtoAQPsIc.edu 2452526 10181.31 +AAAAAAAABMPAAAAA Dr. Eileen Reid Y 9 12 1978 LUXEMBOURG (empty) Eileen.Reid@J.org 2452645 1968.81 +AAAAAAAACJEBAAAA Dr. Karen Simon Y 1 2 1951 AMERICAN SAMOA (empty) Karen.Simon@yZQoc43BFY.org 2452648 2568.07 +AAAAAAAACMBBAAAA Dr. Michael Alvarado Y 27 12 1990 LIBERIA (empty) Michael.Alvarado@A63BvnOldkTj.org 2452320 1474.41 +AAAAAAAADKDCAAAA Miss Karen Proffitt N 25 12 1941 MOLDOVA, REPUBLIC OF (empty) Karen.Proffitt@3arqUjeF377f.com 2452510 11218.48 +AAAAAAAAEFDBAAAA Mrs. Helen Cartwright N 3 9 1925 AZERBAIJAN (empty) Helen.Cartwright@3xjU6uUD8h.com 2452502 1957.21 +AAAAAAAAEGCAAAAA Dr. Dana Nelson N 14 1 1975 PUERTO RICO (empty) Dana.Nelson@KiomOfY85E.org 2452337 1387 +AAAAAAAAGFIAAAAA Mr. James Bravo N 19 5 1987 CAPE VERDE (empty) James.Bravo@XByPHVTRdD.com 2452418 2797.6 +AAAAAAAAGJDCAAAA Ms. Araceli Young Y 16 10 1947 LUXEMBOURG (empty) Araceli.Young@lRbh.com 2452472 2495.76 +AAAAAAAAGJDCAAAA Ms. Araceli Young Y 16 10 1947 LUXEMBOURG (empty) Araceli.Young@lRbh.com 2452472 5196.12 +AAAAAAAAHKBBAAAA Ms. Linda Crawford N 13 2 1924 KIRIBATI (empty) Linda.Crawford@xOf5kYDZapQmj.org 2452598 5318.88 +AAAAAAAAJBJAAAAA Ms. Gladys Hinojosa N 11 9 1983 YEMEN (empty) Gladys.Hinojosa@cRUiSNOt2L.edu 2452418 2410.24 +AAAAAAAAJFMBAAAA Dr. Donna Chaney Y 16 5 1984 FIJI (empty) Donna.Chaney@uIuv0.org 2452530 2227.16 +AAAAAAAAJJDBAAAA Miss Tamara Hadden Y 14 2 1961 ZAMBIA (empty) Tamara.Hadden@HhOfCtB3Uz3mZC0If.com 2452522 1730.08 +AAAAAAAANHBAAAAA Dr. Colby Robinson N 12 6 1973 PAPUA NEW GUINEA (empty) Colby.Robinson@51vtQ.edu 2452357 7125 +AAAAAAAAOEFAAAAA Ms. Sandra Maynard N 28 10 1946 MALI (empty) Sandra.Maynard@kKFv9OSHkFUc1Xbj.edu 2452331 4316.4 +AAAAAAAAOKIBAAAA Miss Marie Deal N 30 9 1949 ECUADOR (empty) Marie.Deal@8MaBO.edu 2452382 1004.34 +AAAAAAAAOPDBAAAA Dr. Ivy Melton N 22 7 1943 ETHIOPIA (empty) Ivy.Melton@AKZ5R4DBRUL86.edu 2452494 3753.75 +AAAAAAAAPJHBAAAA Sir Philip Hall N 19 9 1950 SYRIAN ARAB REPUBLIC (empty) Philip.Hall@kacXUR.com 2452637 11431.35 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q31.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q31.slt.no new file mode 100644 index 00000000000..e02259a6ac3 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q31.slt.no @@ -0,0 +1,76 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRRRR +WITH ss AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ss_ext_sales_price) AS store_sales + FROM store_sales, + date_dim, + customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year), + ws AS + (SELECT ca_county, + d_qoy, + d_year, + sum(ws_ext_sales_price) AS web_sales + FROM web_sales, + date_dim, + customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk=ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year) +SELECT ss1.ca_county , + ss1.d_year , + (ws2.web_sales*1.0000)/ws1.web_sales web_q1_q2_increase , + (ss2.store_sales*1.0000)/ss1.store_sales store_q1_q2_increase , + (ws3.web_sales*1.0000)/ws2.web_sales web_q2_q3_increase , + (ss3.store_sales*1.0000)/ss2.store_sales store_q2_q3_increase +FROM ss ss1 , + ss ss2 , + ss ss3 , + ws ws1 , + ws ws2 , + ws ws3 +WHERE ss1.d_qoy = 1 + AND ss1.d_year = 2000 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2000 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2000 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2000 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2000 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2000 + AND CASE + WHEN ws1.web_sales > 0 THEN (ws2.web_sales*1.0000)/ws1.web_sales + ELSE NULL + END > CASE + WHEN ss1.store_sales > 0 THEN (ss2.store_sales*1.0000)/ss1.store_sales + ELSE NULL + END + AND CASE + WHEN ws2.web_sales > 0 THEN (ws3.web_sales*1.0000)/ws2.web_sales + ELSE NULL + END > CASE + WHEN ss2.store_sales > 0 THEN (ss3.store_sales*1.0000)/ss2.store_sales + ELSE NULL + END +ORDER BY ss1.ca_county; +---- +Cumberland County 2000 1.201799508929 0.813932308885 1.484872872557 1.228181791735 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q32.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q32.slt.no new file mode 100644 index 00000000000..f05313c0011 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q32.slt.no @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query R +SELECT sum(cs_ext_discount_amt) AS "excess discount amount" +FROM catalog_sales , + item , + date_dim +WHERE i_manufact_id = 977 + AND i_item_sk = cs_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk + AND cs_ext_discount_amt > + ( SELECT 1.3 * avg(cs_ext_discount_amt) + FROM catalog_sales , + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = cs_sold_date_sk ) +LIMIT 100; +---- +NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q33.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q33.slt.no new file mode 100644 index 00000000000..a6b1b8cf77b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q33.slt.no @@ -0,0 +1,171 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IR +WITH ss AS + ( SELECT i_manufact_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + cs AS + ( SELECT i_manufact_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws AS + ( SELECT i_manufact_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN + (SELECT i_manufact_id + FROM item + WHERE i_category IN ('Electronics')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 5 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT i_manufact_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100; +---- +21 44.46 +778 65.72 +477 93.92 +192 99.4 +287 130.68 +32 132.32 +702 139.4 +176 251.91 +579 343.61 +82 692.19 +263 693.41 +7 873.9 +118 894.4 +74 948.6 +113 1040.25 +638 1290.76 +55 1389.3 +705 1512.87 +534 1626.92 +394 1764.29 +89 1806.88 +504 1828.2 +578 1918.11 +461 2030.8 +785 2100.64 +224 2207.4 +470 2454.32 +306 2483.98 +191 2570.84 +286 2708.08 +576 2757.12 +590 2781.39 +110 2998.46 +41 3018.6 +385 3101.44 +313 3173.05 +124 3217.32 +747 3395.66 +865 3430.94 +215 3583.36 +392 3613.86 +64 3679.12 +133 3687.48 +25 3835.89 +267 3938.18 +17 4326.52 +331 4533.96 +207 4619.77 +480 4631.28 +740 4700.4 +389 4738.41 +285 4797.58 +36 4797.75 +431 4854.5 +171 5028.4 +594 5040.74 +391 5048.97 +316 5080.36 +182 5479.06 +223 5557.41 +954 5687.59 +553 5694.38 +813 5840.16 +159 5996.42 +100 6198.97 +147 6322.98 +621 6418.44 +105 6976.7 +253 7182.8 +566 7850.59 +886 8270.28 +57 8625.72 +334 8773.06 +185 8860.91 +28 8877.02 +79 9147.83 +289 9233.96 +269 9587.29 +143 9734.86 +227 9736.76 +369 9964.8 +220 10192.12 +251 10198.39 +729 10637.7 +77 10644.62 +255 10672.1 +107 10752.3 +169 10884.81 +503 11030.98 +303 11139.75 +609 11352.32 +154 11375.11 +24 11420.17 +466 11541.13 +559 11641.15 +545 11737.34 +173 11850.25 +9 11857.37 +438 12075.41 +718 12086.07 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q34.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q34.slt.no new file mode 100644 index 00000000000..1e6629b4941 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q34.slt.no @@ -0,0 +1,98 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTII +SELECT c_last_name , + c_first_name , + c_salutation , + c_preferred_cust_flag , + ss_ticket_number , + cnt +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (date_dim.d_dom BETWEEN 1 AND 3 + OR date_dim.d_dom BETWEEN 25 AND 28) + AND (household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'Unknown') + AND household_demographics.hd_vehicle_count > 0 + AND (CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END) > 1.2 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county = 'Williamson County' + GROUP BY ss_ticket_number, + ss_customer_sk) dn, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + c_salutation NULLS FIRST, + c_preferred_cust_flag DESC NULLS FIRST, + ss_ticket_number NULLS FIRST; +---- +NULL NULL NULL Y 13629 15 +NULL Ernestina NULL NULL 224 15 +NULL Steven NULL Y 7453 16 +Austin Isela Dr. N 8049 15 +Barr Kyle Mr. Y 1281 16 +Bennett Gary Mr. N 3324 16 +Boston John Mr. N 8949 16 +Conner Betty Dr. Y 20319 15 +Dabbs Elizabeth Ms. Y 17220 15 +Davis William Sir N 6311 16 +Desjardins Joyce Miss N 20342 15 +Espinoza Michael Sir N 23084 15 +Foster Crystal Miss Y 17471 15 +Garrison Kevin Sir Y 11753 16 +Glover Valerie Miss N 13944 15 +Gonzalez David Dr. Y 14075 15 +Good William Dr. Y 6580 15 +Grant Stephen Mr. Y 60 15 +Hagen Catherine Mrs. Y 18961 15 +Hendrix Nicole Dr. Y 9979 15 +Jensen Ana Ms. N 2490 15 +Johnson Beverly Dr. N 7637 15 +Johnson David Sir N 9370 16 +Johnson Olen Mr. N 12862 16 +Jordan Christopher Mr. N 6941 15 +Lawhorn James Sir Y 5723 15 +Mcgregor Brandon Sir Y 2698 16 +Mcmurray Vincent Dr. Y 17565 15 +Mcpherson Doris Ms. Y 22999 15 +Neal Dave Sir N 18103 15 +Norfleet Ethel Miss N 14366 15 +Pappas Abigail Mrs. N 6954 15 +Paris Danette Mrs. Y 10488 15 +Phifer Karen Ms. N 10643 15 +Reis Graham Dr. N 17491 15 +Robinson Laura Miss Y 11712 15 +Roth Elizabeth Ms. N 7856 16 +Sanchez Cortez Mr. N 11423 15 +Sanchez Edward Dr. Y 12536 15 +Schaefer James Sir Y 10819 16 +Scott Lawrence Dr. N 2730 15 +Smith Terry Dr. N 16945 16 +Snodgrass Andy Mr. N 5587 15 +Spencer Kent Dr. Y 23881 16 +Stanford Kathleen Dr. N 21865 15 +Stinson Rebecca Miss N 5917 16 +Teague Julie Dr. N 11061 15 +Terrell Deborah Mrs. N 15877 15 +Vega Henry Dr. Y 932 16 +Villarreal Gerald Mr. Y 22490 16 +Walker Brandon Dr. Y 16544 15 +Williamson Xiomara Ms. N 15209 16 +Young Robert Sir Y 3829 16 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q35.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q35.slt.no new file mode 100644 index 00000000000..f2ff6e7a300 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q35.slt.no @@ -0,0 +1,165 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIIIRIIIIRIIIIR +SELECT ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + count(*) cnt1, + min(cd_dep_count) min1, + max(cd_dep_count) max1, + avg(cd_dep_count) avg1, + cd_dep_employed_count, + count(*) cnt2, + min(cd_dep_employed_count) min2, + max(cd_dep_employed_count) max2, + avg(cd_dep_employed_count) avg2, + cd_dep_college_count, + count(*) cnt3, + min(cd_dep_college_count), + max(cd_dep_college_count), + avg(cd_dep_college_count) +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + AND (EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4) + OR EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_qoy < 4)) +GROUP BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY ca_state NULLS FIRST, + cd_gender NULLS FIRST, + cd_marital_status NULLS FIRST, + cd_dep_count NULLS FIRST, + cd_dep_employed_count NULLS FIRST, + cd_dep_college_count NULLS FIRST +LIMIT 100; +---- +NULL F D 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +NULL F S 5 1 5 5 5 3 1 3 3 3 0 1 0 0 0 +NULL F U 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +NULL F U 3 1 3 3 3 0 1 0 0 0 0 1 0 0 0 +NULL F W 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +NULL F W 0 1 0 0 0 4 1 4 4 4 0 1 0 0 0 +NULL M D 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +NULL M M 5 1 5 5 5 0 1 0 0 0 0 1 0 0 0 +NULL M M 5 1 5 5 5 4 1 4 4 4 0 1 0 0 0 +NULL M U 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +NULL M W 1 1 1 1 1 3 1 3 3 3 0 1 0 0 0 +AK F M 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +AK F S 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +AK F S 2 1 2 2 2 0 1 0 0 0 0 1 0 0 0 +AK F W 5 1 5 5 5 4 1 4 4 4 0 1 0 0 0 +AK M M 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +AK M U 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +AK M W 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +AL F M 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 +AL F S 0 1 0 0 0 4 1 4 4 4 0 1 0 0 0 +AL M U 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +AL M U 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +AR F M 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +AR F S 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +AR F W 1 1 1 1 1 2 1 2 2 2 0 1 0 0 0 +AR M D 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 +AR M M 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +AR M S 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +AR M U 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +AZ F S 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +CA F M 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 +CA F M 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +CA F S 4 1 4 4 4 4 1 4 4 4 0 1 0 0 0 +CA F W 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +CA M D 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 +CA M M 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +CA M S 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +CA M S 5 1 5 5 5 2 1 2 2 2 0 1 0 0 0 +CA M W 2 1 2 2 2 2 1 2 2 2 0 1 0 0 0 +CO F S 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +CO F U 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +CO M S 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +CO M W 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +CO M W 2 1 2 2 2 4 1 4 4 4 0 1 0 0 0 +CT F D 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +DE M U 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +FL F M 5 1 5 5 5 4 1 4 4 4 0 1 0 0 0 +FL F M 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +FL F S 0 1 0 0 0 4 1 4 4 4 0 1 0 0 0 +FL F S 6 1 6 6 6 1 1 1 1 1 0 1 0 0 0 +FL F U 1 1 1 1 1 2 1 2 2 2 0 1 0 0 0 +FL F W 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +FL M M 1 1 1 1 1 2 1 2 2 2 0 1 0 0 0 +FL M S 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +FL M W 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +GA F D 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +GA F D 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 +GA F D 6 1 6 6 6 2 1 2 2 2 0 1 0 0 0 +GA F M 1 1 1 1 1 3 1 3 3 3 0 1 0 0 0 +GA F M 2 1 2 2 2 4 1 4 4 4 0 1 0 0 0 +GA F M 6 1 6 6 6 2 1 2 2 2 0 1 0 0 0 +GA F S 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 +GA F S 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +GA F S 5 1 5 5 5 0 1 0 0 0 0 1 0 0 0 +GA F U 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +GA F U 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +GA F W 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +GA M D 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +GA M D 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +GA M D 3 1 3 3 3 1 1 1 1 1 0 1 0 0 0 +GA M D 3 1 3 3 3 2 1 2 2 2 0 1 0 0 0 +GA M D 4 1 4 4 4 2 1 2 2 2 0 1 0 0 0 +GA M D 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 +GA M M 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +GA M M 2 1 2 2 2 0 1 0 0 0 0 1 0 0 0 +GA M M 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +GA M M 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +GA M M 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +GA M S 1 1 1 1 1 4 1 4 4 4 0 1 0 0 0 +GA M S 3 1 3 3 3 4 1 4 4 4 0 1 0 0 0 +GA M S 5 2 5 5 5 2 2 2 2 2 0 2 0 0 0 +GA M S 5 2 5 5 5 4 2 4 4 4 0 2 0 0 0 +GA M U 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 +GA M U 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +GA M U 2 1 2 2 2 1 1 1 1 1 0 1 0 0 0 +GA M U 4 1 4 4 4 4 1 4 4 4 0 1 0 0 0 +IA F D 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +IA F D 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +IA F M 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +IA F U 4 1 4 4 4 0 1 0 0 0 0 1 0 0 0 +IA F W 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 +IA M D 4 1 4 4 4 1 1 1 1 1 0 1 0 0 0 +IA M M 0 1 0 0 0 2 1 2 2 2 0 1 0 0 0 +IA M S 5 1 5 5 5 1 1 1 1 1 0 1 0 0 0 +IA M S 6 1 6 6 6 0 1 0 0 0 0 1 0 0 0 +IA M W 6 1 6 6 6 3 1 3 3 3 0 1 0 0 0 +ID F D 0 1 0 0 0 3 1 3 3 3 0 1 0 0 0 +ID F U 2 1 2 2 2 3 1 3 3 3 0 1 0 0 0 +ID M D 5 1 5 5 5 0 1 0 0 0 0 1 0 0 0 +ID M U 4 1 4 4 4 3 1 3 3 3 0 1 0 0 0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q36.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q36.slt.no new file mode 100644 index 00000000000..3819d08677b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q36.slt.no @@ -0,0 +1,163 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RTTII +WITH results AS + (SELECT sum(ss_net_profit) AS ss_net_profit, + sum(ss_ext_sales_price) AS ss_ext_sales_price, + (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin , + i_category , + i_class , + 0 AS g_category, + 0 AS g_class + FROM store_sales , + date_dim d1 , + item , + store + WHERE d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state ='TN' + GROUP BY i_category, + i_class) , + results_rollup AS + (SELECT gross_margin, + i_category, + i_class, + 0 AS t_category, + 0 AS t_class, + 0 AS lochierarchy + FROM results + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + i_category, + NULL AS i_class, + 0 AS t_category, + 1 AS t_class, + 1 AS lochierarchy + FROM results + GROUP BY i_category + UNION SELECT (sum(ss_net_profit)*1.0000)/sum(ss_ext_sales_price) AS gross_margin, + NULL AS i_category, + NULL AS i_class, + 1 AS t_category, + 1 AS t_class, + 2 AS lochierarchy + FROM results) +SELECT gross_margin, + i_category, + i_class, + lochierarchy, + rank() OVER ( PARTITION BY lochierarchy, + CASE + WHEN t_class = 0 THEN i_category + END + ORDER BY gross_margin ASC) AS rank_within_parent +FROM results_rollup +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN lochierarchy = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +-0.434469026475 NULL NULL 2 1 +-0.475828776562 Women NULL 1 1 +-0.458246876147 Sports NULL 1 2 +-0.455805975339 Jewelry NULL 1 3 +-0.447961782105 Men NULL 1 4 +-0.438980810635 Children NULL 1 5 +-0.435651605411 Home NULL 1 6 +-0.430991667654 Books NULL 1 7 +-0.428809266906 Music NULL 1 8 +-0.41732137988 Shoes NULL 1 9 +-0.367338311814 Electronics NULL 1 10 +-0.232556089253 NULL NULL 1 11 +-0.232556089253 NULL NULL 0 1 +-0.598983790981 Books science 0 1 +-0.565768202116 Books mystery 0 2 +-0.55606221827 Books business 0 3 +-0.531100675491 Books computers 0 4 +-0.463936185539 Books arts 0 5 +-0.455202147234 Books self-help 0 6 +-0.449555663998 Books sports 0 7 +-0.44901805972 Books romance 0 8 +-0.437501500312 Books travel 0 9 +-0.417307725742 Books fiction 0 10 +-0.408355965136 Books reference 0 11 +-0.396665857853 Books cooking 0 12 +-0.388180990665 Books history 0 13 +-0.372703714356 Books home repair 0 14 +-0.364335253755 Books parenting 0 15 +-0.288643090048 Books entertainments 0 16 +-0.510240387418 Children infants 0 1 +-0.46055888886 Children toddlers 0 2 +-0.420076241083 Children newborn 0 3 +-0.380345870298 Children school-uniforms 0 4 +-0.499309653213 Electronics disk drives 0 1 +-0.430748854113 Electronics memory 0 2 +-0.418649293684 Electronics musical 0 3 +-0.406848299097 Electronics monitors 0 4 +-0.406774006758 Electronics dvd/vcr players 0 5 +-0.37872053459 Electronics personal 0 6 +-0.374197836932 Electronics stereo 0 7 +-0.374080848919 Electronics automotive 0 8 +-0.368042870728 Electronics karoke 0 9 +-0.346065633962 Electronics cameras 0 10 +-0.339358077517 Electronics televisions 0 11 +-0.328190385663 Electronics wireless 0 12 +-0.302203829917 Electronics audio 0 13 +-0.294598804446 Electronics camcorders 0 14 +-0.268500518927 Electronics portable 0 15 +-0.200570994472 Electronics scanners 0 16 +-0.635939809062 Home accent 0 1 +-0.500967558081 Home curtains/drapes 0 2 +-0.495468665737 Home mattresses 0 3 +-0.467592363828 Home decor 0 4 +-0.461856127244 Home blinds/shades 0 5 +-0.457653343986 Home glassware 0 6 +-0.447079950686 Home rugs 0 7 +-0.445959061621 Home bedding 0 8 +-0.438498435047 Home lighting 0 9 +-0.408459505463 Home bathroom 0 10 +-0.397691142383 Home wallpaper 0 11 +-0.397322775456 Home tables 0 12 +-0.394587808821 Home kids 0 13 +-0.387894694533 Home flatware 0 14 +-0.387720358857 Home paint 0 15 +-0.363645743026 Home furniture 0 16 +-0.664929567694 Jewelry birdal 0 1 +-0.569887206197 Jewelry earings 0 2 +-0.543894322193 Jewelry rings 0 3 +-0.520182529287 Jewelry custom 0 4 +-0.516388958597 Jewelry semi-precious 0 5 +-0.510318468007 Jewelry estate 0 6 +-0.48257117258 Jewelry consignment 0 7 +-0.481772245218 Jewelry jewelry boxes 0 8 +-0.471554795515 Jewelry womens watch 0 9 +-0.425710554413 Jewelry gold 0 10 +-0.417958838464 Jewelry pendants 0 11 +-0.415190727791 Jewelry costume 0 12 +-0.39096478414 Jewelry diamonds 0 13 +-0.375997361735 Jewelry bracelets 0 14 +-0.357185834414 Jewelry mens watch 0 15 +-0.331918970311 Jewelry loose stones 0 16 +-0.493047364047 Men accessories 0 1 +-0.451488609158 Men sports-apparel 0 2 +-0.443679684076 Men shirts 0 3 +-0.401989316867 Men pants 0 4 +-0.447053682345 Music classical 0 1 +-0.438733197545 Music country 0 2 +-0.436076225056 Music pop 0 3 +-0.399577488076 Music rock 0 4 +-0.455694927992 Shoes womens 0 1 +-0.411889246703 Shoes mens 0 2 +-0.41159860537 Shoes athletic 0 3 +-0.38601251483 Shoes kids 0 4 +-0.579545625622 Sports football 0 1 +-0.553853107998 Sports baseball 0 2 +-0.512010921579 Sports pools 0 3 +-0.492748641754 Sports hockey 0 4 +-0.469098534315 Sports guns 0 5 +-0.467322037629 Sports archery 0 6 +-0.461264696393 Sports sailing 0 7 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q37.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q37.slt.no new file mode 100644 index 00000000000..c21721e1f89 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q37.slt.no @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +SELECT i_item_id, + i_item_desc, + i_current_price +FROM item, + inventory, + date_dim, + catalog_sales +WHERE i_current_price BETWEEN 68 AND 68 + 30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-02-01' AS date) AND cast('2000-04-01' AS date) + AND i_manufact_id IN (677, + 940, + 694, + 808) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND cs_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q38.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q38.slt.no new file mode 100644 index 00000000000..450c7cfd023 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q38.slt.no @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT count(*) +FROM + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 ) hot_cust +LIMIT 100; +---- +1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q39.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q39.slt.no new file mode 100644 index 00000000000..1d8f9e59257 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q39.slt.no @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIRRIIIRR +WITH inv AS + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 THEN NULL + ELSE stdev/mean + END cov + FROM + (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stddev_samp(inv_quantity_on_hand)*1.000 stdev, + avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year =2001 + GROUP BY w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy) foo + WHERE CASE mean + WHEN 0 THEN 0 + ELSE stdev/mean + END > 1) +SELECT inv1.w_warehouse_sk wsk1, + inv1.i_item_sk isk1, + inv1.d_moy dmoy1, + inv1.mean mean1, + inv1.cov cov1, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy=1 + AND inv2.d_moy=1+1 +ORDER BY inv1.w_warehouse_sk NULLS FIRST, + inv1.i_item_sk NULLS FIRST, + inv1.d_moy NULLS FIRST, + inv1.mean NULLS FIRST, + inv1.cov NULLS FIRST, + inv2.d_moy NULLS FIRST, + inv2.mean NULLS FIRST, + inv2.cov NULLS FIRST; +---- +1 65 1 329.25 1.292295365092 1 65 2 186 1.382894916645 +1 695 1 214 1.019427268721 1 695 2 333 1.336402693182 +1 765 1 289.75 1.212987105095 1 765 2 429 1.176863034422 +1 945 1 304 1.072576935922 1 945 2 364 1.309313105823 +1 1025 1 242.333333333333 1.20525094741 1 1025 2 269.75 1.308783172127 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q4.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q4.slt.no new file mode 100644 index 00000000000..f1d3845121a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q4.slt.no @@ -0,0 +1,124 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTT +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum(((ss_ext_list_price-ss_ext_wholesale_cost-ss_ext_discount_amt)+ss_ext_sales_price)/2) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((cs_ext_list_price-cs_ext_wholesale_cost-cs_ext_discount_amt)+cs_ext_sales_price)/2)) year_total, + 'c' sale_type + FROM customer, + catalog_sales, + date_dim + WHERE c_customer_sk = cs_bill_customer_sk + AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag, + c_birth_country customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + sum((((ws_ext_list_price-ws_ext_wholesale_cost-ws_ext_discount_amt)+ws_ext_sales_price)/2)) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001+1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001+1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END +ORDER BY t_s_secyear.customer_id NULLS FIRST, + t_s_secyear.customer_first_name NULLS FIRST, + t_s_secyear.customer_last_name NULLS FIRST, + t_s_secyear.customer_preferred_cust_flag NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q40.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q40.slt.no new file mode 100644 index 00000000000..7af8e2a7f88 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q40.slt.no @@ -0,0 +1,74 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRR +SELECT w_state, + i_item_id, + sum(CASE + WHEN (cast(d_date AS date) < CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_before, + sum(CASE + WHEN (cast(d_date AS date) >= CAST ('2000-03-11' AS date)) THEN cs_sales_price - coalesce(cr_refunded_cash,0) + ELSE 0 + END) AS sales_after +FROM catalog_sales +LEFT OUTER JOIN catalog_returns ON (cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) ,warehouse, + item, + date_dim +WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = cs_item_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND d_date BETWEEN CAST ('2000-02-10' AS date) AND CAST ('2000-04-10' AS date) +GROUP BY w_state, + i_item_id +ORDER BY w_state, + i_item_id +LIMIT 100; +---- +TN AAAAAAAAABDAAAAA 12.28 23.9 +TN AAAAAAAAAJCAAAAA 0 121.19 +TN AAAAAAAAAPBAAAAA 0 44.76 +TN AAAAAAAABKFAAAAA 238.3 20.22 +TN AAAAAAAACAAAAAAA 7.78 17.73 +TN AAAAAAAACBFAAAAA 17.27 220.95 +TN AAAAAAAACEEAAAAA 12.86 113.03 +TN AAAAAAAACFEAAAAA -3163.09 13.2 +TN AAAAAAAACLGAAAAA 0 66.56 +TN AAAAAAAACNFAAAAA 30.24 99.47 +TN AAAAAAAADEAAAAAA 357 0 +TN AAAAAAAADMBAAAAA 68.63 -13.91 +TN AAAAAAAAEFFAAAAA -73.34 -2738.43 +TN AAAAAAAAEKCAAAAA -75.59 84.82 +TN AAAAAAAAEMEAAAAA 0 108.2 +TN AAAAAAAAENDAAAAA -339.8 0 +TN AAAAAAAAEPDAAAAA -34.52 28.56 +TN AAAAAAAAFCGAAAAA 221.86 0 +TN AAAAAAAAFJFAAAAA 154.77 0 +TN AAAAAAAAGIGAAAAA 27.5 24.07 +TN AAAAAAAAGJFAAAAA 30.52 406.3 +TN AAAAAAAAGKGAAAAA 0 154.51 +TN AAAAAAAAGMBAAAAA 0 326.69 +TN AAAAAAAAGNBAAAAA 138.48 53.25 +TN AAAAAAAAHDAAAAAA 0 220.95 +TN AAAAAAAAHGDAAAAA 44.97 0 +TN AAAAAAAAHOEAAAAA 92.18 21.32 +TN AAAAAAAAJAEAAAAA 53.62 339.8 +TN AAAAAAAAKJAAAAAA 80.5 0 +TN AAAAAAAAMBAAAAAA 9.48 137.1 +TN AAAAAAAAMJCAAAAA 0 102.23 +TN AAAAAAAAMJEAAAAA 235.46 214.73 +TN AAAAAAAANEFAAAAA 0 -239.07 +TN AAAAAAAANGDAAAAA 240.25 43.14 +TN AAAAAAAANJGAAAAA 0 30.96 +TN AAAAAAAANNCAAAAA 195.54 47.16 +TN AAAAAAAAOEBAAAAA 129.5 -5001.15 +TN AAAAAAAAOFDAAAAA 37.64 46.01 +TN AAAAAAAAOGAAAAAA 0 -146.42 +TN AAAAAAAAOHEAAAAA 32.86 246.19 +TN AAAAAAAAOOEAAAAA 115.99 1.02 +TN AAAAAAAAPAEAAAAA 0 5.88 +TN AAAAAAAAPHDAAAAA 0 -173.75 +TN AAAAAAAAPKAAAAAA 13 -102.11 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q41.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q41.slt.no new file mode 100644 index 00000000000..1327f42da2a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q41.slt.no @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query T +SELECT distinct(i_product_name) +FROM item i1 +WHERE i_manufact_id BETWEEN 738 AND 738+40 + AND + (SELECT count(*) AS item_cnt + FROM item + WHERE (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'powder' + OR i_color = 'khaki') + AND (i_units = 'Ounce' + OR i_units = 'Oz') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'brown' + OR i_color = 'honeydew') + AND (i_units = 'Bunch' + OR i_units = 'Ton') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'floral' + OR i_color = 'deep') + AND (i_units = 'N/A' + OR i_units = 'Dozen') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'light' + OR i_color = 'cornflower') + AND (i_units = 'Box' + OR i_units = 'Pound') + AND (i_size = 'medium' + OR i_size = 'extra large')))) + OR (i_manufact = i1.i_manufact + AND ((i_category = 'Women' + AND (i_color = 'midnight' + OR i_color = 'snow') + AND (i_units = 'Pallet' + OR i_units = 'Gross') + AND (i_size = 'medium' + OR i_size = 'extra large')) + OR (i_category = 'Women' + AND (i_color = 'cyan' + OR i_color = 'papaya') + AND (i_units = 'Cup' + OR i_units = 'Dram') + AND (i_size = 'N/A' + OR i_size = 'small')) + OR (i_category = 'Men' + AND (i_color = 'orange' + OR i_color = 'frosted') + AND (i_units = 'Each' + OR i_units = 'Tbl') + AND (i_size = 'petite' + OR i_size = 'petite')) + OR (i_category = 'Men' + AND (i_color = 'forest' + OR i_color = 'ghost') + AND (i_units = 'Lb' + OR i_units = 'Bundle') + AND (i_size = 'medium' + OR i_size = 'extra large'))))) > 0 +ORDER BY i_product_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q42.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q42.slt.no new file mode 100644 index 00000000000..600a41f3aca --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q42.slt.no @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IITR +SELECT dt.d_year, + item.i_category_id, + item.i_category, + sum(ss_ext_sales_price) +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_category_id, + item.i_category +ORDER BY sum(ss_ext_sales_price) DESC,dt.d_year, + item.i_category_id, + item.i_category +LIMIT 100 ; +---- +2000 1 Women 63812.81 +2000 7 Home 62722.51 +2000 10 Electronics 50665.69 +2000 4 Shoes 22016.68 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q43.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q43.slt.no new file mode 100644 index 00000000000..dc1420d62aa --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q43.slt.no @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRRRRRR +SELECT s_store_name, + s_store_id, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales +FROM date_dim, + store_sales, + store +WHERE d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2000 +GROUP BY s_store_name, + s_store_id +ORDER BY s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +LIMIT 100; +---- +ought AAAAAAAABAAAAAAA 319804.54 296307.06 259842.94 273019.09 280288.93 307104.57 302928.29 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q44.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q44.slt.no new file mode 100644 index 00000000000..c3ca1bd34ab --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q44.slt.no @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITT +SELECT asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col ASC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V1)V11 + WHERE rnk < 11) asceding, + (SELECT * + FROM + (SELECT item_sk, + rank() OVER ( + ORDER BY rank_col DESC) rnk + FROM + (SELECT ss_item_sk item_sk, + avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING avg(ss_net_profit) > 0.9* + (SELECT avg(ss_net_profit) rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_addr_sk IS NULL + GROUP BY ss_store_sk))V2)V21 + WHERE rnk < 11) descending, + item i1, + item i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk=asceding.item_sk + AND i2.i_item_sk=descending.item_sk +ORDER BY asceding.rnk +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q45.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q45.slt.no new file mode 100644 index 00000000000..9691bd13a1c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q45.slt.no @@ -0,0 +1,70 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +SELECT ca_zip, + ca_city, + sum(ws_sales_price) +FROM web_sales, + customer, + customer_address, + date_dim, + item +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND (SUBSTRING(ca_zip,1,5) IN ('85669', + '86197', + '88274', + '83405', + '86475', + '85392', + '85460', + '80348', + '81792') + OR i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_item_sk IN (2, + 3, + 5, + 7, + 11, + 13, + 17, + 19, + 23, + 29) )) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2001 +GROUP BY ca_zip, + ca_city +ORDER BY ca_zip, + ca_city +LIMIT 100; +---- +23394 Florence 4.18 +23683 Plainview 203.23 +25752 Buena Vista 46.23 +26871 Wildwood 24.38 +26971 Wilson 6.48 +29843 Oakland 37.73 +31087 Macedonia 42.77 +41711 Unionville 39.36 +49843 Oakland 26.87 +51904 Midway 14.6 +54098 Woodlawn 3.85 +55124 Valley View 20.92 +56098 Five Points 93.57 +59858 Springtown 9.93 +60150 Bunker Hill 92.31 +62297 Freeman 10.94 +62808 Hamilton 70.32 +64107 Concord 1.91 +68339 Whitney 38.48 +69454 Highland 117.73 +71904 Midway 13.34 +76614 Providence 43.1 +NULL Waterloo 139.85 +NULL NULL 57.21 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q46.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q46.slt.no new file mode 100644 index 00000000000..18c78bd6435 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q46.slt.no @@ -0,0 +1,151 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIRR +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_coupon_amt) amt, + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_dow IN (6, + 0) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + ca_city NULLS FIRST, + bought_city NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +NULL NULL Buena Vista Glenwood 12284 2163.44 -3739.04 +NULL NULL Centerville Forest Hills 3520 0 -1631.59 +NULL NULL Crossroads Farmington 18934 0 -6281.06 +NULL NULL Five Forks Pleasant Valley 23455 6847.18 -1936.07 +NULL NULL Forest Hills Calhoun 22575 629.49 -1503.21 +NULL NULL Green Acres Newport 18435 0 -1666.8 +NULL NULL Hillcrest Mount Zion 7114 910.74 -9461.37 +NULL NULL La Grange Spring Hill 11043 930.4 -10220.99 +NULL NULL Lincoln Highland 634 2760.16 -16172.15 +NULL NULL New Hope Centerville 18350 1744.71 -435.66 +NULL NULL Newtown Fairfield 1911 607.52 -8326.91 +NULL NULL Red Hill Church Hill 8226 3762.91 -15562.55 +NULL NULL Red Hill Pine Grove 3820 570.14 -17150.79 +NULL NULL Richville Spring Hill 21507 490.1 -17662.54 +NULL NULL Riverview Glenwood 22782 14674.06 -9106.01 +NULL NULL Roy Oak Ridge 5622 2451.45 -4929.45 +NULL NULL Springdale Harmony 8257 3136.43 -10364.95 +NULL NULL Summerfield Glendale 16640 4954.16 -754.09 +NULL NULL Valley View Ashland 5867 68.91 -3174.13 +NULL Ada Pine Grove Omega 20115 1910.76 -7899.03 +NULL Amber Ellisville Mount Pleasant 13631 11191.03 -6131.58 +NULL Brenda Wildwood Lakewood 1459 2905.56 -610.21 +NULL Debbie Red Hill Franklin 214 1950.49 -9630.83 +NULL Fernando Union Hill Salem 14552 9876.31 -15483.65 +NULL James Georgetown Marion 23389 5862.88 -16131.8 +NULL Janet Springfield Brownsville 6476 201.12 425.51 +NULL Julia Wilson Oakland 6149 3014.08 -11906.59 +NULL Omar Forest Hills Springdale 8907 3059.08 -14898.65 +NULL Steven Millwood Jamestown 7076 0 -5335.22 +NULL Susanne Marion Jones 6196 1240.86 -20625.41 +NULL Timothy Five Points Cedar Grove 10707 1724.86 -6095.1 +NULL Timothy Woodland Mountain View 10813 1500.3 -5139.84 +NULL William Summit New Hope 14928 0 -18318.3 +Abbott Frederick Highland Enterprise 7247 7023.24 -10956.48 +Ackerman Ruth Brownsville Unionville 21518 4231.54 -10848.22 +Acosta Albert Kingston Bunker Hill 10218 1306.1 -8877.65 +Adair Kimberly Ferguson Newtown 6887 6230.72 -3373.41 +Adair Martin Highland Pine Grove 11922 2192.73 -7876.17 +Adams Bryan Waterloo Newtown 20839 12675 -18599.52 +Adkins Christopher Maple Grove Marion 23357 66.01 147.71 +Agee Susanne Roxbury Springfield 16207 566.53 -13045.38 +Aguilar Lorena Warwick Oak Grove 17579 0 -11029.4 +Ahmed David Sunnyside Shiloh 13064 413.19 -8728.65 +Akers James Lakeside Pleasant Hill 6418 0 -8187.62 +Albright Susan Lone Pine Jamestown 6815 508.72 -13905.25 +Albright Vincent Wright Newport 7278 1318.49 -3740.79 +Alexander Harry Liberty Bethel 491 831.42 6462.24 +Allen Mark Jamestown Crossroads 2988 3977.68 -11662.4 +Allred Jacob Springfield Pleasant Grove 19937 1719.34 -17046.91 +Alvarado Richard Lincoln Wilson 13536 1841.63 -5299 +Alvarez William Oakwood Union Hill 14638 499.81 -357.03 +Andrews Betty Oakwood Clifton 2955 172.17 -8043.76 +Andrews Jason New Hope Pleasant Grove 11684 1057.37 -7631.03 +Andrews Judith Mount Zion Springdale 7769 224.45 -8810.09 +Angel Flora Newport Oakland 22029 192.51 -4401.51 +Armstrong Kraig Pleasant Hill Newport 18363 188.32 -6656.84 +Arnold Xiomara Lakeview Enterprise 22713 3371.3 -18443.42 +Arthur Nancy Spring Valley Pleasant Valley 1023 2010.2 -9959.13 +Bailey Margie Lakeside Fox 8684 114.97 -17117.78 +Bailey Monica Jackson Pleasant Grove 17159 2721.44 -4088.51 +Baird Maryellen Highland Park Forest Hills 10556 3456.31 -20467.73 +Baker Micheal Springdale Midway 6000 2042.61 -3990.39 +Baldwin Laura Red Hill Arlington 18402 2022 -13553.2 +Banks Raul Lakeview Hamilton 16201 232.65 -3575.46 +Banks Sean Maple Grove Brookwood 13592 5045.77 -6741.75 +Barba William Providence Valley View 113 851.2 -10378.29 +Barnes Janie Fairfield Sulphur Springs 2717 673.94 -9185.13 +Barnes Joseph Crossroads Newtown 1346 0 -274.31 +Barnes June Sulphur Springs Bunker Hill 14593 3248.21 -5962.1 +Barrett Amy Lakeview Pleasant Hill 142 1055.09 -16700.22 +Barrett Bree Brownsville Fairview 23279 0 -9152.08 +Barrett Bree Brownsville White Oak 20932 528.31 -14848.87 +Barrett Manuel Walnut Grove Oak Grove 820 570.84 -11833.63 +Barton Sharon Oak Ridge Greenwood 12022 909.08 -14795.03 +Bassett Rhonda Oakwood Greenwood 10931 1797.99 -24692.83 +Battles Leon Midway Woodlawn 6589 1200.28 -6963.48 +Beatty Margie Five Forks Mount Vernon 13799 367.9 -8157.69 +Beatty Michael Green Acres Mount Vernon 3941 1916.94 -9487.78 +Beaulieu Randy Bridgeport Jamestown 20245 2618.65 -10946.51 +Beck Charles Oakdale Fairfield 3561 445.34 -22623.89 +Becker Freda Brownsville Kingston 12264 4369.86 -6501.12 +Bell Lorrie Union Stringtown 1399 733.85 -10333.35 +Bell Walter Langdon Liberty 16574 3553.28 -8663.36 +Belt NULL Unionville Pleasant Hill 12303 0 -5524 +Bennett Grant Newport Ellsworth 20005 5586.25 -9452.98 +Bennett Zack Wilson Liberty 16030 99.46 -2187.16 +Berg William Pleasant Hill Harmony 3728 3725.08 -9496.92 +Bernhardt Sanford Green Acres Fairfield 21871 974.9 -8991.77 +Berry Gary Jackson Cedar Grove 20851 2698.25 -16539.56 +Bess Leah Maple Grove Arlington 21092 1309.71 -9879 +Betz Adriene Union Welcome 8185 328.05 -9963.52 +Billings Dorothy Brownsville Green Acres 6074 551.62 -10045.52 +Billings Dorothy Brownsville Wilson 9167 1987.15 -3076.21 +Billingsley Robert Belmont Arlington 23527 1487.14 -3309.37 +Bills Robert Bethel Jamestown 15677 0 3983.27 +Bishop NULL New Hope Lakeview 11334 980.68 -9870.02 +Black Annmarie Allentown Pine Grove 11633 154.78 -5899.95 +Blackburn Mildred Sulphur Springs Marion 21601 612.14 -22218.57 +Blanchard Phillip Pine Grove Centerville 3681 5001.25 -9739.55 +Blankenship George Hillcrest Mount Vernon 9480 4370.75 -129.34 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q47.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q47.slt.no new file mode 100644 index 00000000000..1923c84a323 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q47.slt.no @@ -0,0 +1,176 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIIRRRR +WITH v1 AS + (SELECT i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + s_store_name, + s_company_name + ORDER BY d_year, + d_moy) rn + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.s_store_name, + v1.s_company_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 +LIMIT 100; +---- +Shoes edu packedu pack #1 ought Unknown 1999 5 4116.620833333333 1721.48 2369.4 1917.82 +Shoes edu packedu pack #1 ought Unknown 1999 6 4116.620833333333 1917.82 1721.48 2444.59 +Shoes exportiedu pack #1 ought Unknown 1999 7 3576.660833333333 1508.8 2037.73 4505.32 +Women edu packamalg #1 ought Unknown 1999 2 3033.499166666666 978.11 2013.85 1677.02 +Shoes exportiedu pack #1 ought Unknown 1999 5 3576.660833333333 1604.87 2728.68 2037.73 +Music amalgscholar #1 ought Unknown 1999 3 3433.143333333333 1469.95 1713.01 2433.38 +Men edu packimporto #1 ought Unknown 1999 3 3302.805 1377.07 1878.55 1780.09 +Shoes exportiedu pack #1 ought Unknown 1999 2 3576.660833333333 1776.8 2307.4 1878.08 +Women exportiamalg #1 ought Unknown 1999 2 2732.193333333333 970.66 2187.1 1793.52 +Shoes edu packedu pack #1 ought Unknown 1999 4 4116.620833333333 2369.4 2400.75 1721.48 +Music amalgscholar #1 ought Unknown 1999 2 3433.143333333333 1713.01 1765.61 1469.95 +Shoes edu packedu pack #1 ought Unknown 1999 3 4116.620833333333 2400.75 2553.31 2369.4 +Men edu packimporto #1 ought Unknown 1999 7 3302.805 1594.86 1958.97 4395.44 +Shoes exportiedu pack #1 ought Unknown 1999 3 3576.660833333333 1878.08 1776.8 2728.68 +Men exportiimporto #1 ought Unknown 1999 7 3163.518333333333 1478.39 1963.11 3334.39 +Shoes edu packedu pack #1 ought Unknown 1999 7 4116.620833333333 2444.59 1917.82 4874.96 +Music amalgscholar #1 ought Unknown 1999 5 3433.143333333333 1763.16 2433.38 2452.53 +Music amalgscholar #1 ought Unknown 1999 1 3433.143333333333 1765.61 5555.25 1713.01 +Music amalgscholar #1 ought Unknown 1999 7 3433.143333333333 1839.5 2452.53 5068.03 +Shoes edu packedu pack #1 ought Unknown 1999 2 4116.620833333333 2553.31 3507.08 2400.75 +Women edu packamalg #1 ought Unknown 1999 6 3033.499166666666 1473.18 1779.46 1934.87 +Shoes exportiedu pack #1 ought Unknown 1999 6 3576.660833333333 2037.73 1604.87 1508.8 +Men amalgimporto #1 ought Unknown 1999 3 2364.726666666666 838.7 1096.16 2047.58 +Men edu packimporto #1 ought Unknown 1999 4 3302.805 1780.09 1377.07 2634.25 +Women exportiamalg #1 ought Unknown 1999 7 2732.193333333333 1212.39 1698.72 3133.82 +Children edu packexporti #1 ought Unknown 1999 6 2566.9225 1068.37 1125.06 1363.64 +Women importoamalg #1 ought Unknown 1999 4 3121.743333333333 1631.76 1743.6 1682.46 +Women amalgamalg #1 ought Unknown 1999 3 2408.735833333333 923.47 1422.83 1540.59 +Women importoamalg #2 ought Unknown 1999 6 1954.251666666667 478.71 1463.55 990.28 +Children exportiexporti #1 ought Unknown 1999 1 3373.075 1917.84 6975.77 1968.22 +Children edu packexporti #1 ought Unknown 1999 5 2566.9225 1125.06 1966.28 1068.37 +Women importoamalg #1 ought Unknown 1999 5 3121.743333333333 1682.46 1631.76 2201.32 +Women amalgamalg #1 ought Unknown 1999 6 2408.735833333333 982.71 1184.1 1448.62 +Men edu packimporto #1 ought Unknown 1999 2 3302.805 1878.55 1919.78 1377.07 +Children exportiexporti #1 ought Unknown 1999 5 3373.075 1953.17 2256.46 2017.46 +Children exportiexporti #1 ought Unknown 1999 2 3373.075 1968.22 1917.84 2068.39 +Women importoamalg #1 ought Unknown 1999 2 3121.743333333333 1721.46 1919.41 1743.6 +Women importoamalg #1 ought Unknown 1999 7 3121.743333333333 1734.86 2201.32 3340.17 +Men edu packimporto #1 ought Unknown 1999 1 3302.805 1919.78 8109.4 1878.55 +Music exportischolar #1 ought Unknown 1999 6 1677.065833333333 298.64 498.07 697.1 +Women importoamalg #1 ought Unknown 1999 3 3121.743333333333 1743.6 1721.46 1631.76 +Music exportischolar #2 ought Unknown 1999 5 2284.681666666667 909.79 1529.36 1574.62 +Women edu packamalg #1 ought Unknown 1999 3 3033.499166666666 1677.02 978.11 2034.4 +Children exportiexporti #1 ought Unknown 1999 6 3373.075 2017.46 1953.17 2039.09 +Men edu packimporto #1 ought Unknown 1999 6 3302.805 1958.97 2634.25 1594.86 +Children exportiexporti #1 ought Unknown 1999 7 3373.075 2039.09 2017.46 4046.08 +Women exportiamalg #1 ought Unknown 1999 5 2732.193333333333 1401.28 1658.5 1698.72 +Children edu packexporti #1 ought Unknown 1999 2 2566.9225 1240.8 1784.55 1627.55 +Music importoscholar #1 ought Unknown 1999 6 2711.780833333333 1390.45 1593.37 1570.65 +Men amalgimporto #1 ought Unknown 1999 7 2364.726666666666 1044.63 1255.98 3330.93 +Music importoscholar #1 ought Unknown 1999 2 2711.780833333333 1399.2 2164.06 1502.8 +Men exportiimporto #1 ought Unknown 1999 1 3163.518333333333 1853.46 6222.76 1970.72 +Children exportiexporti #1 ought Unknown 1999 3 3373.075 2068.39 1968.22 2256.46 +Music exportischolar #2 ought Unknown 1999 7 2284.681666666667 1011.37 1574.62 2878.51 +Shoes exportiedu pack #1 ought Unknown 1999 1 3576.660833333333 2307.4 7847.32 1776.8 +Men amalgimporto #1 ought Unknown 1999 2 2364.726666666666 1096.16 1751.52 838.7 +Children importoexporti #1 ought Unknown 1999 7 2470.683333333333 1203.14 1669.02 3717.92 +Children importoexporti #1 ought Unknown 1999 4 2470.683333333333 1208.04 1407.82 1731.31 +Women edu packamalg #1 ought Unknown 1999 5 3033.499166666666 1779.46 2034.4 1473.18 +Shoes importoedu pack #1 ought Unknown 1999 5 2246.6575 995.49 1242.45 1203.31 +Shoes amalgedu pack #1 ought Unknown 1999 6 2763.523333333334 1518.47 1609.16 1742.8 +Shoes importoedu pack #1 ought Unknown 1999 2 2246.6575 1006.72 1629.79 1074.01 +Music exportischolar #2 ought Unknown 1999 2 2284.681666666667 1046.7 2083.06 1254.12 +Children amalgexporti #1 ought Unknown 1999 2 1834.265833333333 596.49 1197.67 641.06 +Men importoimporto #1 ought Unknown 1999 7 2423.258333333333 1188.25 1549.04 2064.33 +Men exportiimporto #1 ought Unknown 1999 3 3163.518333333333 1929.66 1970.72 2080.29 +Women amalgamalg #1 ought Unknown 1999 5 2408.735833333333 1184.1 1540.59 982.71 +Men edu packimporto #2 ought Unknown 1999 7 1813.949166666667 594.63 1431.23 2420.18 +Music importoscholar #1 ought Unknown 1999 3 2711.780833333333 1502.8 1399.2 1508.86 +Children edu packexporti #1 ought Unknown 1999 7 2566.9225 1363.64 1068.37 2655.88 +Music importoscholar #1 ought Unknown 1999 4 2711.780833333333 1508.86 1502.8 1593.37 +Women importoamalg #1 ought Unknown 1999 1 3121.743333333333 1919.41 7169.52 1721.46 +Men exportiimporto #1 ought Unknown 1999 6 3163.518333333333 1963.11 2061.87 1478.39 +Shoes amalgedu pack #1 ought Unknown 1999 3 2763.523333333334 1565.92 1795.98 2113.68 +Children amalgexporti #1 ought Unknown 1999 3 1834.265833333333 641.06 596.49 1396.79 +Men exportiimporto #1 ought Unknown 1999 2 3163.518333333333 1970.72 1853.46 1929.66 +Music exportischolar #1 ought Unknown 1999 5 1677.065833333333 498.07 756.28 298.64 +Shoes importoedu pack #1 ought Unknown 1999 3 2246.6575 1074.01 1006.72 1242.45 +Shoes amalgedu pack #1 ought Unknown 1999 5 2763.523333333334 1609.16 2113.68 1518.47 +Music importoscholar #1 ought Unknown 1999 7 2711.780833333333 1570.65 1390.45 3848.81 +Children amalgexporti #2 ought Unknown 1999 2 1976.9325 846.17 1902.25 1334.69 +Music importoscholar #1 ought Unknown 1999 5 2711.780833333333 1593.37 1508.86 1390.45 +Children exportiexporti #1 ought Unknown 1999 4 3373.075 2256.46 2068.39 1953.17 +Men amalgimporto #1 ought Unknown 1999 6 2364.726666666666 1255.98 1558.69 1044.63 +Men exportiimporto #1 ought Unknown 1999 5 3163.518333333333 2061.87 2080.29 1963.11 +Women edu packamalg #1 ought Unknown 1999 7 3033.499166666666 1934.87 1473.18 3521.29 +Men exportiimporto #1 ought Unknown 1999 4 3163.518333333333 2080.29 1929.66 2061.87 +Women exportiamalg #1 ought Unknown 1999 4 2732.193333333333 1658.5 1793.52 1401.28 +Children importoexporti #1 ought Unknown 1999 3 2470.683333333333 1407.82 1465.6 1208.04 +Women amalgamalg #1 ought Unknown 1999 1 2408.735833333333 1354.43 4142.88 1422.83 +Shoes importoedu pack #1 ought Unknown 1999 6 2246.6575 1203.31 995.49 1464.63 +Women exportiamalg #2 ought Unknown 1999 7 1477.330833333333 440.05 624.12 1584.91 +Women exportiamalg #1 ought Unknown 1999 6 2732.193333333333 1698.72 1401.28 1212.39 +Music exportischolar #2 ought Unknown 1999 3 2284.681666666667 1254.12 1046.7 1529.36 +Shoes amalgedu pack #1 ought Unknown 1999 7 2763.523333333334 1742.8 1518.47 3530.24 +Women edu packamalg #1 ought Unknown 1999 1 3033.499166666666 2013.85 5132.85 978.11 +Men importoimporto #1 ought Unknown 1999 3 2423.258333333333 1406.02 1507.7 1893.82 +Men importoimporto #1 ought Unknown 1999 5 2423.258333333333 1411.01 1893.82 1549.04 +Women importoamalg #2 ought Unknown 1999 2 1954.251666666667 942.06 1360.69 1183.95 +Children importoexporti #1 ought Unknown 1999 2 2470.683333333333 1465.6 1770.51 1407.82 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q48.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q48.slt.no new file mode 100644 index 00000000000..35ebec4a3bc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q48.slt.no @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT SUM (ss_quantity) +FROM store_sales, + store, + customer_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2000 + AND ((cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = '4 yr Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00) + OR (cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND ss_sales_price BETWEEN 150.00 AND 200.00)) + AND ((ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('CO', + 'OH', + 'TX') + AND ss_net_profit BETWEEN 0 AND 2000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('OR', + 'MN', + 'KY') + AND ss_net_profit BETWEEN 150 AND 3000) + OR (ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ('VA', + 'CA', + 'MS') + AND ss_net_profit BETWEEN 50 AND 25000)) ; +---- +2228 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q49.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q49.slt.no new file mode 100644 index 00000000000..02842828b92 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q49.slt.no @@ -0,0 +1,108 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRII +SELECT channel, + item, + return_ratio, + return_rank, + currency_rank +FROM + (SELECT 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT ws.ws_item_sk AS item, + (cast(sum(coalesce(wr.wr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(wr.wr_return_amt,0)) AS decimal(15,4))/ cast(sum(coalesce(ws.ws_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM web_sales ws + LEFT OUTER JOIN web_returns wr ON (ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk) ,date_dim + WHERE wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY ws.ws_item_sk) in_web) web + WHERE (web.return_rank <= 10 + OR web.currency_rank <= 10) + UNION SELECT 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT cs.cs_item_sk AS item, + (cast(sum(coalesce(cr.cr_return_quantity,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(cr.cr_return_amount,0)) AS decimal(15,4))/ cast(sum(coalesce(cs.cs_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM catalog_sales cs + LEFT OUTER JOIN catalog_returns cr ON (cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk) ,date_dim + WHERE cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY cs.cs_item_sk) in_cat) CATALOG + WHERE (catalog.return_rank <= 10 + OR catalog.currency_rank <=10) + UNION SELECT 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank + FROM + (SELECT item, + return_ratio, + currency_ratio, + rank() OVER ( + ORDER BY return_ratio) AS return_rank, + rank() OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM + (SELECT sts.ss_item_sk AS item, + (cast(sum(coalesce(sr.sr_return_quantity,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) AS decimal(15,4))) AS return_ratio, + (cast(sum(coalesce(sr.sr_return_amt,0)) AS decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) AS decimal(15,4))) AS currency_ratio + FROM store_sales sts + LEFT OUTER JOIN store_returns sr ON (sts.ss_ticket_number = sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk) ,date_dim + WHERE sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 12 + GROUP BY sts.ss_item_sk) in_store) store + WHERE (store.return_rank <= 10 + OR store.currency_rank <= 10) ) sq1 +ORDER BY 1 NULLS FIRST, + 4 NULLS FIRST, + 5 NULLS FIRST, + 2 NULLS FIRST +LIMIT 100; +---- +web 1611 0.752808988764 1 2 +web 1045 0.794871794872 2 1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q5.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q5.slt.no new file mode 100644 index 00000000000..72ed2fc2350 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q5.slt.no @@ -0,0 +1,217 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRR +WITH ssr AS + (SELECT s_store_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM store_sales + UNION ALL SELECT sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns ) salesreturns, + date_dim, + store + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND store_sk = s_store_sk + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM catalog_sales + UNION ALL SELECT cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns ) salesreturns, + date_dim, + catalog_page + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns_, + sum(net_loss) AS profit_loss + FROM + (SELECT ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM web_sales + UNION ALL SELECT ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN web_sales ON (wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) ) salesreturns, + date_dim, + web_site + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-06' AS date) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', s_store_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', cp_catalog_page_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +NULL NULL 11618746.33 335308.14 -3094720.61 +catalog channel NULL 3925834.42 104776.72 -421650.05 +catalog channel catalog_pageAAAAAAAAAAABAAAA 19041.32 0 786.73 +catalog channel catalog_pageAAAAAAAAABABAAAA 24914.16 0 5846.18 +catalog channel catalog_pageAAAAAAAAACABAAAA 2281.94 0 259.4 +catalog channel catalog_pageAAAAAAAAADABAAAA 8359.08 0 1573.58 +catalog channel catalog_pageAAAAAAAAADCBAAAA 6364.16 0 -2059.39 +catalog channel catalog_pageAAAAAAAAAEABAAAA 1933.55 0 -421.15 +catalog channel catalog_pageAAAAAAAAAECBAAAA 31132.37 0 8356.46 +catalog channel catalog_pageAAAAAAAAAEPAAAAA 0 687.28 -90.55 +catalog channel catalog_pageAAAAAAAAAFABAAAA 4682.13 0 1082.62 +catalog channel catalog_pageAAAAAAAAAGABAAAA 9036.58 0 -1453.81 +catalog channel catalog_pageAAAAAAAAAGCBAAAA 8079.39 0 -426.98 +catalog channel catalog_pageAAAAAAAAAHABAAAA 6183.42 0 -4382.22 +catalog channel catalog_pageAAAAAAAAAHCBAAAA 5076.12 0 -2793.16 +catalog channel catalog_pageAAAAAAAAAICBAAAA 2534.76 0 -464.74 +catalog channel catalog_pageAAAAAAAAAIPAAAAA 0 524.46 -83.78 +catalog channel catalog_pageAAAAAAAAAJCBAAAA 17905.31 0 2331.19 +catalog channel catalog_pageAAAAAAAAAKCBAAAA 1214.1 0 161.02 +catalog channel catalog_pageAAAAAAAAAKPAAAAA 9795.94 0 -5795.1 +catalog channel catalog_pageAAAAAAAAALPAAAAA 16689.97 0 377.9 +catalog channel catalog_pageAAAAAAAAAMPAAAAA 10628.34 0 -603.7 +catalog channel catalog_pageAAAAAAAAANPAAAAA 30027.4 0 11398.77 +catalog channel catalog_pageAAAAAAAAAOCBAAAA 39.3 0 1.07 +catalog channel catalog_pageAAAAAAAAAOPAAAAA 11614.92 0 2812.21 +catalog channel catalog_pageAAAAAAAAAPPAAAAA 21830.23 0 572.31 +catalog channel catalog_pageAAAAAAAABAABAAAA 10333.03 0 -1079.35 +catalog channel catalog_pageAAAAAAAABBABAAAA 14158.73 0 -9230.46 +catalog channel catalog_pageAAAAAAAABCABAAAA 16263.06 0 10433.19 +catalog channel catalog_pageAAAAAAAABDABAAAA 1142.62 0 -296.6 +catalog channel catalog_pageAAAAAAAABDCBAAAA 15960.27 0 7504.69 +catalog channel catalog_pageAAAAAAAABEABAAAA 6800.34 0 188.15 +catalog channel catalog_pageAAAAAAAABECBAAAA 4269.87 0 -917.17 +catalog channel catalog_pageAAAAAAAABFABAAAA 17333 0 -5799.62 +catalog channel catalog_pageAAAAAAAABFCBAAAA 17544.18 0 3644.23 +catalog channel catalog_pageAAAAAAAABGABAAAA 3569.18 0 -2464.68 +catalog channel catalog_pageAAAAAAAABGCBAAAA 10638.65 0 1393.77 +catalog channel catalog_pageAAAAAAAABHABAAAA 4545.92 0 -3475.53 +catalog channel catalog_pageAAAAAAAABHCBAAAA 10491.72 0 -950.58 +catalog channel catalog_pageAAAAAAAABHPAAAAA 0 90.9 -124.21 +catalog channel catalog_pageAAAAAAAABICBAAAA 2761.48 0 -2686.99 +catalog channel catalog_pageAAAAAAAABKPAAAAA 61735.94 0 15875.5 +catalog channel catalog_pageAAAAAAAABLPAAAAA 8065.81 0 2076.66 +catalog channel catalog_pageAAAAAAAABMCBAAAA 350.03 0 -656.75 +catalog channel catalog_pageAAAAAAAABMPAAAAA 17851.64 0 -5809.59 +catalog channel catalog_pageAAAAAAAABNPAAAAA 31048.77 0 -1224.41 +catalog channel catalog_pageAAAAAAAABOPAAAAA 14341.52 0 -3787.71 +catalog channel catalog_pageAAAAAAAABPPAAAAA 4317.54 0 -1427.57 +catalog channel catalog_pageAAAAAAAACAABAAAA 28325.05 0 -2920.19 +catalog channel catalog_pageAAAAAAAACBABAAAA 5077.04 0 -3077.25 +catalog channel catalog_pageAAAAAAAACCABAAAA 13372.36 0 3119.5 +catalog channel catalog_pageAAAAAAAACDABAAAA 120.72 0 -1.98 +catalog channel catalog_pageAAAAAAAACDCBAAAA 20966.76 0 3090.22 +catalog channel catalog_pageAAAAAAAACDPAAAAA 0 1629.11 -253.45 +catalog channel catalog_pageAAAAAAAACEABAAAA 23166.99 0 -3952.97 +catalog channel catalog_pageAAAAAAAACECBAAAA 2210.4 0 -1749.84 +catalog channel catalog_pageAAAAAAAACFABAAAA 2075.35 0 -7759.16 +catalog channel catalog_pageAAAAAAAACFCBAAAA 4374.82 0 -1421.11 +catalog channel catalog_pageAAAAAAAACFPAAAAA 0 731.49 -3423.57 +catalog channel catalog_pageAAAAAAAACGABAAAA 8876.43 0 -5260.38 +catalog channel catalog_pageAAAAAAAACGCBAAAA 11264.35 0 3239.43 +catalog channel catalog_pageAAAAAAAACHABAAAA 17592.86 0 3030.78 +catalog channel catalog_pageAAAAAAAACHCBAAAA 16196.02 0 -1218.99 +catalog channel catalog_pageAAAAAAAACICBAAAA 22293.71 0 2662.41 +catalog channel catalog_pageAAAAAAAACJPAAAAA 0 6565.74 -4179.85 +catalog channel catalog_pageAAAAAAAACKCBAAAA 6928.74 0 -4736.07 +catalog channel catalog_pageAAAAAAAACKPAAAAA 41882.94 0 13233.79 +catalog channel catalog_pageAAAAAAAACLPAAAAA 16274.85 0 2433.61 +catalog channel catalog_pageAAAAAAAACMPAAAAA 10852.57 0 -7085.55 +catalog channel catalog_pageAAAAAAAACNPAAAAA 2411.46 0 -3739.11 +catalog channel catalog_pageAAAAAAAACOPAAAAA 32284.54 0 2879.38 +catalog channel catalog_pageAAAAAAAACPCBAAAA 318.16 0 -20.4 +catalog channel catalog_pageAAAAAAAACPPAAAAA 11701.87 0 -5867.55 +catalog channel catalog_pageAAAAAAAADAABAAAA 24931.08 0 1426.83 +catalog channel catalog_pageAAAAAAAADBABAAAA 9594.86 0 -518.2 +catalog channel catalog_pageAAAAAAAADCABAAAA 15377.34 58.03 -2918.95 +catalog channel catalog_pageAAAAAAAADDABAAAA 12528.64 0 -421.01 +catalog channel catalog_pageAAAAAAAADDCBAAAA 37455.23 0 5941.27 +catalog channel catalog_pageAAAAAAAADEABAAAA 9715.66 0 -1874.75 +catalog channel catalog_pageAAAAAAAADECBAAAA 13320.53 0 -6875.03 +catalog channel catalog_pageAAAAAAAADEPAAAAA 0 22.06 -67.03 +catalog channel catalog_pageAAAAAAAADFABAAAA 5344.35 0 -3327.34 +catalog channel catalog_pageAAAAAAAADFCBAAAA 3625.94 0 -793.44 +catalog channel catalog_pageAAAAAAAADGABAAAA 2487.37 0 -385.86 +catalog channel catalog_pageAAAAAAAADGCBAAAA 25529.88 0 2663.32 +catalog channel catalog_pageAAAAAAAADGPAAAAA 0 280.98 -270.78 +catalog channel catalog_pageAAAAAAAADHCBAAAA 2320.32 0 -2316.33 +catalog channel catalog_pageAAAAAAAADIABAAAA 0 65.6 -160.26 +catalog channel catalog_pageAAAAAAAADKBBAAAA 0 923 -466.68 +catalog channel catalog_pageAAAAAAAADKPAAAAA 37915.38 0 -13878.49 +catalog channel catalog_pageAAAAAAAADLPAAAAA 15887.66 18.34 -7221.75 +catalog channel catalog_pageAAAAAAAADMPAAAAA 24718.9 0 11298.15 +catalog channel catalog_pageAAAAAAAADNPAAAAA 4510.47 0 -2994.1 +catalog channel catalog_pageAAAAAAAADOPAAAAA 8265.19 0 -9211.97 +catalog channel catalog_pageAAAAAAAADPPAAAAA 23616.45 0 2778.88 +catalog channel catalog_pageAAAAAAAAEAABAAAA 9445.49 0 -8841.54 +catalog channel catalog_pageAAAAAAAAECABAAAA 11286.92 0 -133.46 +catalog channel catalog_pageAAAAAAAAEDABAAAA 9809.72 0 -2466.53 +catalog channel catalog_pageAAAAAAAAEDCBAAAA 2753.49 0 -682.37 +catalog channel catalog_pageAAAAAAAAEEABAAAA 2632.59 0 -1747.48 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q50.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q50.slt.no new file mode 100644 index 00000000000..668783726c6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q50.slt.no @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TITTTTTTTTIIIII +SELECT s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 30) + AND (sr_returned_date_sk - ss_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 60) + AND (sr_returned_date_sk - ss_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 90) + AND (sr_returned_date_sk - ss_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM store_sales, + store_returns, + store, + date_dim d1, + date_dim d2 +WHERE d2.d_year = 2001 + AND d2.d_moy = 8 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +ORDER BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +LIMIT 100; +---- +ought 1 767 Spring Wy Suite 250 Midway Williamson County TN 31904 43 29 27 28 65 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q51.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q51.slt.no new file mode 100644 index 00000000000..ba567eb8ca6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q51.slt.no @@ -0,0 +1,157 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IDRRRR +WITH web_v1 AS + (SELECT ws_item_sk item_sk, + d_date, + sum(sum(ws_sales_price)) OVER (PARTITION BY ws_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM web_sales, + date_dim + WHERE ws_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, + d_date), + store_v1 AS + (SELECT ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) OVER (PARTITION BY ss_item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) cume_sales + FROM store_sales, + date_dim + WHERE ss_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, + d_date) +SELECT * +FROM + (SELECT item_sk, + d_date, + web_sales, + store_sales, + max(web_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) web_cumulative, + max(store_sales) OVER (PARTITION BY item_sk + ORDER BY d_date ROWS BETWEEN unbounded preceding AND CURRENT ROW) store_cumulative + FROM + (SELECT CASE + WHEN web.item_sk IS NOT NULL THEN web.item_sk + ELSE store.item_sk + END item_sk, + CASE + WHEN web.d_date IS NOT NULL THEN web.d_date + ELSE store.d_date + END d_date, + web.cume_sales web_sales, + store.cume_sales store_sales + FROM web_v1 web + FULL OUTER JOIN store_v1 store ON (web.item_sk = store.item_sk + AND web.d_date = store.d_date))x)y +WHERE web_cumulative > store_cumulative +ORDER BY item_sk NULLS FIRST, + d_date NULLS FIRST +LIMIT 100; +---- +5 2000-01-02 34.56 3.12 34.56 3.12 +5 2000-02-04 92.33 NULL 92.33 87.34 +5 2000-02-05 NULL 88.83 92.33 88.83 +11 2000-01-14 57.01 NULL 57.01 27.93 +11 2000-01-24 NULL 50.73 57.01 50.73 +13 2000-01-28 106.42 NULL 106.42 78.55 +13 2000-02-06 NULL 80.5 106.42 80.5 +17 2000-02-06 174.48 NULL 174.48 144.29 +17 2000-02-20 NULL 154.31 174.48 154.31 +17 2000-03-24 216.03 NULL 216.03 175.91 +17 2000-05-04 381.01 NULL 381.01 368.39 +17 2000-05-07 NULL 373.24 381.01 373.24 +17 2000-05-25 452.94 NULL 452.94 442.35 +23 2000-01-07 78.61 50.82 78.61 50.82 +23 2000-01-12 112.57 NULL 112.57 110.42 +23 2000-04-15 593.4 NULL 593.4 555.79 +23 2000-04-22 NULL 575.51 593.4 575.51 +23 2000-04-29 NULL 581.5 593.4 581.5 +23 2000-05-07 NULL 582.64 593.4 582.64 +23 2000-07-07 690.04 NULL 690.04 686.19 +23 2000-07-15 716.74 NULL 716.74 693.31 +25 2000-01-10 21.54 NULL 21.54 1.52 +25 2000-01-16 47.36 NULL 47.36 44.52 +26 2000-02-24 215.76 NULL 215.76 190.91 +26 2000-03-12 NULL 215.29 215.76 215.29 +26 2000-03-16 228.25 NULL 228.25 215.29 +29 2000-01-06 28.2 NULL 28.2 4.69 +29 2000-02-11 129.05 NULL 129.05 122.15 +29 2000-06-01 300.61 NULL 300.61 243.26 +29 2000-06-03 NULL 247.35 300.61 247.35 +29 2000-06-07 NULL 266.58 300.61 266.58 +29 2000-06-19 307.69 NULL 307.69 266.58 +31 2000-01-18 NULL 19.41 79.75 19.41 +32 2000-02-07 264.42 NULL 264.42 222.72 +32 2000-02-13 NULL 230.26 264.42 230.26 +32 2000-02-22 NULL 236.68 264.42 236.68 +35 2000-01-07 NULL 0 121.18 0 +35 2000-01-21 NULL 8.71 121.18 8.71 +35 2000-01-27 NULL 22.01 121.18 22.01 +35 2000-02-09 210.74 NULL 210.74 22.01 +35 2000-02-16 NULL 31.03 210.74 31.03 +35 2000-02-26 NULL 31.03 210.74 31.03 +35 2000-04-02 NULL 114.38 210.74 114.38 +35 2000-04-12 212.61 NULL 212.61 114.38 +35 2000-04-13 NULL 211.83 212.61 211.83 +35 2000-04-14 215.09 NULL 215.09 211.83 +35 2000-05-01 259.49 NULL 259.49 211.83 +35 2000-05-04 311.2 NULL 311.2 211.83 +35 2000-05-25 NULL 247.47 311.2 247.47 +35 2000-06-10 NULL 262.86 311.2 262.86 +35 2000-06-12 NULL 305.71 311.2 305.71 +35 2000-06-14 NULL 309.77 311.2 309.77 +35 2000-06-30 312.49 NULL 312.49 309.77 +35 2000-07-04 323.04 NULL 323.04 309.77 +37 2000-08-13 858.02 NULL 858.02 779.45 +37 2000-08-14 NULL 829.33 858.02 829.33 +38 2000-01-07 NULL 65.55 157.21 65.55 +38 2000-01-21 NULL 124.08 157.21 124.08 +40 2000-01-01 15.27 7.76 15.27 7.76 +47 2000-01-23 97.3 NULL 97.3 66.81 +47 2000-02-11 153 NULL 153 105.63 +47 2000-02-12 NULL 134.01 153 134.01 +47 2000-02-20 228.29 NULL 228.29 177.38 +47 2000-02-24 NULL 204.18 228.29 204.18 +47 2000-03-09 NULL 210.79 228.29 210.79 +47 2000-03-15 NULL 217.79 228.29 217.79 +47 2000-04-12 374.07 NULL 374.07 247.83 +47 2000-04-15 NULL 250.95 374.07 250.95 +47 2000-05-04 605.14 NULL 605.14 250.95 +47 2000-05-06 NULL 268.65 605.14 268.65 +47 2000-05-13 605.58 NULL 605.58 268.65 +47 2000-05-23 NULL 323.47 605.58 323.47 +47 2000-05-26 NULL 374.86 605.58 374.86 +47 2000-06-09 702.15 NULL 702.15 374.86 +47 2000-06-10 NULL 390.61 702.15 390.61 +47 2000-06-14 NULL 462.33 702.15 462.33 +47 2000-06-16 NULL 475.43 702.15 475.43 +47 2000-07-03 746.74 NULL 746.74 475.43 +47 2000-07-08 NULL 485.8 746.74 485.8 +47 2000-07-21 767.24 NULL 767.24 485.8 +47 2000-07-31 NULL 507.76 767.24 507.76 +47 2000-08-16 NULL 570.59 767.24 570.59 +47 2000-08-18 NULL 581.02 767.24 581.02 +47 2000-08-21 NULL 582.57 767.24 582.57 +47 2000-08-24 NULL 603.68 767.24 603.68 +47 2000-08-25 NULL 656.61 767.24 656.61 +47 2000-09-02 NULL 664.03 767.24 664.03 +47 2000-09-03 NULL 675.81 767.24 675.81 +47 2000-09-08 1035.38 779.45 1035.38 779.45 +47 2000-09-09 NULL 779.45 1035.38 779.45 +47 2000-09-10 NULL 786.49 1035.38 786.49 +47 2000-09-11 NULL 804.95 1035.38 804.95 +47 2000-09-16 NULL 844.1 1035.38 844.1 +47 2000-09-18 NULL 844.1 1035.38 844.1 +47 2000-09-19 NULL 889.11 1035.38 889.11 +47 2000-09-23 NULL 893.53 1035.38 893.53 +47 2000-09-25 NULL 941.17 1035.38 941.17 +47 2000-10-06 1069.74 NULL 1069.74 1051.5 +47 2000-10-07 NULL 1051.5 1069.74 1051.5 +50 2000-01-15 64.27 NULL 64.27 38.23 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q52.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q52.slt.no new file mode 100644 index 00000000000..b51b2c7552e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q52.slt.no @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IITR +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy=11 + AND dt.d_year=2000 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + ext_price DESC, + brand_id +LIMIT 100 ; +---- +2000 1002002 importoamalg #2 34450.8 +2000 7008009 namelessbrand #9 24017.78 +2000 7008004 namelessbrand #4 22773.96 +2000 4004001 edu packedu pack #1 22016.68 +2000 10004005 importounivamalg #6 18132.92 +2000 1001002 amalgamalg #2 17659.32 +2000 7010004 univnameless #4 15930.77 +2000 10004004 edu packunivamalg #4 15246.46 +2000 5001001 brandunivamalg #11 12194.13 +2000 7006007 edu packamalg #2 11702.69 +2000 10010013 univamalgamalg #13 5092.18 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q53.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q53.slt.no new file mode 100644 index 00000000000..e323640dff1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q53.slt.no @@ -0,0 +1,152 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT * +FROM + (SELECT i_manufact_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manufact_id) avg_quarterly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manufact_id, + d_qoy) tmp1 +WHERE CASE + WHEN avg_quarterly_sales > 0 THEN ABS (sum_sales - avg_quarterly_sales)/ avg_quarterly_sales + ELSE NULL + END > 0.1 +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +LIMIT 100; +---- +107 121.41 347.6475 +107 142.68 347.6475 +107 215.77 347.6475 +107 910.73 347.6475 +182 145.15 375.3525 +182 153.97 375.3525 +182 562.93 375.3525 +182 639.36 375.3525 +198 197.71 385.7275 +198 336.14 385.7275 +198 458.63 385.7275 +198 550.43 385.7275 +732 248.51 402.1625 +732 611.7 402.1625 +185 236.72 445.0575 +185 491.4 445.0575 +185 635.27 445.0575 +181 175.29 451.675 +181 564.03 451.675 +181 646.01 451.675 +77 129.29 463.6025 +77 588.05 463.6025 +77 642.16 463.6025 +151 94.56 468.825 +151 99.1 468.825 +151 808.99 468.825 +151 872.65 468.825 +775 99.88 472.7625 +775 211.02 472.7625 +775 689.49 472.7625 +775 890.66 472.7625 +860 167.36 472.8475 +860 360.83 472.8475 +860 587.46 472.8475 +860 775.74 472.8475 +134 165.39 485.03 +134 270.74 485.03 +134 608.21 485.03 +134 895.78 485.03 +767 256.86 485.835 +767 373.68 485.835 +767 642.85 485.835 +767 669.95 485.835 +362 42.96 488.42 +362 117.26 488.42 +362 542.58 488.42 +362 1250.88 488.42 +246 133.45 490.4575 +246 221.83 490.4575 +246 661.08 490.4575 +246 945.47 490.4575 +411 167.19 525.0375 +411 268.19 525.0375 +411 597.7 525.0375 +411 1067.07 525.0375 +451 210.46 526.4825 +451 435.74 526.4825 +451 446.65 526.4825 +451 1013.08 526.4825 +638 191.21 527.8925 +638 247.4 527.8925 +638 681.34 527.8925 +638 991.62 527.8925 +100 110.89 536.88 +100 202.57 536.88 +100 694.45 536.88 +100 1139.61 536.88 +409 210.35 540.8925 +409 339.42 540.8925 +409 626.5 540.8925 +409 987.3 540.8925 +110 189.66 557.4925 +110 333.36 557.4925 +110 1191.57 557.4925 +466 155.3 565.0425 +466 270.63 565.0425 +466 678.04 565.0425 +466 1156.2 565.0425 +227 246.72 570.0875 +227 873.81 570.0875 +201 231.28 570.895 +201 315.93 570.895 +201 646.39 570.895 +201 1089.98 570.895 +546 434.97 572.25 +546 457.4 572.25 +546 857.38 572.25 +93 217.11 580.325 +93 383.41 580.325 +93 493.88 580.325 +93 1226.9 580.325 +336 189.52 609.405 +336 470.28 609.405 +336 1212.09 609.405 +921 108.8 652.2125 +921 398.68 652.2125 +921 1509.59 652.2125 +380 375.23 659.2375 +380 435.07 659.2375 +380 905.21 659.2375 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q54.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q54.slt.no new file mode 100644 index 00000000000..b8bf521d246 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q54.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query III +WITH my_customers AS + (SELECT DISTINCT c_customer_sk, + c_current_addr_sk + FROM + (SELECT cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL SELECT ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales) cs_or_ws_sales, + item, + date_dim, + customer + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Women' + AND i_class = 'maternity' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 12 + AND d_year = 1998 ), + my_revenue AS + (SELECT c_customer_sk, + sum(ss_ext_sales_price) AS revenue + FROM my_customers, + store_sales, + customer_address, + store, + date_dim + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN + (SELECT DISTINCT d_month_seq+1 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) AND + (SELECT DISTINCT d_month_seq+3 + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 12) + GROUP BY c_customer_sk), + segments AS + (SELECT cast(round(revenue/50) AS int) AS SEGMENT + FROM my_revenue) +SELECT SEGMENT, + count(*) AS num_customers, + SEGMENT*50 AS segment_base +FROM segments +GROUP BY SEGMENT +ORDER BY SEGMENT NULLS FIRST, + num_customers NULLS FIRST, + segment_base +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q55.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q55.slt.no new file mode 100644 index 00000000000..f9857051222 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q55.slt.no @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITR +SELECT i_brand_id brand_id, + i_brand brand, + sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id=28 + AND d_moy=11 + AND d_year=1999 +GROUP BY i_brand, + i_brand_id +ORDER BY ext_price DESC, + i_brand_id +LIMIT 100 ; +---- +9016003 corpunivamalg #3 46123.99 +2001001 amalgimporto #1 40059.8 +6015001 scholarbrand #1 32295.1 +1001001 amalgamalg #1 31858.13 +3003001 exportiexporti #1 30335.32 +5001001 amalgscholar #1 28664.2 +3004001 edu packexporti #1 24372.56 +1002001 importoamalg #1 22671.78 +1001002 amalgamalg #2 22143.98 +8006005 corpnameless #5 21510.96 +3002001 importoexporti #1 20523.44 +4001001 amalgedu pack #1 20354.12 +10014016 edu packamalgamalg #16 19367.66 +5002001 importoscholar #1 18155.88 +4003001 exportiedu pack #1 17913.61 +2001002 amalgimporto #2 14692.65 +5004001 edu packscholar #1 13321.56 +10015011 scholaramalgamalg #11 10205.76 +6005003 scholarcorp #3 9854.43 +4002001 importoedu pack #1 8779.05 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q56.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q56.slt.no new file mode 100644 index 00000000000..501be38ff21 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q56.slt.no @@ -0,0 +1,116 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_color IN ('slate', + 'blanched', + 'burnished')) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy = 2 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY total_sales NULLS FIRST, + i_item_id NULLS FIRST +LIMIT 100; +---- +AAAAAAAAEADAAAAA 26.6 +AAAAAAAAGJEAAAAA 62.32 +AAAAAAAACIBAAAAA 222.08 +AAAAAAAAGDBAAAAA 645.66 +AAAAAAAAGEGAAAAA 1030.86 +AAAAAAAAIDFAAAAA 1127.2 +AAAAAAAAEDDAAAAA 1861.76 +AAAAAAAAIKCAAAAA 2043.76 +AAAAAAAAMMCAAAAA 2229.64 +AAAAAAAAEMEAAAAA 2508 +AAAAAAAAMOAAAAAA 2906.05 +AAAAAAAAMCDAAAAA 2934.36 +AAAAAAAAAMCAAAAA 3384.05 +AAAAAAAAMEEAAAAA 4498.65 +AAAAAAAAGGFAAAAA 4808.1 +AAAAAAAAOCEAAAAA 5297.03 +AAAAAAAAAEGAAAAA 5481.27 +AAAAAAAAONBAAAAA 6117.36 +AAAAAAAACHBAAAAA 6166.34 +AAAAAAAAGAHAAAAA 6663.08 +AAAAAAAANCEAAAAA 6719 +AAAAAAAAGBEAAAAA 6820.83 +AAAAAAAAGEBAAAAA 9834.93 +AAAAAAAAGHAAAAAA 10180.36 +AAAAAAAAEGBAAAAA 10325.31 +AAAAAAAAIGGAAAAA 10532.16 +AAAAAAAABJDAAAAA 10698.54 +AAAAAAAAJKAAAAAA 11994.03 +AAAAAAAAIACAAAAA 12150.48 +AAAAAAAAGOGAAAAA 12611.68 +AAAAAAAAIBBAAAAA 15290.6 +AAAAAAAAIOAAAAAA 17549.14 +AAAAAAAAEICAAAAA 18410.43 +AAAAAAAANEFAAAAA 18416.45 +AAAAAAAAIKFAAAAA 21295.44 +AAAAAAAAGIFAAAAA 22390.73 +AAAAAAAAKBCAAAAA 22567.04 +AAAAAAAAFCGAAAAA 22627.31 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q57.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q57.slt.no new file mode 100644 index 00000000000..18b41caf53e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q57.slt.no @@ -0,0 +1,169 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIRRRR +WITH v1 AS + (SELECT i_category, + i_brand, + cc_name, + d_year, + d_moy, + sum(cs_sales_price) sum_sales, + avg(sum(cs_sales_price)) OVER (PARTITION BY i_category, + i_brand, + cc_name, + d_year) avg_monthly_sales, + rank() OVER (PARTITION BY i_category, + i_brand, + cc_name + ORDER BY d_year, + d_moy) rn + FROM item, + catalog_sales, + date_dim, + call_center + WHERE cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk= cs_call_center_sk + AND (d_year = 1999 + OR (d_year = 1999-1 + AND d_moy =12) + OR (d_year = 1999+1 + AND d_moy =1)) + GROUP BY i_category, + i_brand, + cc_name, + d_year, + d_moy), + v2 AS + (SELECT v1.i_category, + v1.i_brand, + v1.cc_name, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1. cc_name = v1_lag. cc_name + AND v1. cc_name = v1_lead. cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN abs(sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales NULLS FIRST, 1, 2, 3, 4, 5, 6, 7, 8, 9 +LIMIT 100; +---- +Shoes exportiedu pack #1 NY Metro 1999 4 2602.29 873.07 1310.05 1389.46 +Music amalgscholar #1 NY Metro 1999 2 2401.3075 681.32 1389.52 1162.4 +Shoes edu packedu pack #1 NY Metro 1999 4 2813.558333333333 1206 1308.62 1285.33 +Shoes edu packedu pack #1 NY Metro 1999 5 2813.558333333333 1285.33 1206 1630.6 +Shoes edu packedu pack #1 NY Metro 1999 3 2813.558333333333 1308.62 1314.48 1206 +Shoes edu packedu pack #1 NY Metro 1999 2 2813.558333333333 1314.48 2001.46 1308.62 +Shoes exportiedu pack #1 NY Metro 1999 6 2602.29 1110.61 1389.46 1836.41 +Women importoamalg #1 NY Metro 1999 7 2038.780833333333 576.6 1092.99 3063.85 +Children exportiexporti #1 NY Metro 1999 6 2153.514166666667 784.44 1794.57 1441.37 +Shoes importoedu pack #1 NY Metro 1999 7 1890.239166666667 543.47 858.31 3200.51 +Music importoscholar #1 NY Metro 1999 4 2141.603333333334 798.59 1616.7 1017.38 +Men exportiimporto #1 NY Metro 1999 2 2370.8225 1075.45 1161.87 1734.46 +Shoes exportiedu pack #1 NY Metro 1999 3 2602.29 1310.05 1568.11 873.07 +Men exportiimporto #1 NY Metro 1999 7 2370.8225 1079.96 1315.93 3101.7 +Men exportiimporto #1 NY Metro 1999 4 2370.8225 1094.67 1734.46 1798.16 +Children exportiexporti #1 NY Metro 1999 3 2153.514166666667 880.89 890.98 1694.32 +Men edu packimporto #1 NY Metro 1999 4 2291.821666666667 1020.53 1402.19 2029.94 +Women importoamalg #1 NY Metro 1999 3 2038.780833333333 769.04 1863.24 1397.9 +Children exportiexporti #1 NY Metro 1999 2 2153.514166666667 890.98 1257.34 880.89 +Music amalgscholar #1 NY Metro 1999 3 2401.3075 1162.4 681.32 1328.39 +Men amalgimporto #1 NY Metro 1999 6 1639.644166666667 416.84 753.86 1258.98 +Shoes exportiedu pack #1 NY Metro 1999 5 2602.29 1389.46 873.07 1110.61 +Men exportiimporto #1 NY Metro 1999 1 2370.8225 1161.87 4568.43 1075.45 +Men importoimporto #1 NY Metro 1999 6 1632.786666666667 433.37 870.65 451.49 +Children amalgexporti #2 NY Metro 1999 3 1480.400833333333 287.62 744.35 906.31 +Shoes edu packedu pack #1 NY Metro 1999 6 2813.558333333333 1630.6 1285.33 2000.51 +Men importoimporto #1 NY Metro 1999 7 1632.786666666667 451.49 433.37 1927.32 +Shoes exportiedu pack #1 NY Metro 1999 1 2602.29 1449.65 5320.92 1568.11 +Men edu packimporto #1 NY Metro 1999 2 2291.821666666667 1142.84 1533.79 1402.19 +Children edu packexporti #1 NY Metro 1999 4 1755.691666666667 620.26 873.64 939.59 +Music importoscholar #1 NY Metro 1999 5 2141.603333333334 1017.38 798.59 1523.93 +Shoes amalgedu pack #1 NY Metro 1999 2 2076.091666666667 961.61 1157.56 1237.39 +Music exportischolar #2 NY Metro 1999 1 1745.665833333333 632.92 3396.05 666.22 +Music exportischolar #2 NY Metro 1999 2 1745.665833333333 666.22 632.92 1907.27 +Women edu packamalg #1 NY Metro 1999 6 2191.3575 1112.11 1243.11 1158.76 +Music amalgscholar #1 NY Metro 1999 4 2401.3075 1328.39 1162.4 1513.15 +Music exportischolar #2 NY Metro 1999 7 1745.665833333333 683.52 1101.46 1864.65 +Men exportiimporto #1 NY Metro 1999 6 2370.8225 1315.93 1798.16 1079.96 +Shoes amalgedu pack #1 NY Metro 1999 5 2076.091666666667 1032.32 1474.85 1239.28 +Shoes exportiedu pack #1 NY Metro 1999 2 2602.29 1568.11 1449.65 1310.05 +Women edu packamalg #1 NY Metro 1999 7 2191.3575 1158.76 1112.11 3304.19 +Music importoscholar #1 NY Metro 1999 7 2141.603333333334 1109.23 1523.93 3967.27 +Shoes importoedu pack #1 NY Metro 1999 6 1890.239166666667 858.31 1461.71 543.47 +Women importoamalg #1 NY Metro 1999 1 2038.780833333333 1016.92 4390.23 1863.24 +Women amalgamalg #1 NY Metro 1999 7 1789.3575 775 1013.89 2516.91 +Music amalgscholar #1 NY Metro 1999 1 2401.3075 1389.52 5021.71 681.32 +Women importoamalg #1 NY Metro 1999 5 2038.780833333333 1039.57 1397.9 1092.99 +Music edu packscholar #1 NY Metro 1999 2 1386.475 416.5 842.63 774.34 +Women edu packamalg #1 NY Metro 1999 2 2191.3575 1235.91 2000.24 1641.12 +Women edu packamalg #1 NY Metro 1999 5 2191.3575 1243.11 1493.45 1112.11 +Women importoamalg #1 NY Metro 1999 6 2038.780833333333 1092.99 1039.57 576.6 +Children importoexporti #1 NY Metro 1999 5 1708.808333333333 763.82 855.31 1058.09 +Children importoexporti #1 NY Metro 1999 2 1708.808333333333 765.13 1058.78 874.53 +Shoes importoedu pack #1 NY Metro 1999 2 1890.239166666667 961.79 1135.45 969.71 +Children edu packexporti #1 NY Metro 1999 6 1755.691666666667 828.28 939.59 1055.99 +Women amalgamalg #1 NY Metro 1999 1 1789.3575 865.04 3096.08 1406.06 +Men amalgimporto #1 NY Metro 1999 4 1639.644166666667 718.97 723.18 753.86 +Shoes importoedu pack #1 NY Metro 1999 3 1890.239166666667 969.71 961.79 1081.31 +Women exportiamalg #1 NY Metro 1999 3 1816.345 896.51 1180.68 1004.3 +Shoes amalgedu pack #1 NY Metro 1999 1 2076.091666666667 1157.56 4851.83 961.61 +Women edu packamalg #2 NY Metro 1999 2 1164.193333333333 246.19 438.15 650.31 +Men amalgimporto #1 NY Metro 1999 3 1639.644166666667 723.18 1318.53 718.97 +Children amalgexporti #2 NY Metro 1999 6 1480.400833333333 565.16 1320.93 822.3 +Men edu packimporto #1 NY Metro 1999 6 2291.821666666667 1377.59 2029.94 1478.46 +Children importoexporti #1 NY Metro 1999 7 1708.808333333333 811.65 1058.09 2369.43 +Children exportiexporti #1 NY Metro 1999 1 2153.514166666667 1257.34 5213.08 890.98 +Children exportiexporti #2 NY Metro 1999 3 1129.004166666667 235.48 779.12 882.08 +Men edu packimporto #1 NY Metro 1999 3 2291.821666666667 1402.19 1142.84 1020.53 +Music amalgscholar #1 NY Metro 1999 5 2401.3075 1513.15 1328.39 1542.36 +Men amalgimporto #1 NY Metro 1999 5 1639.644166666667 753.86 718.97 416.84 +Children edu packexporti #1 NY Metro 1999 3 1755.691666666667 873.64 1033.22 620.26 +Women amalgamalg #1 NY Metro 1999 4 1789.3575 926.57 1350.76 1227.87 +Music amalgscholar #1 NY Metro 1999 6 2401.3075 1542.36 1513.15 1755.15 +Women exportiamalg #1 NY Metro 1999 1 1816.345 960.06 4665.37 1180.68 +Children importoexporti #1 NY Metro 1999 4 1708.808333333333 855.31 874.53 763.82 +Shoes amalgedu pack #1 NY Metro 1999 3 2076.091666666667 1237.39 961.61 1474.85 +Shoes amalgedu pack #1 NY Metro 1999 6 2076.091666666667 1239.28 1032.32 1672.49 +Children importoexporti #1 NY Metro 1999 3 1708.808333333333 874.53 765.13 855.31 +Women exportiamalg #2 NY Metro 1999 3 1079.29 257.18 867.45 629.83 +Children edu packexporti #1 NY Metro 1999 5 1755.691666666667 939.59 620.26 828.28 +Men edu packimporto #1 NY Metro 1999 7 2291.821666666667 1478.46 1377.59 3272.8 +Shoes edu packedu pack #1 NY Metro 1999 7 2813.558333333333 2000.51 1630.6 3445.38 +Shoes edu packedu pack #1 NY Metro 1999 1 2813.558333333333 2001.46 6906.05 1314.48 +Women exportiamalg #1 NY Metro 1999 4 1816.345 1004.3 896.51 1036.58 +Shoes importoedu pack #1 NY Metro 1999 4 1890.239166666667 1081.31 969.71 1461.71 +Children amalgexporti #1 NY Metro 1999 5 1337.524166666667 529.1 747.16 748.13 +Children exportiexporti #2 NY Metro 1999 1 1129.004166666667 332.93 1966.19 779.12 +Men importoimporto #1 NY Metro 1999 4 1632.786666666667 836.87 963.29 870.65 +Men edu packimporto #2 NY Metro 1999 3 1178.875833333333 385.75 772.58 661.81 +Music importoscholar #1 NY Metro 1999 2 2141.603333333334 1356.69 1584.68 1616.7 +Women exportiamalg #1 NY Metro 1999 5 1816.345 1036.58 1004.3 1282.58 +Men importoimporto #1 NY Metro 1999 2 1632.786666666667 856.94 1055.89 963.29 +Women amalgamalg #1 NY Metro 1999 6 1789.3575 1013.89 1227.87 775 +Shoes exportiedu pack #1 NY Metro 1999 7 2602.29 1836.41 1110.61 2968.36 +Men importoimporto #1 NY Metro 1999 5 1632.786666666667 870.65 836.87 433.37 +Men edu packimporto #1 NY Metro 1999 1 2291.821666666667 1533.79 5258.73 1142.84 +Shoes importoedu pack #1 NY Metro 1999 1 1890.239166666667 1135.45 4076.29 961.79 +Music importoscholar #2 NY Metro 1999 6 801.986666666667 55.54 620.74 599.05 +Children amalgexporti #1 NY Metro 1999 7 1337.524166666667 598.17 748.13 2881.1 +Children amalgexporti #2 NY Metro 1999 2 1480.400833333333 744.35 1214.92 287.62 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q58.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q58.slt.no new file mode 100644 index 00000000000..6e8543c5754 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q58.slt.no @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRRRRRR +WITH ss_items AS + (SELECT i_item_id item_id, + sum(ss_ext_sales_price) ss_item_rev + FROM store_sales, + item, + date_dim + WHERE ss_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ss_sold_date_sk = d_date_sk + GROUP BY i_item_id), + cs_items AS + (SELECT i_item_id item_id, + sum(cs_ext_sales_price) cs_item_rev + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND cs_sold_date_sk = d_date_sk + GROUP BY i_item_id), + ws_items AS + (SELECT i_item_id item_id, + sum(ws_ext_sales_price) ws_item_rev + FROM web_sales, + item, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq = + (SELECT d_week_seq + FROM date_dim + WHERE d_date = '2000-01-03')) + AND ws_sold_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT ss_items.item_id, + ss_item_rev, + ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev, + cs_item_rev, + cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev, + ws_item_rev, + ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev, + (ss_item_rev+cs_item_rev+ws_item_rev)/3 average +FROM ss_items, + cs_items, + ws_items +WHERE ss_items.item_id=cs_items.item_id + AND ss_items.item_id=ws_items.item_id + AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev + AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev + AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev + AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev +ORDER BY ss_items.item_id NULLS FIRST, + ss_item_rev NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q59.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q59.slt.no new file mode 100644 index 00000000000..bc346eedb80 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q59.slt.no @@ -0,0 +1,190 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIRRRRRRR +WITH wss AS + (SELECT d_week_seq, + ss_store_sk, + sum(CASE + WHEN (d_day_name='Sunday') THEN ss_sales_price + ELSE NULL + END) sun_sales, + sum(CASE + WHEN (d_day_name='Monday') THEN ss_sales_price + ELSE NULL + END) mon_sales, + sum(CASE + WHEN (d_day_name='Tuesday') THEN ss_sales_price + ELSE NULL + END) tue_sales, + sum(CASE + WHEN (d_day_name='Wednesday') THEN ss_sales_price + ELSE NULL + END) wed_sales, + sum(CASE + WHEN (d_day_name='Thursday') THEN ss_sales_price + ELSE NULL + END) thu_sales, + sum(CASE + WHEN (d_day_name='Friday') THEN ss_sales_price + ELSE NULL + END) fri_sales, + sum(CASE + WHEN (d_day_name='Saturday') THEN ss_sales_price + ELSE NULL + END) sat_sales + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, + ss_store_sk) +SELECT s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1/sun_sales2 AS sun_sales_ratio, + mon_sales1/mon_sales2 AS mon_sales_ratio, + tue_sales1/tue_sales2 AS tue_sales_ratio, + wed_sales1/wed_sales2 AS wed_sales_ratio, + thu_sales1/thu_sales2 AS thu_sales_ratio, + fri_sales1/fri_sales2 AS fri_sales_ratio, + sat_sales1/sat_sales2 AS sat_sales_ratio +FROM + (SELECT s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 AND 1212 + 11) y, + (SELECT s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1212 + 12 AND 1212 + 23) x +WHERE s_store_id1=s_store_id2 + AND d_week_seq1=d_week_seq2-52 +ORDER BY s_store_name1 NULLS FIRST, + s_store_id1 NULLS FIRST, + d_week_seq1 NULLS FIRST +LIMIT 100; +---- +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5271 1.50630553744 1.210980928761 0.094947373412 0.420014197234 1.043908720068 0.767386751754 0.501908478426 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5272 1.758208590915 1.297270965775 2.734012899678 0.912539739514 1.329293104445 1.641360140765 0.644471797009 +ought AAAAAAAABAAAAAAA 5273 3.096752041448 0.867308302859 1.454512516992 0.715887272399 0.767339733257 1.281120314293 2.108696493858 +ought AAAAAAAABAAAAAAA 5273 3.096752041448 0.867308302859 1.454512516992 0.715887272399 0.767339733257 1.281120314293 2.108696493858 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q6.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q6.slt.no new file mode 100644 index 00000000000..6bbb025cc9e --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q6.slt.no @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TI +SELECT a.ca_state state, + count(*) cnt +FROM customer_address a , + customer c , + store_sales s , + date_dim d , + item i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = + (SELECT DISTINCT (d_month_seq) + FROM date_dim + WHERE d_year = 2001 + AND d_moy = 1 ) + AND i.i_current_price > 1.2 * + (SELECT avg(j.i_current_price) + FROM item j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING count(*) >= 10 +ORDER BY cnt NULLS FIRST, + a.ca_state NULLS FIRST +LIMIT 100; +---- +KS 10 +MS 10 +NE 10 +SD 11 +IL 12 +KY 13 +IN 17 +OH 20 +TX 21 +VA 22 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q60.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q60.slt.no new file mode 100644 index 00000000000..8c474086270 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q60.slt.no @@ -0,0 +1,172 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +WITH ss AS + (SELECT i_item_id, + sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + cs AS + (SELECT i_item_id, + sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category ='Music') + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id), + ws AS + (SELECT i_item_id, + sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN + (SELECT i_item_id + FROM item + WHERE i_category = 'Music') + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 9 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_item_id) +SELECT i_item_id, + sum(total_sales) total_sales +FROM + (SELECT * + FROM ss + UNION ALL SELECT * + FROM cs + UNION ALL SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, + total_sales +LIMIT 100; +---- +AAAAAAAAAAHAAAAA 11508.64 +AAAAAAAAADBAAAAA 16116.11 +AAAAAAAAAEBAAAAA 7628.66 +AAAAAAAAAFFAAAAA 905.16 +AAAAAAAAAGFAAAAA 10014.07 +AAAAAAAAAIDAAAAA 7491.82 +AAAAAAAAAKBAAAAA 579.66 +AAAAAAAAAKDAAAAA 6699.03 +AAAAAAAAALAAAAAA 8356.35 +AAAAAAAAALDAAAAA 6750.51 +AAAAAAAAAMEAAAAA 35221.47 +AAAAAAAAAOCAAAAA 14728.86 +AAAAAAAAAPBAAAAA 13136.33 +AAAAAAAABAAAAAAA 11808.97 +AAAAAAAABECAAAAA 3931.89 +AAAAAAAABFBAAAAA 10605.27 +AAAAAAAABGDAAAAA 37485.43 +AAAAAAAABKFAAAAA 8637.22 +AAAAAAAACDGAAAAA 3867.72 +AAAAAAAACFEAAAAA 9147.18 +AAAAAAAACFGAAAAA 31493.08 +AAAAAAAACHCAAAAA 12030.92 +AAAAAAAACIAAAAAA 3390.29 +AAAAAAAACIGAAAAA 12423.51 +AAAAAAAACJAAAAAA 6671.94 +AAAAAAAACJFAAAAA 2610.47 +AAAAAAAACLAAAAAA 7216.23 +AAAAAAAACLBAAAAA 15506.66 +AAAAAAAACNBAAAAA 7336.02 +AAAAAAAACNEAAAAA 14824.22 +AAAAAAAACODAAAAA 6482 +AAAAAAAACPDAAAAA 12527.54 +AAAAAAAADDBAAAAA 6932.55 +AAAAAAAADGBAAAAA 552.45 +AAAAAAAADGEAAAAA 8204.66 +AAAAAAAADJBAAAAA 129.45 +AAAAAAAADNGAAAAA 10705.92 +AAAAAAAAEABAAAAA 9431.21 +AAAAAAAAEAHAAAAA 17199.48 +AAAAAAAAEBCAAAAA 6715.08 +AAAAAAAAEBGAAAAA 14610.06 +AAAAAAAAEDGAAAAA 11137.68 +AAAAAAAAEEDAAAAA 5767.8 +AAAAAAAAEGAAAAAA 1367.71 +AAAAAAAAEGDAAAAA 24586.93 +AAAAAAAAEGGAAAAA 7059.74 +AAAAAAAAEHAAAAAA 8388.98 +AAAAAAAAEHCAAAAA 5255.49 +AAAAAAAAEIFAAAAA 7505.08 +AAAAAAAAEKGAAAAA 9212.85 +AAAAAAAAEMBAAAAA 19181.65 +AAAAAAAAEMDAAAAA 12657.62 +AAAAAAAAENAAAAAA 2094.28 +AAAAAAAAENDAAAAA 6834.08 +AAAAAAAAENFAAAAA 6475 +AAAAAAAAEPBAAAAA 11129.59 +AAAAAAAAEPDAAAAA 7019.56 +AAAAAAAAEPEAAAAA 3485.65 +AAAAAAAAEPGAAAAA 10873.45 +AAAAAAAAFIGAAAAA 14727.54 +AAAAAAAAFJFAAAAA 18811.37 +AAAAAAAAFKEAAAAA 7508.4 +AAAAAAAAFMCAAAAA 12686.6 +AAAAAAAAGAHAAAAA 12179.78 +AAAAAAAAGCGAAAAA 4584.4 +AAAAAAAAGEAAAAAA 23719.49 +AAAAAAAAGFFAAAAA 4680.69 +AAAAAAAAGGBAAAAA 10326.63 +AAAAAAAAGGEAAAAA 316.05 +AAAAAAAAGHEAAAAA 18570.46 +AAAAAAAAGIFAAAAA 10420.07 +AAAAAAAAGIGAAAAA 18710.43 +AAAAAAAAGJBAAAAA 8422.8 +AAAAAAAAGJCAAAAA 1693.86 +AAAAAAAAGJEAAAAA 5527.98 +AAAAAAAAGJFAAAAA 6965.57 +AAAAAAAAGMBAAAAA 10157.91 +AAAAAAAAGMEAAAAA 6063.5 +AAAAAAAAGOAAAAAA 670.53 +AAAAAAAAGOFAAAAA 1414.02 +AAAAAAAAGPCAAAAA 2595.22 +AAAAAAAAHEFAAAAA 17476.76 +AAAAAAAAHIBAAAAA 8266.5 +AAAAAAAAHNFAAAAA 4412.82 +AAAAAAAAICAAAAAA 40543.92 +AAAAAAAAIFAAAAAA 265.44 +AAAAAAAAIFBAAAAA 4903.22 +AAAAAAAAIFDAAAAA 678.61 +AAAAAAAAIFEAAAAA 12288.08 +AAAAAAAAIFGAAAAA 13888.95 +AAAAAAAAIGFAAAAA 2735.52 +AAAAAAAAIIBAAAAA 21382.12 +AAAAAAAAIIDAAAAA 2950.6 +AAAAAAAAIJAAAAAA 20434.49 +AAAAAAAAIJCAAAAA 9975.7 +AAAAAAAAIKBAAAAA 9452.51 +AAAAAAAAILAAAAAA 17405.04 +AAAAAAAAILBAAAAA 12500.25 +AAAAAAAAILDAAAAA 1964.19 +AAAAAAAAIMAAAAAA 8819.84 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q61.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q61.slt.no new file mode 100644 index 00000000000..3c7a6ebaa2a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q61.slt.no @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RRR +SELECT promotions, + total, + cast(promotions AS decimal(15,4))/cast(total AS decimal(15,4))*100 +FROM + (SELECT sum(ss_ext_sales_price) promotions + FROM store_sales, + store, + promotion, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND (p_channel_dmail = 'Y' + OR p_channel_email = 'Y' + OR p_channel_tv = 'Y') + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) promotional_sales, + (SELECT sum(ss_ext_sales_price) total + FROM store_sales, + store, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk= c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -5 + AND i_category = 'Jewelry' + AND s_gmt_offset = -5 + AND d_year = 1998 + AND d_moy = 11) all_sales +ORDER BY promotions, + total +LIMIT 100; +---- +271115.91 637892.44 42.501822094019 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q62.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q62.slt.no new file mode 100644 index 00000000000..8f380982989 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q62.slt.no @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIIII +SELECT w_substr, + sm_type, + web_name, + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 30) + AND (ws_ship_date_sk - ws_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 60) + AND (ws_ship_date_sk - ws_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 90) + AND (ws_ship_date_sk - ws_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (ws_ship_date_sk - ws_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM web_sales, + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, + * + FROM warehouse) sq1, + ship_mode, + web_site, + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY w_substr, + sm_type, + web_name +ORDER BY 1 NULLS FIRST, + 2 NULLS FIRST, + 3 NULLS FIRST +LIMIT 100; +---- +Conventional childr EXPRESS site_0 748 680 732 756 0 +Conventional childr LIBRARY site_0 562 501 538 567 0 +Conventional childr NEXT DAY site_0 713 698 719 753 0 +Conventional childr OVERNIGHT site_0 502 556 560 509 0 +Conventional childr REGULAR site_0 561 561 502 567 0 +Conventional childr TWO DAY site_0 545 539 533 567 0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q63.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q63.slt.no new file mode 100644 index 00000000000..b249509d4d7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q63.slt.no @@ -0,0 +1,152 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT * +FROM + (SELECT i_manager_id, + sum(ss_sales_price) sum_sales, + avg(sum(ss_sales_price)) OVER (PARTITION BY i_manager_id) avg_monthly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN (1200, + 1200+1, + 1200+2, + 1200+3, + 1200+4, + 1200+5, + 1200+6, + 1200+7, + 1200+8, + 1200+9, + 1200+10, + 1200+11) + AND ((i_category IN ('Books', + 'Children', + 'Electronics') + AND i_class IN ('personal', + 'portable', + 'reference', + 'self-help') + AND i_brand IN ('scholaramalgamalg #14', + 'scholaramalgamalg #7', + 'exportiunivamalg #9', + 'scholaramalgamalg #9')) or(i_category IN ('Women','Music','Men') + AND i_class IN ('accessories','classical','fragrances','pants') + AND i_brand IN ('amalgimporto #1','edu packscholar #1','exportiimporto #1', 'importoamalg #1'))) + GROUP BY i_manager_id, + d_moy) tmp1 +WHERE CASE + WHEN avg_monthly_sales > 0 THEN ABS (sum_sales - avg_monthly_sales) / avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY i_manager_id, + avg_monthly_sales, + sum_sales +LIMIT 100; +---- +6 107.66 446.5275 +6 124.71 446.5275 +6 155 446.5275 +6 217.78 446.5275 +6 237.57 446.5275 +6 320.92 446.5275 +6 526.32 446.5275 +6 558.43 446.5275 +6 607.12 446.5275 +6 742.39 446.5275 +6 762.76 446.5275 +6 997.67 446.5275 +7 66.72 161.839090909091 +7 79.99 161.839090909091 +7 81 161.839090909091 +7 140.39 161.839090909091 +7 141.27 161.839090909091 +7 183.9 161.839090909091 +7 195.45 161.839090909091 +7 219.94 161.839090909091 +7 348.61 161.839090909091 +10 7.02 163.485833333333 +10 14.91 163.485833333333 +10 29.75 163.485833333333 +10 35.49 163.485833333333 +10 90.94 163.485833333333 +10 181.26 163.485833333333 +10 209.54 163.485833333333 +10 270.28 163.485833333333 +10 270.88 163.485833333333 +10 288.29 163.485833333333 +10 386.3 163.485833333333 +11 50.73 193.441666666667 +11 64.1 193.441666666667 +11 72.62 193.441666666667 +11 84.86 193.441666666667 +11 93.76 193.441666666667 +11 127.77 193.441666666667 +11 133.6 193.441666666667 +11 164.95 193.441666666667 +11 302.01 193.441666666667 +11 358.31 193.441666666667 +11 375.85 193.441666666667 +11 492.74 193.441666666667 +12 4.42 185.830833333333 +12 22.24 185.830833333333 +12 40.42 185.830833333333 +12 78.07 185.830833333333 +12 96.39 185.830833333333 +12 127 185.830833333333 +12 158.9 185.830833333333 +12 231.27 185.830833333333 +12 279.69 185.830833333333 +12 288.94 185.830833333333 +12 442.72 185.830833333333 +12 459.91 185.830833333333 +20 123.46 413.888333333333 +20 124.99 413.888333333333 +20 186.9 413.888333333333 +20 209.1 413.888333333333 +20 215.43 413.888333333333 +20 219.45 413.888333333333 +20 352.81 413.888333333333 +20 487.48 413.888333333333 +20 653.13 413.888333333333 +20 717.71 413.888333333333 +20 810.65 413.888333333333 +20 865.55 413.888333333333 +22 21.96 270.416666666667 +22 41.89 270.416666666667 +22 59.1 270.416666666667 +22 67.29 270.416666666667 +22 162.79 270.416666666667 +22 190.64 270.416666666667 +22 326.35 270.416666666667 +22 367.03 270.416666666667 +22 455.93 270.416666666667 +22 554.08 270.416666666667 +22 729.93 270.416666666667 +25 34.7 226.017 +25 120.6 226.017 +25 123.91 226.017 +25 146.72 226.017 +25 169.11 226.017 +25 189.75 226.017 +25 199.98 226.017 +25 288.31 226.017 +25 296.81 226.017 +25 690.28 226.017 +26 54.55 209.52 +26 72.4 209.52 +26 124.41 209.52 +26 127 209.52 +26 140.02 209.52 +26 343.42 209.52 +26 376.95 209.52 +26 417.46 209.52 +28 181.17 629.109166666667 +28 248 629.109166666667 +28 253.34 629.109166666667 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q64.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q64.slt.no new file mode 100644 index 00000000000..1764a568ffa --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q64.slt.no @@ -0,0 +1,129 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTTTTTTTIIRRRRRRII +WITH cs_ui AS + (SELECT cs_item_sk, + sum(cs_ext_list_price) AS sale, + sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit) AS refund + FROM catalog_sales, + catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING sum(cs_ext_list_price)>2*sum(cr_refunded_cash+cr_reversed_charge+cr_store_credit)), + cross_sales AS + (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_street_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + count(*) cnt, + sum(ss_wholesale_cost) s1, + sum(ss_list_price) s2, + sum(ss_coupon_amt) s3 + FROM store_sales, + store_returns, + cs_ui, + date_dim d1, + date_dim d2, + date_dim d3, + store, + customer, + customer_demographics cd1, + customer_demographics cd2, + promotion, + household_demographics hd1, + household_demographics hd2, + customer_address ad1, + customer_address ad2, + income_band ib1, + income_band ib2, + item + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk= cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color IN ('purple', + 'burlywood', + 'indian', + 'spring', + 'floral', + 'medium') + AND i_current_price BETWEEN 64 AND 64 + 10 + AND i_current_price BETWEEN 64 + 1 AND 64 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_street_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear cs1syear, + cs1.cnt cs1cnt, + cs1.s1 AS s11, + cs1.s2 AS s21, + cs1.s3 AS s31, + cs2.s1 AS s12, + cs2.s2 AS s22, + cs2.s3 AS s32, + cs2.syear, + cs2.cnt +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk=cs2.item_sk + AND cs1.syear = 1999 + AND cs2.syear = 1999 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, + cs1.store_name, + cs2.cnt, + cs1.s1, + cs2.s1; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q65.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q65.slt.no new file mode 100644 index 00000000000..57128a1de28 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q65.slt.no @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRRT +SELECT s_store_name, + i_item_desc, + sc.revenue, + i_current_price, + i_wholesale_cost, + i_brand +FROM store, + item, + (SELECT ss_store_sk, + avg(revenue) AS ave + FROM + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sa + GROUP BY ss_store_sk) sb, + (SELECT ss_store_sk, + ss_item_sk, + sum(ss_sales_price) AS revenue + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1176 AND 1176+11 + GROUP BY ss_store_sk, + ss_item_sk) sc +WHERE sb.ss_store_sk = sc.ss_store_sk + AND sc.revenue <= 0.1 * sb.ave + AND s_store_sk = sc.ss_store_sk + AND i_item_sk = sc.ss_item_sk +ORDER BY s_store_name NULLS FIRST, + i_item_desc NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q66.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q66.slt.no new file mode 100644 index 00000000000..9df25a99c84 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q66.slt.no @@ -0,0 +1,223 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TITTTTTIRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR +select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + ,sum(jan_sales) as jan_sales + ,sum(feb_sales) as feb_sales + ,sum(mar_sales) as mar_sales + ,sum(apr_sales) as apr_sales + ,sum(may_sales) as may_sales + ,sum(jun_sales) as jun_sales + ,sum(jul_sales) as jul_sales + ,sum(aug_sales) as aug_sales + ,sum(sep_sales) as sep_sales + ,sum(oct_sales) as oct_sales + ,sum(nov_sales) as nov_sales + ,sum(dec_sales) as dec_sales + ,sum(jan_sales/w_warehouse_sq_ft) as jan_sales_per_sq_foot + ,sum(feb_sales/w_warehouse_sq_ft) as feb_sales_per_sq_foot + ,sum(mar_sales/w_warehouse_sq_ft) as mar_sales_per_sq_foot + ,sum(apr_sales/w_warehouse_sq_ft) as apr_sales_per_sq_foot + ,sum(may_sales/w_warehouse_sq_ft) as may_sales_per_sq_foot + ,sum(jun_sales/w_warehouse_sq_ft) as jun_sales_per_sq_foot + ,sum(jul_sales/w_warehouse_sq_ft) as jul_sales_per_sq_foot + ,sum(aug_sales/w_warehouse_sq_ft) as aug_sales_per_sq_foot + ,sum(sep_sales/w_warehouse_sq_ft) as sep_sales_per_sq_foot + ,sum(oct_sales/w_warehouse_sq_ft) as oct_sales_per_sq_foot + ,sum(nov_sales/w_warehouse_sq_ft) as nov_sales_per_sq_foot + ,sum(dec_sales/w_warehouse_sq_ft) as dec_sales_per_sq_foot + ,sum(jan_net) as jan_net + ,sum(feb_net) as feb_net + ,sum(mar_net) as mar_net + ,sum(apr_net) as apr_net + ,sum(may_net) as may_net + ,sum(jun_net) as jun_net + ,sum(jul_net) as jul_net + ,sum(aug_net) as aug_net + ,sum(sep_net) as sep_net + ,sum(oct_net) as oct_net + ,sum(nov_net) as nov_net + ,sum(dec_net) as dec_net + from ( + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then ws_ext_sales_price* ws_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then ws_ext_sales_price* ws_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then ws_ext_sales_price* ws_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then ws_ext_sales_price* ws_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then ws_ext_sales_price* ws_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then ws_ext_sales_price* ws_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then ws_ext_sales_price* ws_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then ws_ext_sales_price* ws_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then ws_ext_sales_price* ws_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then ws_ext_sales_price* ws_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then ws_ext_sales_price* ws_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then ws_ext_sales_price* ws_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then ws_net_paid * ws_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then ws_net_paid * ws_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then ws_net_paid * ws_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then ws_net_paid * ws_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then ws_net_paid * ws_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then ws_net_paid * ws_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then ws_net_paid * ws_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then ws_net_paid * ws_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then ws_net_paid * ws_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then ws_net_paid * ws_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then ws_net_paid * ws_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then ws_net_paid * ws_quantity else 0 end) as dec_net + from + web_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + ws_warehouse_sk = w_warehouse_sk + and ws_sold_date_sk = d_date_sk + and ws_sold_time_sk = t_time_sk + and ws_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 and 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + union all + select + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,'DHL,BARIAN' as ship_carriers + ,d_year as year_ + ,sum(case when d_moy = 1 + then cs_sales_price* cs_quantity else 0 end) as jan_sales + ,sum(case when d_moy = 2 + then cs_sales_price* cs_quantity else 0 end) as feb_sales + ,sum(case when d_moy = 3 + then cs_sales_price* cs_quantity else 0 end) as mar_sales + ,sum(case when d_moy = 4 + then cs_sales_price* cs_quantity else 0 end) as apr_sales + ,sum(case when d_moy = 5 + then cs_sales_price* cs_quantity else 0 end) as may_sales + ,sum(case when d_moy = 6 + then cs_sales_price* cs_quantity else 0 end) as jun_sales + ,sum(case when d_moy = 7 + then cs_sales_price* cs_quantity else 0 end) as jul_sales + ,sum(case when d_moy = 8 + then cs_sales_price* cs_quantity else 0 end) as aug_sales + ,sum(case when d_moy = 9 + then cs_sales_price* cs_quantity else 0 end) as sep_sales + ,sum(case when d_moy = 10 + then cs_sales_price* cs_quantity else 0 end) as oct_sales + ,sum(case when d_moy = 11 + then cs_sales_price* cs_quantity else 0 end) as nov_sales + ,sum(case when d_moy = 12 + then cs_sales_price* cs_quantity else 0 end) as dec_sales + ,sum(case when d_moy = 1 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jan_net + ,sum(case when d_moy = 2 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as feb_net + ,sum(case when d_moy = 3 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as mar_net + ,sum(case when d_moy = 4 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as apr_net + ,sum(case when d_moy = 5 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as may_net + ,sum(case when d_moy = 6 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jun_net + ,sum(case when d_moy = 7 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as jul_net + ,sum(case when d_moy = 8 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as aug_net + ,sum(case when d_moy = 9 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as sep_net + ,sum(case when d_moy = 10 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as oct_net + ,sum(case when d_moy = 11 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as nov_net + ,sum(case when d_moy = 12 + then cs_net_paid_inc_tax * cs_quantity else 0 end) as dec_net + from + catalog_sales + ,warehouse + ,date_dim + ,time_dim + ,ship_mode + where + cs_warehouse_sk = w_warehouse_sk + and cs_sold_date_sk = d_date_sk + and cs_sold_time_sk = t_time_sk + and cs_ship_mode_sk = sm_ship_mode_sk + and d_year = 2001 + and t_time between 30838 AND 30838+28800 + and sm_carrier in ('DHL','BARIAN') + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,d_year + ) x + group by + w_warehouse_name + ,w_warehouse_sq_ft + ,w_city + ,w_county + ,w_state + ,w_country + ,ship_carriers + ,year_ + order by w_warehouse_name NULLS FIRST +LIMIT 100; +---- +Conventional childr 977787 Midway Williamson County TN United States DHL,BARIAN 2001 5665263.2 4256624.18 6757029.48 5932187.97 4235797.37 1315480.77 5633246.33 10991004.92 9710980.62 11065685.72 14957060.98 19075420.83 5.793964534198 4.35332457887 6.910533152926 6.066953201464 4.332024633177 1.345365370986 5.761220316899 11.240694466177 9.931591052039 11.317071836709 15.296849906984 19.508769118428 12024188.36 8778739.37 13787225.24 12055140.09 12368854.46 10638132.3 13967926.34 27340050.65 38380516.31 27509050.73 45256139.63 45698233.49 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q67.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q67.slt.no new file mode 100644 index 00000000000..7d0915b1754 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q67.slt.no @@ -0,0 +1,149 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIIITRI +SELECT * +FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sumsales, + rank() OVER (PARTITION BY i_category + ORDER BY sumsales DESC) rk + FROM + (SELECT i_category, + i_class, + i_brand, + i_product_name, + d_year, + d_qoy, + d_moy, + s_store_id, + sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + FROM store_sales, + date_dim, + store, + item + WHERE ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1200 AND 1200+11 + GROUP BY rollup(i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id))dw1) dw2 +WHERE rk <= 100 +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_brand NULLS FIRST, + i_product_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + d_moy NULLS FIRST, + s_store_id NULLS FIRST, + sumsales NULLS FIRST, + rk NULLS FIRST +LIMIT 100; +---- +NULL NULL NULL NULL NULL NULL NULL NULL 221552.22 2 +NULL NULL NULL NULL NULL NULL NULL NULL 221552.22 2 +NULL NULL NULL NULL NULL NULL NULL NULL 102550067.81 1 +NULL NULL brandmaxi #2 NULL NULL NULL NULL NULL 128802.28 4 +NULL NULL brandmaxi #2 oughteingought NULL NULL NULL NULL 128802.28 4 +NULL NULL brandmaxi #2 oughteingought 2000 NULL NULL NULL 128802.28 4 +NULL NULL brandmaxi #2 oughteingought 2000 1 NULL NULL 24355.03 15 +NULL NULL brandmaxi #2 oughteingought 2000 1 1 NULL 6940.53 50 +NULL NULL brandmaxi #2 oughteingought 2000 1 1 AAAAAAAABAAAAAAA 6940.53 50 +NULL NULL brandmaxi #2 oughteingought 2000 1 2 NULL 7035.06 48 +NULL NULL brandmaxi #2 oughteingought 2000 1 2 AAAAAAAABAAAAAAA 7035.06 48 +NULL NULL brandmaxi #2 oughteingought 2000 1 3 NULL 10379.44 30 +NULL NULL brandmaxi #2 oughteingought 2000 1 3 AAAAAAAABAAAAAAA 10379.44 30 +NULL NULL brandmaxi #2 oughteingought 2000 2 NULL NULL 14734.99 22 +NULL NULL brandmaxi #2 oughteingought 2000 2 4 NULL 2108.76 62 +NULL NULL brandmaxi #2 oughteingought 2000 2 4 AAAAAAAABAAAAAAA 2108.76 62 +NULL NULL brandmaxi #2 oughteingought 2000 2 5 NULL 5299.49 54 +NULL NULL brandmaxi #2 oughteingought 2000 2 5 AAAAAAAABAAAAAAA 5299.49 54 +NULL NULL brandmaxi #2 oughteingought 2000 2 6 NULL 7326.74 44 +NULL NULL brandmaxi #2 oughteingought 2000 2 6 AAAAAAAABAAAAAAA 7326.74 44 +NULL NULL brandmaxi #2 oughteingought 2000 3 NULL NULL 28868.56 14 +NULL NULL brandmaxi #2 oughteingought 2000 3 7 NULL 10565.05 26 +NULL NULL brandmaxi #2 oughteingought 2000 3 7 AAAAAAAABAAAAAAA 10565.05 26 +NULL NULL brandmaxi #2 oughteingought 2000 3 8 NULL 10350.85 32 +NULL NULL brandmaxi #2 oughteingought 2000 3 8 AAAAAAAABAAAAAAA 10350.85 32 +NULL NULL brandmaxi #2 oughteingought 2000 3 9 NULL 7952.66 42 +NULL NULL brandmaxi #2 oughteingought 2000 3 9 AAAAAAAABAAAAAAA 7952.66 42 +NULL NULL brandmaxi #2 oughteingought 2000 4 NULL NULL 60843.7 10 +NULL NULL brandmaxi #2 oughteingought 2000 4 10 NULL 15324.88 20 +NULL NULL brandmaxi #2 oughteingought 2000 4 10 AAAAAAAABAAAAAAA 15324.88 20 +NULL NULL brandmaxi #2 oughteingought 2000 4 11 NULL 35480.78 11 +NULL NULL brandmaxi #2 oughteingought 2000 4 11 AAAAAAAABAAAAAAA 35480.78 11 +NULL NULL brandmaxi #2 oughteingought 2000 4 12 NULL 10038.04 34 +NULL NULL brandmaxi #2 oughteingought 2000 4 12 AAAAAAAABAAAAAAA 10038.04 34 +NULL NULL exportischolar #2 NULL NULL NULL NULL NULL 92749.94 7 +NULL NULL exportischolar #2 prieingeseought NULL NULL NULL NULL 92749.94 7 +NULL NULL exportischolar #2 prieingeseought 2000 NULL NULL NULL 92749.94 7 +NULL NULL exportischolar #2 prieingeseought 2000 1 NULL NULL 24156.6 16 +NULL NULL exportischolar #2 prieingeseought 2000 1 1 NULL 10491.62 28 +NULL NULL exportischolar #2 prieingeseought 2000 1 1 AAAAAAAABAAAAAAA 10491.62 28 +NULL NULL exportischolar #2 prieingeseought 2000 1 2 NULL 3852.29 58 +NULL NULL exportischolar #2 prieingeseought 2000 1 2 AAAAAAAABAAAAAAA 3852.29 58 +NULL NULL exportischolar #2 prieingeseought 2000 1 3 NULL 9812.69 36 +NULL NULL exportischolar #2 prieingeseought 2000 1 3 AAAAAAAABAAAAAAA 9812.69 36 +NULL NULL exportischolar #2 prieingeseought 2000 2 NULL NULL 12996.74 23 +NULL NULL exportischolar #2 prieingeseought 2000 2 4 NULL 4093.23 56 +NULL NULL exportischolar #2 prieingeseought 2000 2 4 AAAAAAAABAAAAAAA 4093.23 56 +NULL NULL exportischolar #2 prieingeseought 2000 2 5 NULL 2118.51 60 +NULL NULL exportischolar #2 prieingeseought 2000 2 5 AAAAAAAABAAAAAAA 2118.51 60 +NULL NULL exportischolar #2 prieingeseought 2000 2 6 NULL 6785 52 +NULL NULL exportischolar #2 prieingeseought 2000 2 6 AAAAAAAABAAAAAAA 6785 52 +NULL NULL exportischolar #2 prieingeseought 2000 3 NULL NULL 22679.66 17 +NULL NULL exportischolar #2 prieingeseought 2000 3 7 NULL 1560.68 64 +NULL NULL exportischolar #2 prieingeseought 2000 3 7 AAAAAAAABAAAAAAA 1560.68 64 +NULL NULL exportischolar #2 prieingeseought 2000 3 8 NULL 8520.48 40 +NULL NULL exportischolar #2 prieingeseought 2000 3 8 AAAAAAAABAAAAAAA 8520.48 40 +NULL NULL exportischolar #2 prieingeseought 2000 3 9 NULL 12598.5 24 +NULL NULL exportischolar #2 prieingeseought 2000 3 9 AAAAAAAABAAAAAAA 12598.5 24 +NULL NULL exportischolar #2 prieingeseought 2000 4 NULL NULL 32916.94 13 +NULL NULL exportischolar #2 prieingeseought 2000 4 10 NULL 8794.42 38 +NULL NULL exportischolar #2 prieingeseought 2000 4 10 AAAAAAAABAAAAAAA 8794.42 38 +NULL NULL exportischolar #2 prieingeseought 2000 4 11 NULL 7104.48 46 +NULL NULL exportischolar #2 prieingeseought 2000 4 11 AAAAAAAABAAAAAAA 7104.48 46 +NULL NULL exportischolar #2 prieingeseought 2000 4 12 NULL 17018.04 18 +NULL NULL exportischolar #2 prieingeseought 2000 4 12 AAAAAAAABAAAAAAA 17018.04 18 +Books NULL NULL NULL NULL NULL NULL NULL 154336.53 50 +Books NULL NULL NULL NULL NULL NULL NULL 11241291.75 1 +Books NULL corpunivamalg #3 NULL NULL NULL NULL NULL 154336.53 50 +Books NULL corpunivamalg #3 esen stcallyought NULL NULL NULL NULL 154336.53 50 +Books NULL corpunivamalg #3 esen stcallyought 2000 NULL NULL NULL 154336.53 50 +Books arts NULL NULL NULL NULL NULL NULL 656854.9 8 +Books arts amalgmaxi #12 NULL NULL NULL NULL NULL 329816.74 25 +Books arts amalgmaxi #12 oughtpriation NULL NULL NULL NULL 139217.84 78 +Books arts amalgmaxi #12 oughtpriation 2000 NULL NULL NULL 139217.84 78 +Books arts amalgmaxi #3 NULL NULL NULL NULL NULL 140692.55 73 +Books arts amalgmaxi #3 ablecallypri NULL NULL NULL NULL 140692.55 73 +Books arts amalgmaxi #3 ablecallypri 2000 NULL NULL NULL 140692.55 73 +Books business NULL NULL NULL NULL NULL NULL 473439.3 16 +Books business importomaxi #8 NULL NULL NULL NULL NULL 152234.8 56 +Books business importomaxi #8 n stpripriought NULL NULL NULL NULL 152234.8 56 +Books business importomaxi #8 n stpripriought 2000 NULL NULL NULL 152234.8 56 +Books business importomaxi #9 NULL NULL NULL NULL NULL 230646.96 35 +Books business importomaxi #9 eseesecally NULL NULL NULL NULL 137808.86 82 +Books business importomaxi #9 eseesecally 2000 NULL NULL NULL 137808.86 82 +Books computers NULL NULL NULL NULL NULL NULL 596733.76 10 +Books computers exportimaxi #2 NULL NULL NULL NULL NULL 151801.34 59 +Books computers exportimaxi #2 prin stbarought NULL NULL NULL NULL 151801.34 59 +Books computers exportimaxi #2 prin stbarought 2000 NULL NULL NULL 151801.34 59 +Books computers exportimaxi #3 NULL NULL NULL NULL NULL 222162.64 38 +Books cooking NULL NULL NULL NULL NULL NULL 569982.86 11 +Books cooking amalgunivamalg #12 NULL NULL NULL NULL NULL 242089.84 34 +Books entertainments NULL NULL NULL NULL NULL NULL 697513.29 6 +Books entertainments edu packmaxi #12 NULL NULL NULL NULL NULL 338643.39 23 +Books entertainments edu packmaxi #3 NULL NULL NULL NULL NULL 228878.6 36 +Books fiction NULL NULL NULL NULL NULL NULL 1137699.54 3 +Books fiction scholarunivamalg #2 NULL NULL NULL NULL NULL 280625.61 27 +Books fiction scholarunivamalg #2 n stableeing NULL NULL NULL NULL 163385.42 45 +Books fiction scholarunivamalg #2 n stableeing 2000 NULL NULL NULL 163385.42 45 +Books fiction scholarunivamalg #3 NULL NULL NULL NULL NULL 173187.96 42 +Books fiction scholarunivamalg #3 callyesepriought NULL NULL NULL NULL 173187.96 42 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q68.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q68.slt.no new file mode 100644 index 00000000000..9db90115141 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q68.slt.no @@ -0,0 +1,149 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTIRRR +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + sum(ss_ext_sales_price) extended_price, + sum(ss_ext_list_price) list_price, + sum(ss_ext_tax) extended_tax + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_dep_count = 4 + OR household_demographics.hd_vehicle_count= 3) + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_city IN ('Fairview', + 'Midway') + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name NULLS FIRST, + ss_ticket_number NULLS FIRST +LIMIT 100; +---- +NULL NULL Concord Fox 70 15617.02 1059.2 35200.1 +NULL Barbara Lakewood Crossroads 1605 39675.78 1585.03 67339.13 +NULL Kathleen Hardy Oak Hill 4883 24648.88 593.86 51214.77 +NULL Steven Millwood Willow 7453 18758.18 633.79 45256.55 +NULL NULL Springdale Harmony 8257 39278.49 1894.21 67320.03 +NULL NULL Riverview Centerville 14846 16708.43 1059.51 26169.35 +NULL John Enterprise Pleasant Grove 23464 13000.02 223.41 34977.93 +Adams Bryan Waterloo Newtown 20839 25454.42 780.04 52866.38 +Adcock Dawn Clifton Marion 19523 37144.42 2143.71 61434.97 +Adkins Melissa Deerfield Lakewood 18097 6090.83 204.04 11238.81 +Allen Lori Five Points Springfield 11041 9179.25 320.48 25672.49 +Amos Ima Franklin Springfield 21981 21459 755.93 54158.21 +Angel Flora Newport Oakdale 8451 30029.63 789.73 75153.35 +Arrington Victor Elm Grove Bridgeport 8622 8688.08 479.4 35842.3 +Ashe Sara Riverdale Royal 1192 17307.9 459.09 29839.33 +Ashe Barbara Spring Hill Mount Vernon 17181 30636.04 1477.92 58401.82 +Atkinson Kelli Oakwood Lincoln 1463 19994.85 1284.27 44678.83 +Bailey Charlotte Providence Hamilton 12226 12660.12 467.44 22492.11 +Baker Amy Newtown Pine Grove 5701 35178.08 1086.67 46445.74 +Baldwin Laura Red Hill Sulphur Springs 16488 22043.81 560.9 62207.68 +Ball John Lincoln Liberty 11987 14756.56 509.06 26184.34 +Battle John Fairview Clinton 794 20178.98 900.99 43712.68 +Bell Walter Langdon Liberty 16574 31106.41 1024.04 56086 +Blanchard Phillip Pine Grove Centerville 3681 22226.45 674.64 44938.66 +Bliss Heidi Pleasant Grove Allison 2013 5856.19 93.67 16524.8 +Breeden April Oak Hill Greenfield 1574 35813.69 1219.84 52494.3 +Britt Inez Oakwood Hillcrest 61 8996.92 385.04 13384.62 +Bryant Bernard Philadelphia Spring Hill 22333 20421.22 1085.05 37683.65 +Buck Amanda Stringtown Bayside 22536 24107.1 757.16 36157.62 +Burnette Louis Union Hill Jamestown 6096 10951.73 289.59 30688.82 +Calloway Maxine Brownsville Woodbury 15897 36156.1 1603.21 63194.69 +Carr Kathleen Bethel Shady Grove 17770 13137.92 721.71 40092.97 +Castillo Roxane Stringtown Riverdale 435 8721.49 171.82 30368.34 +Chamberlin Michael Greenwood Mechanicsburg 18086 21483.02 1063.94 38890.2 +Chaney Donna Lincoln Johnsonville 19617 26743.33 1590.02 56877.18 +Chang Deanna Lincoln Highland Park 8798 16650.29 460.69 28191.19 +Chavez Tanya Lincoln Hamilton 4969 25218.54 1254.61 44064.58 +Chen Neva Oak Grove Friendship 16314 21344.97 359.85 31476.95 +Cole Ruby Arlington Mount Olive 10552 21056.35 761.5 34509.38 +Cole Matthew Hopewell Fox 11664 15195.02 759.39 34199.01 +Concepcion Robert Woodlawn Farmington 2858 25416.85 720.89 39207.16 +Connolly Pamela Webb Allison 8899 34547.25 1429.55 42666.61 +Contreras Joni Friendship Wilson 19528 9611.24 472.22 39766.16 +Cook Darrin Florence Lee 9063 19439.35 415.56 31816.75 +Cooper Susan Enterprise Five Points 14345 18007.52 461.89 44270.22 +Cooper Eric Hopewell Springfield 19422 11602.09 220.32 24358.55 +Corrigan Christy Clifton Bunker Hill 11524 12411.12 511 17954.39 +Corrigan Christy Clifton Newtown 17823 20144.88 732.13 30205 +Coughlin Sonja Stewart Summit 22147 23533.01 1088.39 50291.83 +Cox Shaun Hopewell Lakewood 15214 17902.55 673.09 44334.26 +Crum Henry Unionville Mount Olive 20855 24612.62 739.59 54435.89 +Davidson Darrell Green Acres Union City 4114 24112 1150.55 54824.29 +Davis Donald Clifton Sulphur Springs 8102 17552.12 354.99 29643.59 +Davis Leroy Red Hill Bunker Hill 21158 10195.51 528.82 37308.96 +Decker Timothy White Oak Enterprise 6664 14887.04 577.92 40015.91 +Dyer Patrick Plainview Highland Park 11389 9129.27 183.23 25810.79 +Ellison Anne Stratford Union Hill 17581 22250.6 887.25 38906.25 +Evans Ladonna New Hope Harmony 4613 23953.22 527.69 41640.77 +Fleming NULL Unionville Wilton 16959 10740.57 553.42 20441.22 +Fortune Lois Bethel Florence 15040 27074.44 1811.52 42103.06 +Foster NULL Union Wildwood 1167 9921.97 440.34 22954.42 +Freeman Marcus Crossroads Red Hill 20496 30719.75 1206.25 53820.87 +Garcia Yolanda Edgewood Woodville 16156 21765.73 903.11 51976.3 +Gibbs Cheryl Oakwood Oakland 14045 28114.73 1224.92 45980.16 +Gibson Walter Mount Olive Macedonia 20024 15595.45 820.75 42519.71 +Goldstein Alexander Greenwood Glenwood 5802 20313.44 550.48 32864.59 +Grant Maryanne Shiloh Lincoln 10097 24335.25 1091.55 59382.63 +Gregory Leola Woodville Springdale 5405 17671.23 472 36908.87 +Grissom Cecelia Woodlawn Centerville 12822 22306.1 724.92 43619.95 +Hackett Marsha Highland Park Waterloo 4003 26750.03 1230.77 45351.12 +Hagen Catherine Indian Village Mountain View 18488 36233.51 1082.57 71603.51 +Hampton Sadie Red Hill Edgewood 13726 38082.01 1211.61 63105.35 +Harrison Holly Forest Hills Oakwood 10214 15816.26 694.39 53257.14 +Hawley Lucille Kingston Lincoln 23825 31826.38 1614.37 63152.44 +Healy William Georgetown Bunker Hill 15164 15234.39 723.77 23344.65 +Henry Delores Mount Olive Deerfield 10445 27392.16 1670.48 57869.67 +Herring Michael Concord Enterprise 20089 19308.17 676.23 36135.22 +Hightower John Mount Pleasant Green Acres 13639 15527.44 842 41596.48 +Holmes Suzanne Wyoming Frogtown 15229 21344.8 1105.63 51707.33 +Hooper Gloria Mount Zion Lakewood 4342 20373.55 354.29 36173.32 +Hopkins Erica Union Hill Mount Zion 20888 26792.75 964.56 65569.23 +Howard Judith Pleasant Hill Valley View 7406 31828.08 1482.09 45803.05 +Hubbard Chad Jamestown Pleasant Valley 22508 25125.05 1120.25 58067.2 +Hughes James Pine Grove Springdale 15340 8993.84 340.37 22594.65 +Hull Steven Kingston Fairview 17039 20950.63 411.47 37221.89 +Ingle Edward Spring Valley Cedar Grove 20385 22235.18 909.9 58582.09 +Jackson Marie The Meadows Spring Hill 3317 16181.19 655.54 48276.14 +Jackson Barbara Bethel Greenfield 18152 8358.07 136.19 25457.22 +Johnson Trina Oak Ridge Midway 5177 43275.74 1836.89 93396.45 +Johnson Beverly Oakdale Enterprise 7637 45541 1549.33 67878.3 +Johnson Kerrie Jamestown Sumner 7859 25314.9 652.7 43507.1 +Johnson Phil Shiloh Lakeview 7931 23532.56 999.61 64079.67 +Johnson David Lakewood Hillcrest 11067 26568.84 878.62 54491.91 +Jones Jeremy Red Hill Woodland 3664 15705.27 634.76 41605.59 +Jones Sandra Clifton Pleasant Hill 6429 21785.67 1439.29 46543.07 +Jones Faye Woodland Ashland 12403 23085.58 1255.95 44658.36 +Jones Rodney Crossroads Hopewell 12770 18657.31 626.15 30319.14 +Jones John Spring Grove Hardy 14194 21472.19 824.92 37021.54 +Khan Lou Antioch Foster 3754 38265.07 1328.12 53159.75 +King Brent White Oak Spring Hill 23833 31437 1598.67 52167.65 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q69.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q69.slt.no new file mode 100644 index 00000000000..3d21575faa7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q69.slt.no @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIITI +SELECT cd_gender, + cd_marital_status, + cd_education_status, + count(*) cnt1, + cd_purchase_estimate, + count(*) cnt2, + cd_credit_rating, + count(*) cnt3 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ('KY', + 'GA', + 'NM') + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS + (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND (NOT EXISTS + (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2) + AND NOT EXISTS + (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_moy BETWEEN 4 AND 4+2)) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +LIMIT 100; +---- +F D 4 yr Degree 1 6500 1 High Risk 1 +F D Advanced Degree 1 500 1 High Risk 1 +F D Unknown 1 6000 1 High Risk 1 +F M 2 yr Degree 1 2000 1 High Risk 1 +F M Advanced Degree 1 500 1 Low Risk 1 +F M Advanced Degree 1 5500 1 High Risk 1 +F M Advanced Degree 1 10000 1 Good 1 +F M College 1 1500 1 Low Risk 1 +F M Unknown 1 9500 1 Low Risk 1 +F S 2 yr Degree 1 1000 1 High Risk 1 +F S Advanced Degree 1 9500 1 Unknown 1 +F S College 1 5500 1 Unknown 1 +F S College 1 9500 1 Low Risk 1 +F S Secondary 1 8500 1 Good 1 +F S Unknown 1 2000 1 Good 1 +F S Unknown 1 6500 1 Unknown 1 +F U 2 yr Degree 1 3000 1 Low Risk 1 +F U 2 yr Degree 1 10000 1 Good 1 +F U Primary 1 5000 1 Good 1 +F U Unknown 1 8000 1 High Risk 1 +F W 2 yr Degree 1 6500 1 Low Risk 1 +F W 4 yr Degree 1 500 1 Unknown 1 +F W 4 yr Degree 1 4000 1 Unknown 1 +F W Advanced Degree 1 5000 1 Good 1 +F W College 1 9000 1 High Risk 1 +F W Secondary 1 3000 1 Good 1 +F W Secondary 1 7000 1 Unknown 1 +M D 2 yr Degree 1 2500 1 Low Risk 1 +M D 2 yr Degree 1 5500 1 Good 1 +M D Advanced Degree 1 4000 1 Good 1 +M D Advanced Degree 1 5500 1 Good 1 +M D College 1 1500 1 Low Risk 1 +M D College 1 3000 1 High Risk 1 +M D Primary 1 4000 1 Unknown 1 +M D Primary 1 6000 1 Low Risk 1 +M D Primary 1 8500 1 High Risk 1 +M D Secondary 2 10000 2 High Risk 2 +M D Unknown 1 3500 1 High Risk 1 +M M 2 yr Degree 1 8000 1 High Risk 1 +M M 2 yr Degree 1 9500 1 High Risk 1 +M M 2 yr Degree 1 10000 1 High Risk 1 +M M 4 yr Degree 1 7500 1 Unknown 1 +M M College 1 3000 1 Low Risk 1 +M S 2 yr Degree 1 2000 1 Low Risk 1 +M S 2 yr Degree 1 4500 1 Unknown 1 +M S 2 yr Degree 1 9500 1 High Risk 1 +M S 2 yr Degree 1 10000 1 High Risk 1 +M S 4 yr Degree 1 4500 1 Good 1 +M S 4 yr Degree 1 5000 1 Unknown 1 +M S College 1 5000 1 Low Risk 1 +M S College 1 8500 1 Low Risk 1 +M S College 1 10000 1 Good 1 +M S Primary 1 500 1 High Risk 1 +M S Primary 1 3000 1 High Risk 1 +M S Primary 1 5500 1 Low Risk 1 +M S Secondary 1 500 1 Low Risk 1 +M S Secondary 1 500 1 Unknown 1 +M S Secondary 1 5000 1 Unknown 1 +M S Secondary 1 7000 1 Low Risk 1 +M S Unknown 1 5500 1 Good 1 +M S Unknown 1 8000 1 Good 1 +M S Unknown 1 8500 1 Good 1 +M U 2 yr Degree 1 1000 1 Good 1 +M U 4 yr Degree 1 1500 1 Unknown 1 +M U 4 yr Degree 1 3000 1 Unknown 1 +M U College 1 3500 1 High Risk 1 +M U College 1 7500 1 Good 1 +M U Primary 1 9500 1 Unknown 1 +M U Unknown 1 8000 1 Unknown 1 +M W Primary 1 6000 1 Good 1 +M W Unknown 1 6000 1 High Risk 1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q7.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q7.slt.no new file mode 100644 index 00000000000..596b8eb8308 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q7.slt.no @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRRR +SELECT i_item_id, + avg(ss_quantity) agg1, + avg(ss_list_price) agg2, + avg(ss_coupon_amt) agg3, + avg(ss_sales_price) agg4 +FROM store_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'S' + AND cd_education_status = 'College' + AND (p_channel_email = 'N' + OR p_channel_event = 'N') + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +---- +AAAAAAAAAABAAAAA 69.666666666667 47.236666666667 0 28.813333333333 +AAAAAAAAAACAAAAA 39 16.29 149.24 7.81 +AAAAAAAAAAEAAAAA 27 117.77 0 107.17 +AAAAAAAAAAFAAAAA 28.5 121.25 0 75.345 +AAAAAAAAAAHAAAAA 84 161.49 0 117.88 +AAAAAAAAABAAAAAA 31 159.33 0 81.25 +AAAAAAAAABBAAAAA 38 101.87 0 58.06 +AAAAAAAAABDAAAAA 24 55.7 0 51.24 +AAAAAAAAABEAAAAA 46 40.99 0 36.07 +AAAAAAAAACCAAAAA 26 29.38 0 4.11 +AAAAAAAAACDAAAAA 70 123.8 0 79.23 +AAAAAAAAACFAAAAA 5 11.18 25.27 6.48 +AAAAAAAAACGAAAAA 74 142.69 1815.64 28.53 +AAAAAAAAADBAAAAA 26 121.38 0 114.09 +AAAAAAAAADEAAAAA 6 120.4 0 8.42 +AAAAAAAAADFAAAAA 22 27.15 208.66 12.48 +AAAAAAAAAEAAAAAA 72 50.4 1097.606666666667 22.496666666667 +AAAAAAAAAFCAAAAA 34 125.315 0 75.305 +AAAAAAAAAFDAAAAA 84 77.94 0 51.35 +AAAAAAAAAFFAAAAA 58 39.16 0 32.11 +AAAAAAAAAFGAAAAA 9 49.06 0 3.43 +AAAAAAAAAGCAAAAA 82 142.16 0 35.54 +AAAAAAAAAGEAAAAA 72.666666666667 104.956666666667 141.243333333333 66.646666666667 +AAAAAAAAAHAAAAAA 32 48.03 0 8.16 +AAAAAAAAAHBAAAAA 5 53.29 0 13.85 +AAAAAAAAAHDAAAAA 36 84.22 0 48 +AAAAAAAAAIAAAAAA 10 44.28 19.92 7.97 +AAAAAAAAAICAAAAA 44 162.5 0 138.12 +AAAAAAAAAIDAAAAA 32.5 50.8 0 17.285 +AAAAAAAAAJBAAAAA 22 123.12 1474.555 67.1 +AAAAAAAAAJCAAAAA 36 31.55 223.08 10.585 +AAAAAAAAAJEAAAAA 17 135.65 0 51.54 +AAAAAAAAAKDAAAAA 41.666666666667 54.376666666667 655.013333333333 27.293333333333 +AAAAAAAAALCAAAAA 52 93.71 0 86.21 +AAAAAAAAALDAAAAA 99 93.88 0 26.28 +AAAAAAAAAMBAAAAA 31 19.53 0 11.71 +AAAAAAAAAMCAAAAA 52.5 52.465 0 37.5 +AAAAAAAAAMFAAAAA 94.5 36.15 925.215 26.015 +AAAAAAAAANAAAAAA 11 124.46 0 120.72 +AAAAAAAAANEAAAAA 20 40.955 9.605 12.115 +AAAAAAAAAOAAAAAA 38 5.85 58.68 3.51 +AAAAAAAAAOCAAAAA 51 62.17 0 41.03 +AAAAAAAAAOGAAAAA 93 118.91 0 21.4 +AAAAAAAAAPCAAAAA 69 36.75 0 19.47 +AAAAAAAABAGAAAAA 55 35.65 0 12.12 +AAAAAAAABBFAAAAA 1 64.92 0 33.81 +AAAAAAAABCEAAAAA 72 37.2 0 19.71 +AAAAAAAABFBAAAAA 75 16.55 145.53 2.31 +AAAAAAAABFEAAAAA 50 111.665 0 73.545 +AAAAAAAABGAAAAAA 55 103.7 461.83 27.99 +AAAAAAAABGDAAAAA 68.5 144.685 0 31.495 +AAAAAAAABHFAAAAA 85 33.13 0 26.5 +AAAAAAAABJAAAAAA 82 94.535 0 78.2 +AAAAAAAABLBAAAAA 37 116.02 0 25.52 +AAAAAAAABLEAAAAA 15 121.49 0 121.49 +AAAAAAAABNFAAAAA 30 102.57 0 75.9 +AAAAAAAABOEAAAAA 100 175.27 613.41 87.63 +AAAAAAAACAAAAAAA 12 39.05 150.8 13.66 +AAAAAAAACADAAAAA 51.666666666667 33.32 0 7.136666666667 +AAAAAAAACAFAAAAA 53 58.99 0 5.89 +AAAAAAAACBCAAAAA 50 165.51 664.51 120.82 +AAAAAAAACCAAAAAA 38 128.34 0 120.63 +AAAAAAAACCBAAAAA 94 106.85 0 17.09 +AAAAAAAACCDAAAAA 22 149.72 0 139.23 +AAAAAAAACDAAAAAA 88.5 51.465 139.93 9.515 +AAAAAAAACDCAAAAA 74 144.94 0 56.52 +AAAAAAAACDFAAAAA 37 139.195 0 79.035 +AAAAAAAACDGAAAAA 53.5 92.765 0 85.62 +AAAAAAAACEBAAAAA 44.5 67.665 0 59.12 +AAAAAAAACECAAAAA 58 59.68 0 13.12 +AAAAAAAACEFAAAAA 56 49.86 0 22.335 +AAAAAAAACFBAAAAA 50 39.78 0 28.295 +AAAAAAAACGAAAAAA 80.5 42.005 0 19.355 +AAAAAAAACGDAAAAA 87 132.725 0 45.1 +AAAAAAAACHBAAAAA 14.5 130.07 0 51.84 +AAAAAAAACHEAAAAA 20 7.97 0 7.81 +AAAAAAAACIAAAAAA 61 115.55 0 4.62 +AAAAAAAACIBAAAAA 65 21.9 0 4.38 +AAAAAAAACIEAAAAA 49.5 53.035 34.31 22.615 +AAAAAAAACJAAAAAA 64 8.91 0 8.73 +AAAAAAAACJCAAAAA 21 40.74 0 7.77 +AAAAAAAACJDAAAAA 100 145.19 0 52.26 +AAAAAAAACJFAAAAA 19 101.205 0 77.175 +AAAAAAAACKEAAAAA 35 70.14 490.45 25.95 +AAAAAAAACLAAAAAA 64 30.15 0 10.55 +AAAAAAAACLDAAAAA 48 33.04 0 15.19 +AAAAAAAACMCAAAAA 31 106.5 1630.82 69.22 +AAAAAAAACMDAAAAA 34.5 135.245 0 105.98 +AAAAAAAACMFAAAAA 2 109.97 0 47.28 +AAAAAAAACNBAAAAA 56 97.13 113.07 12.62 +AAAAAAAACNFAAAAA 40 61.74 5.705 43.025 +AAAAAAAACOAAAAAA 26 17.7 0 11.5 +AAAAAAAACOBAAAAA 53 26.01 0 4.065 +AAAAAAAACOEAAAAA 97 134.34 0 85.97 +AAAAAAAACPAAAAAA 69 82.17 0 34.51 +AAAAAAAACPCAAAAA 59.5 95.775 178.635 19.94 +AAAAAAAACPDAAAAA NULL 47.1 0 1.41 +AAAAAAAACPFAAAAA 27 54.24 0 8.13 +AAAAAAAADABAAAAA 41 57.8 758.41 19.07 +AAAAAAAADAHAAAAA 66 51.87 0 47.613333333333 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q70.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q70.slt.no new file mode 100644 index 00000000000..9fc55f4d267 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q70.slt.no @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RTTII +SELECT sum(ss_net_profit) AS total_sum, + s_state, + s_county, + grouping(s_state)+grouping(s_county) AS lochierarchy, + rank() OVER (PARTITION BY grouping(s_state)+grouping(s_county), + CASE + WHEN grouping(s_county) = 0 THEN s_state + END + ORDER BY sum(ss_net_profit) DESC) AS rank_within_parent +FROM store_sales, + date_dim d1, + store +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN + (SELECT s_state + FROM + (SELECT s_state AS s_state, + rank() OVER (PARTITION BY s_state + ORDER BY sum(ss_net_profit) DESC) AS ranking + FROM store_sales, + store, + date_dim + WHERE d_month_seq BETWEEN 1200 AND 1200+11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5 ) +GROUP BY rollup(s_state,s_county) +ORDER BY lochierarchy DESC , + CASE + WHEN grouping(s_state)+grouping(s_county) = 0 THEN s_state + END , + rank_within_parent +LIMIT 100; +---- +-44708893.64 NULL NULL 2 1 +-44708893.64 TN NULL 1 1 +-44708893.64 TN Williamson County 0 1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q71.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q71.slt.no new file mode 100644 index 00000000000..92fad927a59 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q71.slt.no @@ -0,0 +1,107 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query ITIIR +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + sum(ext_price) ext_price +FROM item, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, + date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, + date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy=11 + AND d_year=1999 + UNION ALL SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy=11 + AND d_year=1999 ) tmp, + time_dim +WHERE sold_item_sk = i_item_sk + AND i_manager_id=1 + AND time_sk = t_time_sk + AND (t_meal_time = 'breakfast' + OR t_meal_time = 'dinner') +GROUP BY i_brand, + i_brand_id, + t_hour, + t_minute +ORDER BY ext_price DESC NULLS FIRST, + i_brand_id NULLS FIRST, + t_hour NULLS FIRST; +---- +7010004 univnameless #4 17 27 16760.59 +6007003 brandcorp #3 19 46 8076.2 +1002002 importoamalg #2 9 33 7050.93 +1002002 importoamalg #2 17 57 6408.22 +1002002 importoamalg #2 18 52 6079.15 +7010004 univnameless #4 18 35 5753.02 +6007003 brandcorp #3 19 20 5499.68 +4004001 edu packedu pack #1 18 28 4840.75 +7010004 univnameless #4 19 7 4672.5 +6007003 brandcorp #3 17 30 4584.39 +10010013 univamalgamalg #13 18 44 4515.05 +10004004 edu packunivamalg #4 9 42 4407.04 +1002002 importoamalg #2 18 10 4330.04 +7008009 namelessbrand #9 17 4 4276.34 +7008009 namelessbrand #9 8 53 4190.4 +10004004 edu packunivamalg #4 8 35 3933.15 +10010013 univamalgamalg #13 17 17 3276 +1001002 amalgamalg #2 8 23 3229.98 +1001002 amalgamalg #2 19 50 3047.4 +6007003 brandcorp #3 7 39 2617.16 +1002002 importoamalg #2 9 22 2582.32 +10004004 edu packunivamalg #4 7 43 2089.24 +4004001 edu packedu pack #1 19 43 2040.56 +10010013 univamalgamalg #13 19 56 1601.4 +4004001 edu packedu pack #1 8 52 1567.02 +6007003 brandcorp #3 18 47 1490.17 +7010004 univnameless #4 18 28 1480.32 +10004004 edu packunivamalg #4 8 4 1436.83 +7008009 namelessbrand #9 9 10 1325.4 +10004004 edu packunivamalg #4 9 28 1306.03 +10004004 edu packunivamalg #4 19 36 1227.28 +10010013 univamalgamalg #13 17 36 1090.32 +6005001 scholarcorp #1 17 19 966.84 +10004004 edu packunivamalg #4 18 56 870.09 +1001002 amalgamalg #2 19 4 866.64 +7008009 namelessbrand #9 18 59 716.4 +4004001 edu packedu pack #1 19 45 707.5 +1001002 amalgamalg #2 17 21 681.12 +1001002 amalgamalg #2 9 32 632.16 +6007003 brandcorp #3 19 35 618.63 +10004004 edu packunivamalg #4 9 38 576.72 +7008009 namelessbrand #9 18 39 481.08 +10004004 edu packunivamalg #4 19 8 460.8 +10010013 univamalgamalg #13 17 52 447.64 +6007003 brandcorp #3 9 25 339.9 +10010013 univamalgamalg #13 9 13 317.98 +7008009 namelessbrand #9 17 5 298.62 +7008009 namelessbrand #9 9 54 280.14 +6005001 scholarcorp #1 19 37 261.52 +7008009 namelessbrand #9 9 8 213.84 +1002002 importoamalg #2 9 3 203.85 +7010004 univnameless #4 17 44 141.37 +7010004 univnameless #4 9 54 117 +6005001 scholarcorp #1 19 16 64.32 +6005001 scholarcorp #1 9 43 27.72 +10004004 edu packunivamalg #4 18 50 20.09 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q72.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q72.slt.no new file mode 100644 index 00000000000..6855af37f1f --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q72.slt.no @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIIII +SELECT i_item_desc, + w_warehouse_name, + d1.d_week_seq, + sum(CASE + WHEN p_promo_sk IS NULL THEN 1 + ELSE 0 + END) no_promo, + sum(CASE + WHEN p_promo_sk IS NOT NULL THEN 1 + ELSE 0 + END) promo, + count(*) total_cnt +FROM catalog_sales +JOIN inventory ON (cs_item_sk = inv_item_sk) +JOIN warehouse ON (w_warehouse_sk=inv_warehouse_sk) +JOIN item ON (i_item_sk = cs_item_sk) +JOIN customer_demographics ON (cs_bill_cdemo_sk = cd_demo_sk) +JOIN household_demographics ON (cs_bill_hdemo_sk = hd_demo_sk) +JOIN date_dim d1 ON (cs_sold_date_sk = d1.d_date_sk) +JOIN date_dim d2 ON (inv_date_sk = d2.d_date_sk) +JOIN date_dim d3 ON (cs_ship_date_sk = d3.d_date_sk) +LEFT OUTER JOIN promotion ON (cs_promo_sk=p_promo_sk) +LEFT OUTER JOIN catalog_returns ON (cr_item_sk = cs_item_sk + AND cr_order_number = cs_order_number) +WHERE d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > (d1.d_date + INTERVAL '5' DAY) + AND hd_buy_potential = '>10000' + AND d1.d_year = 1999 + AND cd_marital_status = 'D' +GROUP BY i_item_desc, + w_warehouse_name, + d1.d_week_seq +ORDER BY total_cnt DESC NULLS FIRST, + i_item_desc NULLS FIRST, + w_warehouse_name NULLS FIRST, + d1.d_week_seq NULLS FIRST +LIMIT 100; +---- +NULL Conventional childr 5211 0 1 1 +Actually keen visitors shall inject just to Conventional childr 5199 0 1 1 +Ago daily schools can get so precise artists. Bloody agencies could see in a Conventional childr 5209 0 1 1 +Arms should not produce more. Mutual, heavy prices lead. Alone minimal effects cannot look pr Conventional childr 5210 0 1 1 +Bad, original councils ought to let human, new procedures. Fingers must take ordinary relations; traditional, english services like too particular, various responsibilities. Possible, responsi Conventional childr 5183 0 1 1 +Bloody instruments must not sing nowadays strangely valuable groups. Standards would allow much forests. Criminal, important days might allow very from a applicatio Conventional childr 5216 0 1 1 +Carefully keen planes would test vi Conventional childr 5181 0 1 1 +Carefully keen planes would test vi Conventional childr 5215 0 1 1 +Clearly relevant rooms develop necessary hotels. Available women can get as att Conventional childr 5198 0 1 1 +Close, small reports will expand seriously men. Serious, a Conventional childr 5206 0 1 1 +Complete cases shall happen to a generations. Systems must tell sometimes main scenes. Tonnes make still main trees. Different, personal owners become often little important y Conventional childr 5200 0 1 1 +Councils must form more available, common strategies. Factors can enable. J Conventional childr 5216 0 1 1 +Different ages should read other, greek camps Conventional childr 5186 0 1 1 +Different files remain on a conditions. Low specific resources could not foresee such as a risks. Just combined efforts may make reports; boring, super memories descend to Conventional childr 5216 0 1 1 +Dramatically particular charts used to boost unusually false organisers. I Conventional childr 5206 0 1 1 +Factors wish local teachers. Apparently bitter studies should feel. Private masses may not get. Obviously male errors will get now unusual groups. Enough new elements must not reject thus due essentia Conventional childr 5210 0 1 1 +Flowers suffer following, subst Conventional childr 5207 0 1 1 +Gastric ends go personal, official years; concentrat Conventional childr 5211 0 1 1 +Gene Conventional childr 5182 0 1 1 +Great, aware guidelines will risk really with a i Conventional childr 5207 0 1 1 +Happy products provide mediterranean figures. Conventional childr 5201 0 1 1 +Hea Conventional childr 5210 0 1 1 +Interesting offices should not find already from a characteristics. N Conventional childr 5217 0 1 1 +Large wings used to see particul Conventional childr 5166 0 1 1 +Large, mass ways ought to make very different, right conservatives. Black, diplomatic observers must cope only firm responsibilities. Only global methods thrive so southern places. Answers give. Grea Conventional childr 5199 0 1 1 +Level, natural pages tell relevant stones. Strange events must not throw twice. High subjects s Conventional childr 5211 0 1 1 +Major, strange officials would not assess bodies. Final, suitable applications must serve towns. Joint boys might question most social, tiny strings. Kn Conventional childr 5210 0 1 1 +More positive terms shall not change considerable waves; duties stimulate so in a germans. Real, general costs might send on the eyes. Electrical traders know on a rates. Conventional childr 5192 0 1 1 +More still tests shall not lie old, valuable trends. Local, content cars Conventional childr 5168 0 1 1 +Officers ought to serve even. Central objectives help accounts. Houses bring exclusively after a questions. Increased talks account most new, likely patterns. Conventional childr 5177 0 1 1 +Old matters extract characters. Men might preserve really special objectives; young, afraid events deliver best so much as Conventional childr 5185 0 1 1 +Old years hear effective, local men. Original names go above lo Conventional childr 5210 0 1 1 +Popul Conventional childr 5203 0 1 1 +Positive reasons Conventional childr 5204 0 1 1 +Pp. see even good, wonderful cel Conventional childr 5170 0 1 1 +Regular years lead ideas. Operations put at all to a ideas. Notes tackle in the months. New, common respects might guess forward high, open consequences. Right, ma Conventional childr 5198 0 1 1 +Scientists shall reduce. As small records may give again cases. Consistent, stupid scales should swa Conventional childr 5204 0 1 1 +Small, early knees meet strongly funds. Present levels give also key prices. Blank products choose frequently appropri Conventional childr 5211 0 1 1 +Social minutes try and so on Conventional childr 5198 0 1 1 +Soon constitutional provisions might send hot components. Ancient children might Conventional childr 5210 0 1 1 +Sources can try already by a tests. Particul Conventional childr 5185 0 1 1 +Special workers ought to grow dramatic Conventional childr 5197 0 1 1 +Special, so-called things talk clinical claims. Global, certain departments should say prices; clearly sudden expenses feel moving winds. More financial years could pro Conventional childr 5187 0 1 1 +Still early stones Conventional childr 5193 0 1 1 +Still personal jobs could not forget. Available customers will seem Conventional childr 5208 0 1 1 +Successful sources shall confront too from a costs; duly working operations should look quick Conventional childr 5209 0 1 1 +Trying designs come useful years. Units used to know levels. Rather other versions can match indeed part Conventional childr 5204 0 1 1 +Well whole are Conventional childr 5204 0 1 1 +White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Conventional childr 5207 0 1 1 +Wrong, spanish islands can settle extremely final kids; outer, difficult pupils may convert typical, real police. Conventional childr 5200 0 1 1 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q73.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q73.slt.no new file mode 100644 index 00000000000..a361d9fa002 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q73.slt.no @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTII +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM + (SELECT ss_ticket_number, + ss_customer_sk, + count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND (household_demographics.hd_buy_potential = 'Unknown' + OR household_demographics.hd_buy_potential = '>10000') + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN (household_demographics.hd_dep_count*1.000)/ household_demographics.hd_vehicle_count + ELSE NULL + END > 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_county IN ('Orange County', + 'Bronx County', + 'Franklin Parish', + 'Williamson County') + GROUP BY ss_ticket_number, + ss_customer_sk) dj, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt DESC, + c_last_name ASC; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q74.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q74.slt.no new file mode 100644 index 00000000000..89fb756cff1 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q74.slt.no @@ -0,0 +1,72 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTT +WITH year_total AS + (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ss_net_paid) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year + UNION ALL SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year_, + sum(ws_net_paid) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN (2001, + 2001+1) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year_ = 2001 + AND t_s_secyear.year_ = 2001+1 + AND t_w_firstyear.year_ = 2001 + AND t_w_secyear.year_ = 2001+1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / t_w_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN t_s_secyear.year_total / t_s_firstyear.year_total + ELSE NULL + END +ORDER BY 1 NULLS FIRST +LIMIT 100; +---- +AAAAAAAAEPOBAAAA Thomas Whitehurst +AAAAAAAAFNMBAAAA Shawnna Freeland +AAAAAAAAKJHBAAAA Roderick Ballard diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q75.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q75.slt.no new file mode 100644 index 00000000000..39f5f14d536 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q75.slt.no @@ -0,0 +1,105 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIIIIIIIR +WITH all_sales AS + ( SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + SUM(sales_cnt) AS sales_cnt , + SUM(sales_amt) AS sales_amt + FROM + (SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + cs_quantity - COALESCE(cr_return_quantity,0) AS sales_cnt , + cs_ext_sales_price - COALESCE(cr_return_amount,0.0) AS sales_amt + FROM catalog_sales + JOIN item ON i_item_sk=cs_item_sk + JOIN date_dim ON d_date_sk=cs_sold_date_sk + LEFT JOIN catalog_returns ON (cs_order_number=cr_order_number + AND cs_item_sk=cr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ss_quantity - COALESCE(sr_return_quantity,0) AS sales_cnt , + ss_ext_sales_price - COALESCE(sr_return_amt,0.0) AS sales_amt + FROM store_sales + JOIN item ON i_item_sk=ss_item_sk + JOIN date_dim ON d_date_sk=ss_sold_date_sk + LEFT JOIN store_returns ON (ss_ticket_number=sr_ticket_number + AND ss_item_sk=sr_item_sk) + WHERE i_category='Books' + UNION SELECT d_year , + i_brand_id , + i_class_id , + i_category_id , + i_manufact_id , + ws_quantity - COALESCE(wr_return_quantity,0) AS sales_cnt , + ws_ext_sales_price - COALESCE(wr_return_amt,0.0) AS sales_amt + FROM web_sales + JOIN item ON i_item_sk=ws_item_sk + JOIN date_dim ON d_date_sk=ws_sold_date_sk + LEFT JOIN web_returns ON (ws_order_number=wr_order_number + AND ws_item_sk=wr_item_sk) + WHERE i_category='Books') sales_detail + GROUP BY d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id) +SELECT prev_yr.d_year AS prev_year , + curr_yr.d_year AS year_ , + curr_yr.i_brand_id , + curr_yr.i_class_id , + curr_yr.i_category_id , + curr_yr.i_manufact_id , + prev_yr.sales_cnt AS prev_yr_cnt , + curr_yr.sales_cnt AS curr_yr_cnt , + curr_yr.sales_cnt-prev_yr.sales_cnt AS sales_cnt_diff , + curr_yr.sales_amt-prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, + all_sales prev_yr +WHERE curr_yr.i_brand_id=prev_yr.i_brand_id + AND curr_yr.i_class_id=prev_yr.i_class_id + AND curr_yr.i_category_id=prev_yr.i_category_id + AND curr_yr.i_manufact_id=prev_yr.i_manufact_id + AND curr_yr.d_year=2002 + AND prev_yr.d_year=2002-1 + AND CAST(curr_yr.sales_cnt AS DECIMAL(17,2))/CAST(prev_yr.sales_cnt AS DECIMAL(17,2))<0.9 +ORDER BY sales_cnt_diff, + sales_amt_diff +LIMIT 100; +---- +2001 2002 7014009 1 9 270 6406 4902 -1504 -96433.09 +2001 2002 1003001 11 9 42 6494 5035 -1459 -114481.62 +2001 2002 9010004 10 9 545 5880 4551 -1329 -37133.98 +2001 2002 9001002 1 9 571 5718 4459 -1259 -84458.37 +2001 2002 9004010 4 9 10 5731 4515 -1216 -40636.79 +2001 2002 9006010 6 9 100 5781 4720 -1061 -54852.46 +2001 2002 9008010 2 9 954 6018 4961 -1057 11852.78 +2001 2002 9011002 11 9 390 5826 4800 -1026 -49995.57 +2001 2002 9015008 15 9 285 5674 4668 -1006 -19662.6 +2001 2002 10003008 8 9 175 5286 4288 -998 -48826.96 +2001 2002 9003008 3 9 375 5658 4673 -985 -93779.45 +2001 2002 9008004 8 9 220 5720 4768 -952 -47017.66 +2001 2002 9008008 8 9 194 5778 4862 -916 -79951.52 +2001 2002 9006010 3 9 99 4971 4091 -880 -71635.44 +2001 2002 9001010 4 9 268 5125 4314 -811 -43611.3 +2001 2002 9001009 1 9 117 4657 3855 -802 -22681.71 +2001 2002 9015010 2 9 286 5467 4745 -722 -32261.81 +2001 2002 7004007 2 9 248 5696 4990 -706 -4431.85 +2001 2002 1002001 4 9 546 5873 5222 -651 -35266.76 +2001 2002 10009005 9 9 149 6025 5376 -649 -11139.67 +2001 2002 9002008 2 9 256 4778 4153 -625 -55830.85 +2001 2002 2001001 1 9 2 5512 4888 -624 -27199.28 +2001 2002 1004001 4 9 286 5437 4848 -589 43130.5 +2001 2002 9010008 10 9 66 5362 4814 -548 -44680.67 +2001 2002 7004005 4 9 156 4942 4447 -495 -34471.55 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q76.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q76.slt.no new file mode 100644 index 00000000000..b3efda3bc01 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q76.slt.no @@ -0,0 +1,160 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTIITIR +SELECT channel, + col_name, + d_year, + d_qoy, + i_category, + COUNT(*) sales_cnt, + SUM(ext_sales_price) sales_amt +FROM + ( SELECT 'store' AS channel, + 'ss_store_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, + item, + date_dim + WHERE ss_store_sk IS NULL + AND ss_sold_date_sk=d_date_sk + AND ss_item_sk=i_item_sk + UNION ALL SELECT 'web' AS channel, + 'ws_ship_customer_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, + item, + date_dim + WHERE ws_ship_customer_sk IS NULL + AND ws_sold_date_sk=d_date_sk + AND ws_item_sk=i_item_sk + UNION ALL SELECT 'catalog' AS channel, + 'cs_ship_addr_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, + item, + date_dim + WHERE cs_ship_addr_sk IS NULL + AND cs_sold_date_sk=d_date_sk + AND cs_item_sk=i_item_sk) foo +GROUP BY channel, + col_name, + d_year, + d_qoy, + i_category +ORDER BY channel NULLS FIRST, + col_name NULLS FIRST, + d_year NULLS FIRST, + d_qoy NULLS FIRST, + i_category NULLS FIRST +LIMIT 100; +---- +catalog cs_ship_addr_sk 1998 1 Books 5 7206.99 +catalog cs_ship_addr_sk 1998 1 Children 1 NULL +catalog cs_ship_addr_sk 1998 1 Electronics 3 0 +catalog cs_ship_addr_sk 1998 1 Home 2 NULL +catalog cs_ship_addr_sk 1998 1 Jewelry 5 13391.41 +catalog cs_ship_addr_sk 1998 1 Music 3 5081.44 +catalog cs_ship_addr_sk 1998 1 Shoes 1 20528.2 +catalog cs_ship_addr_sk 1998 1 Sports 1 2289.6 +catalog cs_ship_addr_sk 1998 1 Women 1 411.07 +catalog cs_ship_addr_sk 1998 2 Books 1 2254.92 +catalog cs_ship_addr_sk 1998 2 Children 2 NULL +catalog cs_ship_addr_sk 1998 2 Jewelry 1 988.68 +catalog cs_ship_addr_sk 1998 2 Men 1 NULL +catalog cs_ship_addr_sk 1998 2 Music 1 NULL +catalog cs_ship_addr_sk 1998 2 Shoes 1 279 +catalog cs_ship_addr_sk 1998 2 Sports 1 5616.97 +catalog cs_ship_addr_sk 1998 3 Children 2 2587.99 +catalog cs_ship_addr_sk 1998 3 Electronics 4 11493.8 +catalog cs_ship_addr_sk 1998 3 Home 3 NULL +catalog cs_ship_addr_sk 1998 3 Jewelry 2 14605.8 +catalog cs_ship_addr_sk 1998 3 Men 2 NULL +catalog cs_ship_addr_sk 1998 3 Music 3 NULL +catalog cs_ship_addr_sk 1998 3 Shoes 1 1485.8 +catalog cs_ship_addr_sk 1998 3 Sports 3 2311.34 +catalog cs_ship_addr_sk 1998 3 Women 1 507.78 +catalog cs_ship_addr_sk 1998 4 Books 2 NULL +catalog cs_ship_addr_sk 1998 4 Children 4 7318.08 +catalog cs_ship_addr_sk 1998 4 Electronics 10 10598.91 +catalog cs_ship_addr_sk 1998 4 Home 3 NULL +catalog cs_ship_addr_sk 1998 4 Jewelry 5 14681.6 +catalog cs_ship_addr_sk 1998 4 Men 1 1011.08 +catalog cs_ship_addr_sk 1998 4 Music 4 2.61 +catalog cs_ship_addr_sk 1998 4 Shoes 2 NULL +catalog cs_ship_addr_sk 1998 4 Sports 2 NULL +catalog cs_ship_addr_sk 1998 4 Women 6 11591.16 +catalog cs_ship_addr_sk 1999 1 Electronics 1 NULL +catalog cs_ship_addr_sk 1999 1 Home 1 NULL +catalog cs_ship_addr_sk 1999 1 Men 2 5949.64 +catalog cs_ship_addr_sk 1999 1 Shoes 1 3401.6 +catalog cs_ship_addr_sk 1999 1 Women 1 2451.6 +catalog cs_ship_addr_sk 1999 2 Electronics 1 NULL +catalog cs_ship_addr_sk 1999 2 Home 1 157.76 +catalog cs_ship_addr_sk 1999 2 Jewelry 1 13627.53 +catalog cs_ship_addr_sk 1999 2 Men 1 6337.86 +catalog cs_ship_addr_sk 1999 2 Shoes 4 2249.07 +catalog cs_ship_addr_sk 1999 3 Books 1 4613.99 +catalog cs_ship_addr_sk 1999 3 Children 2 538.56 +catalog cs_ship_addr_sk 1999 3 Electronics 1 NULL +catalog cs_ship_addr_sk 1999 3 Home 3 4559.91 +catalog cs_ship_addr_sk 1999 3 Jewelry 4 320 +catalog cs_ship_addr_sk 1999 3 Men 3 7168.52 +catalog cs_ship_addr_sk 1999 3 Music 2 27.54 +catalog cs_ship_addr_sk 1999 3 Shoes 2 3470.25 +catalog cs_ship_addr_sk 1999 3 Sports 1 328.6 +catalog cs_ship_addr_sk 1999 3 Women 1 NULL +catalog cs_ship_addr_sk 1999 4 Books 2 4164.12 +catalog cs_ship_addr_sk 1999 4 Children 4 10086.76 +catalog cs_ship_addr_sk 1999 4 Electronics 2 1380.69 +catalog cs_ship_addr_sk 1999 4 Home 2 8343 +catalog cs_ship_addr_sk 1999 4 Jewelry 3 NULL +catalog cs_ship_addr_sk 1999 4 Music 4 9293.11 +catalog cs_ship_addr_sk 1999 4 Shoes 1 355.64 +catalog cs_ship_addr_sk 1999 4 Sports 3 NULL +catalog cs_ship_addr_sk 1999 4 Women 4 4509.26 +catalog cs_ship_addr_sk 2000 1 Children 1 809.88 +catalog cs_ship_addr_sk 2000 1 Music 2 1233.56 +catalog cs_ship_addr_sk 2000 1 Shoes 1 NULL +catalog cs_ship_addr_sk 2000 2 Books 1 5440.76 +catalog cs_ship_addr_sk 2000 2 Children 1 452.2 +catalog cs_ship_addr_sk 2000 2 Electronics 1 15685.37 +catalog cs_ship_addr_sk 2000 2 Home 2 4743.11 +catalog cs_ship_addr_sk 2000 2 Jewelry 3 903.95 +catalog cs_ship_addr_sk 2000 2 Men 1 1608.02 +catalog cs_ship_addr_sk 2000 2 Music 2 513.88 +catalog cs_ship_addr_sk 2000 3 Books 4 4030.64 +catalog cs_ship_addr_sk 2000 3 Electronics 4 12.34 +catalog cs_ship_addr_sk 2000 3 Home 2 392.58 +catalog cs_ship_addr_sk 2000 3 Jewelry 1 NULL +catalog cs_ship_addr_sk 2000 3 Men 4 447.6 +catalog cs_ship_addr_sk 2000 3 Music 4 1779.92 +catalog cs_ship_addr_sk 2000 3 Shoes 2 5747.7 +catalog cs_ship_addr_sk 2000 3 Sports 4 8016.55 +catalog cs_ship_addr_sk 2000 3 Women 3 5521.29 +catalog cs_ship_addr_sk 2000 4 Books 4 2817.1 +catalog cs_ship_addr_sk 2000 4 Children 2 2115.84 +catalog cs_ship_addr_sk 2000 4 Electronics 2 NULL +catalog cs_ship_addr_sk 2000 4 Home 3 9334.32 +catalog cs_ship_addr_sk 2000 4 Jewelry 3 5684.9 +catalog cs_ship_addr_sk 2000 4 Men 2 1828.96 +catalog cs_ship_addr_sk 2000 4 Music 1 2559.04 +catalog cs_ship_addr_sk 2000 4 Shoes 4 9267.74 +catalog cs_ship_addr_sk 2000 4 Sports 4 29879.19 +catalog cs_ship_addr_sk 2000 4 Women 2 7212.38 +catalog cs_ship_addr_sk 2001 1 Children 1 NULL +catalog cs_ship_addr_sk 2001 1 Electronics 3 NULL +catalog cs_ship_addr_sk 2001 1 Home 2 553.28 +catalog cs_ship_addr_sk 2001 1 Jewelry 2 NULL +catalog cs_ship_addr_sk 2001 1 Shoes 1 NULL +catalog cs_ship_addr_sk 2001 1 Women 1 4147.72 +catalog cs_ship_addr_sk 2001 2 Children 1 657.59 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q77.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q77.slt.no new file mode 100644 index 00000000000..c48bb00e623 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q77.slt.no @@ -0,0 +1,110 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRRR +WITH ss AS + (SELECT s_store_sk, + sum(ss_ext_sales_price) AS sales, + sum(ss_net_profit) AS profit + FROM store_sales, + date_dim, + store + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk) , + sr AS + (SELECT s_store_sk, + sum(sr_return_amt) AS returns_, + sum(sr_net_loss) AS profit_loss + FROM store_returns, + date_dim, + store + WHERE sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), + cs AS + (SELECT cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cs_call_center_sk), + cr AS + (SELECT cr_call_center_sk, + sum(cr_return_amount) AS returns_, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, + date_dim + WHERE cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + GROUP BY cr_call_center_sk ), + ws AS + (SELECT wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, + date_dim, + web_page + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), + wr AS + (SELECT wp_web_page_sk, + sum(wr_return_amt) AS returns_, + sum(wr_net_loss) AS profit_loss + FROM web_returns, + date_dim, + web_page + WHERE wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + ss.s_store_sk AS id , + sales , + coalesce(returns_, 0) AS returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ss + LEFT JOIN sr ON ss.s_store_sk = sr.s_store_sk + UNION ALL SELECT 'catalog channel' AS channel , + cs_call_center_sk AS id , + sales , + returns_ , + (profit - profit_loss) AS profit + FROM cs , + cr + UNION ALL SELECT 'web channel' AS channel , + ws.wp_web_page_sk AS id , + sales , + coalesce(returns_, 0) returns_ , + (profit - coalesce(profit_loss,0)) AS profit + FROM ws + LEFT JOIN wr ON ws.wp_web_page_sk = wr.wp_web_page_sk ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST, + returns_ DESC +LIMIT 100; +---- +NULL NULL 33397231.04 900133.28 -7960764.06 +catalog channel NULL 16638029.32 439455.24 -1835781.1 +catalog channel NULL 7970.02 219727.62 -123938.76 +catalog channel 1 16630059.3 219727.62 -1711842.34 +store channel NULL 12336295.94 312536.92 -5581643.99 +store channel 1 12336295.94 312536.92 -5581643.99 +web channel NULL 4422905.78 148141.12 -543338.97 +web channel 1 1379681.84 50616.75 -282318.2 +web channel 2 1633032.19 60424.48 -77297.26 +web channel 5 1410191.75 37099.89 -183723.51 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q78.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q78.slt.no new file mode 100644 index 00000000000..26e39a1702d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q78.slt.no @@ -0,0 +1,181 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIRIRRIRR +WITH ws AS + (SELECT d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + sum(ws_quantity) ws_qty, + sum(ws_wholesale_cost) ws_wc, + sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN web_returns ON wr_order_number=ws_order_number + AND ws_item_sk=wr_item_sk + JOIN date_dim ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, + ws_item_sk, + ws_bill_customer_sk ), + cs AS + (SELECT d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + sum(cs_quantity) cs_qty, + sum(cs_wholesale_cost) cs_wc, + sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN catalog_returns ON cr_order_number=cs_order_number + AND cs_item_sk=cr_item_sk + JOIN date_dim ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, + cs_item_sk, + cs_bill_customer_sk ), + ss AS + (SELECT d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + sum(ss_quantity) ss_qty, + sum(ss_wholesale_cost) ss_wc, + sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN store_returns ON sr_ticket_number=ss_ticket_number + AND ss_item_sk=sr_item_sk + JOIN date_dim ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, + ss_item_sk, + ss_customer_sk ) +SELECT ss_sold_year, + ss_item_sk, + ss_customer_sk, + round((ss_qty*1.00)/(coalesce(ws_qty,0)+coalesce(cs_qty,0)),2) ratio, + ss_qty store_qty, + ss_wc store_wholesale_cost, + ss_sp store_sales_price, + coalesce(ws_qty,0)+coalesce(cs_qty,0) other_chan_qty, + coalesce(ws_wc,0)+coalesce(cs_wc,0) other_chan_wholesale_cost, + coalesce(ws_sp,0)+coalesce(cs_sp,0) other_chan_sales_price +FROM ss +LEFT JOIN ws ON (ws_sold_year=ss_sold_year + AND ws_item_sk=ss_item_sk + AND ws_customer_sk=ss_customer_sk) +LEFT JOIN cs ON (cs_sold_year=ss_sold_year + AND cs_item_sk=ss_item_sk + AND cs_customer_sk=ss_customer_sk) +WHERE (coalesce(ws_qty,0)>0 + OR coalesce(cs_qty, 0)>0) + AND ss_sold_year=2000 +ORDER BY ss_sold_year, + ss_item_sk, + ss_customer_sk, + ss_qty DESC, + ss_wc DESC, + ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + ratio +LIMIT 100; +---- +2000 23 3758 0.46 46 39.22 34.08 100 46.02 60.52 +2000 23 4546 0.64 59 40.35 21.35 92 49.68 26.7 +2000 25 2481 1.55 82 16.55 27.85 53 69.11 118.17 +2000 25 8726 1.08 92 68.38 46.4 85 21.08 21.96 +2000 41 5936 0.15 13 52.98 50 85 20.69 16.01 +2000 55 5686 1.25 65 79.27 89.79 52 62.89 76.47 +2000 73 1648 1.02 44 3.04 0.15 43 3.98 3.9 +2000 77 6799 1.61 53 56.12 16.56 33 20.64 23.35 +2000 119 2246 0.97 97 7.26 5.3 100 67.52 37.2 +2000 122 9327 0.63 37 8.94 4.44 59 1.44 1.14 +2000 137 1697 0.75 59 70.47 34.41 79 16.39 4.91 +2000 139 862 1.56 64 42.09 0 41 30.81 15.45 +2000 157 537 0.36 27 65.9 63.57 74 86.39 5.44 +2000 158 3324 0.19 15 81.4 118.09 78 11.54 5.65 +2000 161 6190 1.24 42 39.19 17.51 34 57.78 30.33 +2000 169 7087 1.1 11 87.68 78.36 10 63 37.39 +2000 176 2786 0.15 7 7.84 4.51 46 55.1 39.32 +2000 181 4740 2.09 46 62.22 44.64 22 12.78 9.83 +2000 188 1112 0.33 18 13.19 6.24 55 53.48 93.84 +2000 197 5692 0.08 6 63.82 30.37 79 41.03 7.51 +2000 203 2869 0.58 57 40.63 32.73 99 3.68 5.25 +2000 205 5057 0.21 15 82 116.3 73 79.03 58.63 +2000 215 1907 8 32 91.64 35.38 4 72.92 127.02 +2000 224 5161 0.96 65 47.02 60.77 68 95.5 29.13 +2000 242 7754 0.03 3 48.47 24.59 95 63.52 63.36 +2000 248 9266 0.2 20 23.51 22.21 99 91.21 128.52 +2000 251 2102 4.12 70 27.28 1.1 17 75.72 27.86 +2000 259 5168 1.31 77 3.3 0.49 59 14.18 7.82 +2000 263 5719 0.59 55 34.57 37.6 94 8.08 12.14 +2000 271 6157 1.11 88 68.63 20.42 79 3.96 3.35 +2000 289 3771 1.29 97 99.07 28.01 75 45.58 27.12 +2000 293 542 0.38 13 87.17 144.7 34 59.34 108.59 +2000 311 424 1.28 23 47.32 30.6 18 88.79 157.55 +2000 317 6392 1.65 79 73.85 96.97 48 4.64 0.25 +2000 319 1403 0.97 57 82.95 77.14 59 2.86 4.73 +2000 338 8840 1.28 77 20.21 8.08 60 55.6 40.56 +2000 341 3132 2.6 91 29.11 2.53 35 93.96 43.86 +2000 343 8709 1 87 46.2 62.69 87 68.02 24.28 +2000 347 7897 0.56 22 17.86 1.48 39 56.56 18.52 +2000 356 2220 1.02 91 50.21 29.07 89 22.41 15.83 +2000 359 1681 NULL NULL NULL NULL 38 54.77 15.71 +2000 367 323 0.86 12 69.9 23.98 14 75.11 101.2 +2000 368 8363 3.79 53 42.95 2.42 14 62.17 24.24 +2000 386 2728 1.65 84 72.95 60.02 51 99.44 50.11 +2000 389 3307 0.79 56 44.08 38.44 71 85.74 25.46 +2000 391 2262 1.23 97 88.83 12.88 79 38.86 50.59 +2000 395 6785 0.71 27 8.03 1.88 38 37.73 35.91 +2000 401 2890 2.33 70 6 4.19 30 98.22 136.13 +2000 409 2498 0.97 61 17.21 13.97 63 31.17 20.39 +2000 410 6544 0.25 25 68.88 41.53 100 85.53 80.46 +2000 427 1876 1.2 96 17.8 3.56 80 24.74 7.97 +2000 427 2183 1.43 96 87.43 83.72 67 27.04 27.12 +2000 427 6547 1 75 70.45 11.93 75 71.65 23.64 +2000 443 724 11 99 17.74 10.39 9 3.04 0.21 +2000 446 6966 0.33 28 83.09 63.63 84 8.98 7.43 +2000 452 1469 2.34 68 58.91 32.57 29 79.72 87.89 +2000 469 8806 0.4 29 95.79 107.68 73 64.89 2.2 +2000 481 7670 8.13 65 5.95 0.72 8 33.5 16.72 +2000 482 4333 0.37 7 44.78 7.05 19 9.89 13.51 +2000 482 6402 0.07 4 12.77 13.1 57 94.61 45.26 +2000 485 3717 1.22 55 20.98 18.37 45 32.79 34.1 +2000 506 4168 0.95 19 85.98 81.81 20 62.61 3.6 +2000 518 4772 0.61 14 11.42 16.18 23 15.32 35.58 +2000 523 4191 0.52 11 97.39 25.12 21 74.14 187.56 +2000 527 4838 0.04 3 89.04 55.77 71 74.04 110.28 +2000 535 1501 4.18 71 2.58 2.63 17 6.23 6.87 +2000 554 5578 1.65 38 24.17 13.38 23 84.97 67.58 +2000 593 6390 0.37 36 61.07 50.28 98 29.12 37.05 +2000 593 9511 1.06 35 88.27 41.31 33 78.12 23.78 +2000 613 1493 1.02 92 14.43 8.23 90 97.55 28.15 +2000 619 9133 1.49 76 17.14 4.29 51 17.32 23.09 +2000 629 8602 0.62 38 16.26 7.46 61 9.88 6.9 +2000 631 5400 0.28 18 38.73 24.88 65 53.79 68.38 +2000 635 2602 8 64 27.52 1.98 8 87.6 203.99 +2000 637 8271 3.31 86 23.69 5.77 26 6.64 4.85 +2000 644 957 0.21 6 33.89 21.08 28 93.93 43.2 +2000 650 2246 1.04 56 46.23 43.5 54 25.44 21.66 +2000 653 2720 3.22 29 49.61 6.07 9 40.06 0 +2000 655 7424 1.66 58 99.24 39.65 35 74 9.81 +2000 667 9939 0.17 7 13.11 5.1 42 69.11 40.74 +2000 673 7901 0.73 38 13.27 18.97 52 1.23 0.44 +2000 677 239 0.76 58 30.39 29.36 76 3.98 5.47 +2000 679 5047 1.88 94 89.69 32.28 50 60.29 28.59 +2000 685 6682 0.22 21 25.8 7.79 97 35.61 90.31 +2000 689 7110 0.79 46 41.76 41.52 58 46.92 17.47 +2000 692 8311 0.08 8 1.78 2.26 98 1.72 1.28 +2000 695 2821 2.48 99 99.85 16.67 40 82.81 156.67 +2000 697 8762 0.74 49 32.29 20.68 66 40.66 22.46 +2000 704 1375 4 88 92.79 30.98 22 19.38 4.88 +2000 710 9318 0.89 74 30.99 23.97 83 12.49 0.98 +2000 716 9030 0.95 56 72.4 24.32 59 42.78 44.96 +2000 731 4333 3.54 92 79.71 39.75 26 34.62 19.08 +2000 733 7348 1.25 25 16.84 18.22 20 6.15 6.19 +2000 739 7247 1.16 94 38.61 41.91 81 42 30.84 +2000 749 9946 0.73 72 31.24 21.38 98 40.87 51.26 +2000 781 173 1.34 47 55.58 11.43 35 15.4 7.54 +2000 809 895 1.17 96 45.73 68.36 82 64.21 102.97 +2000 817 1846 0.41 26 22.81 20.38 63 65.39 13.75 +2000 835 63 1.31 46 26.44 33.68 35 74.49 12.2 +2000 836 8960 2.64 87 79.96 137.56 33 53.25 12.26 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q79.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q79.slt.no new file mode 100644 index 00000000000..951204ab2e7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q79.slt.no @@ -0,0 +1,143 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIRR +SELECT c_last_name, + c_first_name, + SUBSTRING(s_city,1,30), + ss_ticket_number, + amt, + profit +FROM + (SELECT ss_ticket_number , + ss_customer_sk , + store.s_city , + sum(ss_coupon_amt) amt , + sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND (household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count > 2) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN (1999, + 1999+1, + 1999+2) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + store.s_city) ms, + customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name NULLS FIRST, + c_first_name NULLS FIRST, + SUBSTRING(s_city,1,30) NULLS FIRST, + profit NULLS FIRST, + ss_ticket_number +LIMIT 100; +---- +NULL NULL Midway 7696 0 NULL +NULL NULL Midway 12121 6853.63 -30041.98 +NULL NULL Midway 2636 5300.7 -25774.14 +NULL NULL Midway 6542 7545.83 -24610.07 +NULL NULL Midway 11623 5712.51 -14900.28 +NULL NULL Midway 19793 698.94 -13610.1 +NULL NULL Midway 6637 831.38 -12213.15 +NULL NULL Midway 23768 4962.51 -11916.4 +NULL NULL Midway 20142 5211.62 -10686.78 +NULL NULL Midway 14527 9283.62 -10397.22 +NULL NULL Midway 12890 2494.11 -10339.8 +NULL NULL Midway 19260 1291.42 -9533.87 +NULL NULL Midway 7696 2093.28 -9202.28 +NULL NULL Midway 5904 3772.87 -4797.28 +NULL NULL Midway 9251 278.97 -4249.96 +NULL NULL Midway 20098 2113.91 -3411.71 +NULL Ada Midway 14864 2654.34 -14134.68 +NULL Angel Midway 5358 160.48 -14248.42 +NULL Bobby Midway 18053 751.03 -15237.11 +NULL Carrie Midway 21097 0 -8840.06 +NULL Kathleen Midway 19126 2417.06 -8452.79 +NULL Leonel Midway 5172 1337.45 -7699 +NULL Mable Midway 11598 1417.85 -16896.33 +NULL Margaret Midway 4054 242.7 -5375.15 +NULL Steven Midway 12488 129.94 -24819.68 +NULL Steven Midway 7453 2836.17 -13506.44 +NULL Timothy Midway 9990 2221.38 -20252.86 +NULL William Midway 313 4236.5 -21448.4 +Abrams Dennis Midway 18770 3041.82 -15332.82 +Adair Billy Midway 10311 2131.89 -11184.11 +Adams Pablo Midway 1019 91.18 -8699.05 +Adamson Pauline Midway 5255 455.53 -8557.37 +Adcock Dawn Midway 19523 3596.14 -5224.39 +Adkins Melissa Midway 18097 500.93 -3053.66 +Agee Susanne Midway 20434 3002.61 -11444.41 +Aguilar Jerry Midway 3974 1895.03 -15451.48 +Ainsworth John Midway 12751 2.56 -9084.71 +Alford Roberta Midway 15770 296.73 -14669.82 +Allen Christine Midway 18045 161.78 3938.93 +Allen Harold Midway 23975 2823.36 -1701.54 +Allen Kimberly Midway 4864 854.36 -1994.32 +Allen Michael Midway 19594 460.6 -9537.34 +Allen Michael Midway 22584 1007.72 -6154.76 +Allen Richard Midway 10990 1862.88 -12586.79 +Ambrose Glenn Midway 20298 4024.6 -6532.88 +Anderson Eleanor Midway 8833 1929.92 -4954.47 +Anderson Jason Midway 17429 3617.59 -5833.66 +Andrews Robert Midway 4593 2832.56 -9026.43 +Aponte Joseph Midway 7979 3185.89 -11396.7 +Arndt Vanessa Midway 13951 2561.03 -11753.82 +Arnold Jonathan Midway 18469 1531.04 -12386.88 +Arroyo Earl Midway 19434 1917.73 -16980.72 +Austin Mollie Midway 6232 0 NULL +Austin Mollie Midway 6232 2808.02 -5492.54 +Ayala Larry Midway 22249 6322.6 -13598.81 +Bailey Charlotte Midway 12226 314.5 -750.56 +Bailey Nicole Midway 5902 3806.56 -2938.09 +Baker Albert Midway 12096 2046.14 -4668.79 +Ball Valerie Midway 19560 0 -10164.97 +Banks Margaret Midway 19152 466.75 -6816.2 +Barba Anthony Midway 23677 755.07 -16184.07 +Barba Anthony Midway 12483 1079.54 -10292.98 +Barnes Byron Midway 15056 16516.45 -18151.42 +Barnes James Midway 5065 3219.07 -7644.46 +Barnes Joseph Midway 22341 669.46 1300.51 +Barnett William Midway 9977 2485.38 -15850.07 +Barr Kyle Midway 20206 2425.6 -6805.83 +Barrett Amy Midway 19458 165.41 -3156.37 +Baskin Vida Midway 8300 35.76 -4371.64 +Baum Dean Midway 14409 7180.23 -11349.75 +Becker Suzanne Midway 10744 1043.56 -6282.91 +Bell Lacey Midway 22034 4939.81 -8340.27 +Benitez Michele Midway 2008 597.65 -3632.03 +Benitez Rickie Midway 11249 3400.83 -8636.67 +Benjamin NULL Midway 2308 5313.58 -19422.37 +Bennett Kimberly Midway 20002 1763.93 -4430.36 +Betts Violet Midway 15060 1828.72 -1041.95 +Betz Adriene Midway 1127 372.06 -6675.73 +Bingham Michael Midway 17574 1.8 -15929.64 +Bingham Michael Midway 1089 123.71 -5598.58 +Bird Frederick Midway 6952 916.78 -10831.27 +Bivins Sandra Midway 15910 1886.75 146.47 +Black Danny Midway 22229 2179.65 -5237.65 +Black Jeremy Midway 9238 2760.56 -29499.47 +Blackburn Katherine Midway 9076 4537.17 -11682.05 +Blair David Midway 6257 1054.82 -9610.17 +Blair John Midway 5297 3454.05 -20926.06 +Blevins Juanita Midway 10452 149.8 -7988.98 +Bliss Heidi Midway 22937 4584.99 -11104.08 +Boisvert Benjamin Midway 20440 4682.3 -4644.43 +Bolt Leonard Midway 18206 44.77 -21027.94 +Bond Larry Midway 15614 1316.87 -11740.43 +Bond Rhonda Midway 14764 1480.49 -7401.73 +Bowman Harry Midway 19319 212.85 -12580.17 +Box Rina Midway 16981 1337.11 -7116.36 +Boyd Jose Midway 10709 1661.67 -12143.15 +Bradford Joseph Midway 20489 0 -3376.6 +Bradford Susan Midway 14526 3410.07 -10906.11 +Branch Byron Midway 16980 51.18 -3529.18 +Bratton Fannie Midway 14115 7515.49 -27661.75 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q8.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q8.slt.no new file mode 100644 index 00000000000..9864393598a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q8.slt.no @@ -0,0 +1,432 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TR +SELECT s_store_name, + sum(ss_net_profit) +FROM store_sales, + date_dim, + store, + (SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE SUBSTRING(ca_zip, 1, 5) IN ('24128', + '76232', + '65084', + '87816', + '83926', + '77556', + '20548', + '26231', + '43848', + '15126', + '91137', + '61265', + '98294', + '25782', + '17920', + '18426', + '98235', + '40081', + '84093', + '28577', + '55565', + '17183', + '54601', + '67897', + '22752', + '86284', + '18376', + '38607', + '45200', + '21756', + '29741', + '96765', + '23932', + '89360', + '29839', + '25989', + '28898', + '91068', + '72550', + '10390', + '18845', + '47770', + '82636', + '41367', + '76638', + '86198', + '81312', + '37126', + '39192', + '88424', + '72175', + '81426', + '53672', + '10445', + '42666', + '66864', + '66708', + '41248', + '48583', + '82276', + '18842', + '78890', + '49448', + '14089', + '38122', + '34425', + '79077', + '19849', + '43285', + '39861', + '66162', + '77610', + '13695', + '99543', + '83444', + '83041', + '12305', + '57665', + '68341', + '25003', + '57834', + '62878', + '49130', + '81096', + '18840', + '27700', + '23470', + '50412', + '21195', + '16021', + '76107', + '71954', + '68309', + '18119', + '98359', + '64544', + '10336', + '86379', + '27068', + '39736', + '98569', + '28915', + '24206', + '56529', + '57647', + '54917', + '42961', + '91110', + '63981', + '14922', + '36420', + '23006', + '67467', + '32754', + '30903', + '20260', + '31671', + '51798', + '72325', + '85816', + '68621', + '13955', + '36446', + '41766', + '68806', + '16725', + '15146', + '22744', + '35850', + '88086', + '51649', + '18270', + '52867', + '39972', + '96976', + '63792', + '11376', + '94898', + '13595', + '10516', + '90225', + '58943', + '39371', + '94945', + '28587', + '96576', + '57855', + '28488', + '26105', + '83933', + '25858', + '34322', + '44438', + '73171', + '30122', + '34102', + '22685', + '71256', + '78451', + '54364', + '13354', + '45375', + '40558', + '56458', + '28286', + '45266', + '47305', + '69399', + '83921', + '26233', + '11101', + '15371', + '69913', + '35942', + '15882', + '25631', + '24610', + '44165', + '99076', + '33786', + '70738', + '26653', + '14328', + '72305', + '62496', + '22152', + '10144', + '64147', + '48425', + '14663', + '21076', + '18799', + '30450', + '63089', + '81019', + '68893', + '24996', + '51200', + '51211', + '45692', + '92712', + '70466', + '79994', + '22437', + '25280', + '38935', + '71791', + '73134', + '56571', + '14060', + '19505', + '72425', + '56575', + '74351', + '68786', + '51650', + '20004', + '18383', + '76614', + '11634', + '18906', + '15765', + '41368', + '73241', + '76698', + '78567', + '97189', + '28545', + '76231', + '75691', + '22246', + '51061', + '90578', + '56691', + '68014', + '51103', + '94167', + '57047', + '14867', + '73520', + '15734', + '63435', + '25733', + '35474', + '24676', + '94627', + '53535', + '17879', + '15559', + '53268', + '59166', + '11928', + '59402', + '33282', + '45721', + '43933', + '68101', + '33515', + '36634', + '71286', + '19736', + '58058', + '55253', + '67473', + '41918', + '19515', + '36495', + '19430', + '22351', + '77191', + '91393', + '49156', + '50298', + '87501', + '18652', + '53179', + '18767', + '63193', + '23968', + '65164', + '68880', + '21286', + '72823', + '58470', + '67301', + '13394', + '31016', + '70372', + '67030', + '40604', + '24317', + '45748', + '39127', + '26065', + '77721', + '31029', + '31880', + '60576', + '24671', + '45549', + '13376', + '50016', + '33123', + '19769', + '22927', + '97789', + '46081', + '72151', + '15723', + '46136', + '51949', + '68100', + '96888', + '64528', + '14171', + '79777', + '28709', + '11489', + '25103', + '32213', + '78668', + '22245', + '15798', + '27156', + '37930', + '62971', + '21337', + '51622', + '67853', + '10567', + '38415', + '15455', + '58263', + '42029', + '60279', + '37125', + '56240', + '88190', + '50308', + '26859', + '64457', + '89091', + '82136', + '62377', + '36233', + '63837', + '58078', + '17043', + '30010', + '60099', + '28810', + '98025', + '29178', + '87343', + '73273', + '30469', + '64034', + '39516', + '86057', + '21309', + '90257', + '67875', + '40162', + '11356', + '73650', + '61810', + '72013', + '30431', + '22461', + '19512', + '13375', + '55307', + '30625', + '83849', + '68908', + '26689', + '96451', + '38193', + '46820', + '88885', + '84935', + '69035', + '83144', + '47537', + '56616', + '94983', + '48033', + '69952', + '25486', + '61547', + '27385', + '61860', + '58048', + '56910', + '16807', + '17871', + '35258', + '31387', + '35458', + '35576') INTERSECT + SELECT ca_zip + FROM + (SELECT SUBSTRING(ca_zip, 1, 5) ca_zip, + count(*) cnt + FROM customer_address, + customer + WHERE ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag='Y' + GROUP BY ca_zip + HAVING count(*) > 10)A1)A2) V1 +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 1998 + AND (SUBSTRING(s_zip, 1, 2) = SUBSTRING(V1.ca_zip, 1, 2)) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q80.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q80.slt.no new file mode 100644 index 00000000000..74df7737be4 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q80.slt.no @@ -0,0 +1,191 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTRRR +WITH ssr AS + (SELECT s_store_id AS store_id, + sum(ss_ext_sales_price) AS sales, + sum(coalesce(sr_return_amt, 0)) AS returns_, + sum(ss_net_profit - coalesce(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN store_returns ON (ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number), date_dim, + store, + item, + promotion + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id) , + csr AS + (SELECT cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(coalesce(cr_return_amount, 0)) AS returns_, + sum(cs_net_profit - coalesce(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN catalog_returns ON (cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number), date_dim, + catalog_page, + item, + promotion + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id) , + wsr AS + (SELECT web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(coalesce(wr_return_amt, 0)) AS returns_, + sum(ws_net_profit - coalesce(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN web_returns ON (ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number), date_dim, + web_site, + item, + promotion + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-23' AS date) AND cast('2000-09-22' AS date) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT channel , + id , + sum(sales) AS sales , + sum(returns_) AS returns_ , + sum(profit) AS profit +FROM + (SELECT 'store channel' AS channel , + concat('store', store_id) AS id , + sales , + returns_ , + profit + FROM ssr + UNION ALL SELECT 'catalog channel' AS channel , + concat('catalog_page', catalog_page_id) AS id , + sales , + returns_ , + profit + FROM csr + UNION ALL SELECT 'web channel' AS channel , + concat('web_site', web_site_id) AS id , + sales , + returns_ , + profit + FROM wsr ) x +GROUP BY ROLLUP (channel, + id) +ORDER BY channel NULLS FIRST, + id NULLS FIRST +LIMIT 100; +---- +NULL NULL 1542653 76093.2 -311488.86 +catalog channel NULL 557749.42 31205.51 -7963.71 +catalog channel catalog_pageAAAAAAAAAAABAAAA 454.71 0 -1092.96 +catalog channel catalog_pageAAAAAAAAABABAAAA 9857.46 0 2874.03 +catalog channel catalog_pageAAAAAAAAADABAAAA 8359.08 0 1573.58 +catalog channel catalog_pageAAAAAAAAAECBAAAA 3355.44 0 2153.88 +catalog channel catalog_pageAAAAAAAAAFABAAAA 746.12 0 439.53 +catalog channel catalog_pageAAAAAAAAAGABAAAA 149.73 0 -817.23 +catalog channel catalog_pageAAAAAAAAAKCBAAAA 836.54 0 82.84 +catalog channel catalog_pageAAAAAAAAAKPAAAAA 921.12 0 -4198.05 +catalog channel catalog_pageAAAAAAAABAABAAAA 3148.98 0 840.79 +catalog channel catalog_pageAAAAAAAABDABAAAA 8125.11 0 2579.57 +catalog channel catalog_pageAAAAAAAABDCBAAAA 1812.72 0 -1528.8 +catalog channel catalog_pageAAAAAAAABEABAAAA 944.64 0 -2490.48 +catalog channel catalog_pageAAAAAAAABKCBAAAA 3059.19 2039.46 -4842.21 +catalog channel catalog_pageAAAAAAAABKPAAAAA 6379.18 0 -5981.76 +catalog channel catalog_pageAAAAAAAABMPAAAAA 5742.29 0 2906.42 +catalog channel catalog_pageAAAAAAAABNCBAAAA 6052.8 4469.76 -4047.63 +catalog channel catalog_pageAAAAAAAABNPAAAAA 19978.7 0 3653.78 +catalog channel catalog_pageAAAAAAAABPCBAAAA 29.24 0 -1285.09 +catalog channel catalog_pageAAAAAAAABPPAAAAA 1385.42 0 144.69 +catalog channel catalog_pageAAAAAAAACCABAAAA 1830.64 0 -4371.78 +catalog channel catalog_pageAAAAAAAACDABAAAA 473.04 0 -267.12 +catalog channel catalog_pageAAAAAAAACGABAAAA 6.35 0 -105.6 +catalog channel catalog_pageAAAAAAAACHABAAAA 992.68 0 -981.64 +catalog channel catalog_pageAAAAAAAACICBAAAA 422.28 73.44 42.8 +catalog channel catalog_pageAAAAAAAACKCBAAAA 2645.37 0 -3021.48 +catalog channel catalog_pageAAAAAAAACKPAAAAA 1957.89 0 -1069.47 +catalog channel catalog_pageAAAAAAAACLPAAAAA 1544.6 693.88 -306.47 +catalog channel catalog_pageAAAAAAAACMPAAAAA 2161.32 0 969.5 +catalog channel catalog_pageAAAAAAAACNCBAAAA 341.7 45.56 -1249.68 +catalog channel catalog_pageAAAAAAAACOPAAAAA 10197.21 575.4 -1648.1 +catalog channel catalog_pageAAAAAAAADAABAAAA 10734.04 0 6740.96 +catalog channel catalog_pageAAAAAAAADCABAAAA 0 0 -2439.5 +catalog channel catalog_pageAAAAAAAADKPAAAAA 491.26 0 -2197.17 +catalog channel catalog_pageAAAAAAAADLCBAAAA 6232.1 0 863.8 +catalog channel catalog_pageAAAAAAAADLPAAAAA 10457.84 0 2598.4 +catalog channel catalog_pageAAAAAAAADMPAAAAA 1968.33 0 -2027.48 +catalog channel catalog_pageAAAAAAAADNCBAAAA 440 0 -1268.2 +catalog channel catalog_pageAAAAAAAADOPAAAAA 214.54 189.3 -257.54 +catalog channel catalog_pageAAAAAAAADPPAAAAA 222.94 192.11 -880.18 +catalog channel catalog_pageAAAAAAAAEBABAAAA 11889.15 0 5534.62 +catalog channel catalog_pageAAAAAAAAECABAAAA 1494.22 0 222.95 +catalog channel catalog_pageAAAAAAAAEDABAAAA 6721.92 0 3306.24 +catalog channel catalog_pageAAAAAAAAEEABAAAA 522.75 0 -840.65 +catalog channel catalog_pageAAAAAAAAEFABAAAA 465.4 0 -5625.1 +catalog channel catalog_pageAAAAAAAAEHABAAAA 5168.4 2368.85 3026.41 +catalog channel catalog_pageAAAAAAAAEMPAAAAA 617.14 0 -5325.11 +catalog channel catalog_pageAAAAAAAAENCBAAAA 77.44 0 -2995.52 +catalog channel catalog_pageAAAAAAAAENPAAAAA 885.43 0 -3031.15 +catalog channel catalog_pageAAAAAAAAEOPAAAAA 1186.8 0 -1466.94 +catalog channel catalog_pageAAAAAAAAFAABAAAA 2244 0 -897.6 +catalog channel catalog_pageAAAAAAAAFBABAAAA 2328.96 0 1095.04 +catalog channel catalog_pageAAAAAAAAFFABAAAA 84.48 0 21.72 +catalog channel catalog_pageAAAAAAAAFGABAAAA 7921.2 0 3830.22 +catalog channel catalog_pageAAAAAAAAFGCBAAAA 7032.55 0 2664.63 +catalog channel catalog_pageAAAAAAAAFICBAAAA 3524.7 0 1095.9 +catalog channel catalog_pageAAAAAAAAFKPAAAAA 7830.22 0 4543.45 +catalog channel catalog_pageAAAAAAAAFLPAAAAA 2567.04 0 -14.14 +catalog channel catalog_pageAAAAAAAAFNPAAAAA 3046.14 0 1136.34 +catalog channel catalog_pageAAAAAAAAFOPAAAAA 1735.24 0 47.94 +catalog channel catalog_pageAAAAAAAAFPPAAAAA 638.78 0 -153.75 +catalog channel catalog_pageAAAAAAAAGDABAAAA 2952.68 0 -3874.18 +catalog channel catalog_pageAAAAAAAAGECBAAAA 1077.13 7.84 -1596.65 +catalog channel catalog_pageAAAAAAAAGGABAAAA 655.38 105.92 -5956.79 +catalog channel catalog_pageAAAAAAAAGJCBAAAA 2534.47 0 -1055.74 +catalog channel catalog_pageAAAAAAAAGLPAAAAA 1752.3 1323.96 -554.38 +catalog channel catalog_pageAAAAAAAAGMPAAAAA 7952.04 0 3570.48 +catalog channel catalog_pageAAAAAAAAGOPAAAAA 7483.41 0 3730.32 +catalog channel catalog_pageAAAAAAAAGPCBAAAA 545.8 0 -1079 +catalog channel catalog_pageAAAAAAAAHAABAAAA 38.1 0 -296.58 +catalog channel catalog_pageAAAAAAAAHBABAAAA 519.68 0 -8.96 +catalog channel catalog_pageAAAAAAAAHCABAAAA 6217.2 0 2927.43 +catalog channel catalog_pageAAAAAAAAHDABAAAA 2093.04 0 -1055.19 +catalog channel catalog_pageAAAAAAAAHDCBAAAA 1643.2 0 547.2 +catalog channel catalog_pageAAAAAAAAHEABAAAA 147.3 0 62.9 +catalog channel catalog_pageAAAAAAAAHJCBAAAA 114.1 0 -555.9 +catalog channel catalog_pageAAAAAAAAHKPAAAAA 20228.49 0 9025.71 +catalog channel catalog_pageAAAAAAAAHLPAAAAA 144.16 93.28 -3864.15 +catalog channel catalog_pageAAAAAAAAHNCBAAAA 12553.86 0 4294.06 +catalog channel catalog_pageAAAAAAAAHOPAAAAA 7021.44 0 -1826.88 +catalog channel catalog_pageAAAAAAAAHPPAAAAA 10 0 -204 +catalog channel catalog_pageAAAAAAAAIAABAAAA 790.97 0 -1863.92 +catalog channel catalog_pageAAAAAAAAICABAAAA 102.68 0 -17.45 +catalog channel catalog_pageAAAAAAAAIEABAAAA 7363.98 0 538.2 +catalog channel catalog_pageAAAAAAAAIGCBAAAA 1515.24 0 -1527.36 +catalog channel catalog_pageAAAAAAAAIJCBAAAA 14209.71 0 7209.69 +catalog channel catalog_pageAAAAAAAAIKCBAAAA 3551.98 0 670.53 +catalog channel catalog_pageAAAAAAAAIKPAAAAA 6706.4 0 -450.4 +catalog channel catalog_pageAAAAAAAAIMPAAAAA 5772.82 1114.36 341.61 +catalog channel catalog_pageAAAAAAAAIOPAAAAA 1093.68 0 -2290.68 +catalog channel catalog_pageAAAAAAAAIPPAAAAA 4819.7 1177.64 -115.69 +catalog channel catalog_pageAAAAAAAAJICBAAAA 2908.88 0 445.12 +catalog channel catalog_pageAAAAAAAAJKCBAAAA 2163.26 0 1243.44 +catalog channel catalog_pageAAAAAAAAJLPAAAAA 5408.69 0 2971.55 +catalog channel catalog_pageAAAAAAAAJMCBAAAA 758.88 0 -1847.9 +catalog channel catalog_pageAAAAAAAAJNPAAAAA 3662.05 0 1963.85 +catalog channel catalog_pageAAAAAAAAJOPAAAAA 479.88 0 -1114.65 +catalog channel catalog_pageAAAAAAAAKAABAAAA 1919.86 0 238.95 +catalog channel catalog_pageAAAAAAAAKDABAAAA 14591.28 0 6241.84 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q81.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q81.slt.no new file mode 100644 index 00000000000..974842b7355 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q81.slt.no @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTTTTTTTTTRTR +WITH customer_total_return AS + (SELECT cr_returning_customer_sk AS ctr_customer_sk , + ca_state AS ctr_state, + sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns , + date_dim , + customer_address + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk , + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1 , + customer_address , + customer +WHERE ctr1.ctr_total_return > + (SELECT avg(ctr_total_return)*1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'GA' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name , + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset , + ca_location_type, + ctr_total_return +LIMIT 100; +---- +AAAAAAAAAEECAAAA Dr. Anne NULL 419 View Miller Wy Suite 360 Pleasant Grove Cobb County GA 34136 United States -5 single family 2379.62 +AAAAAAAAAGBAAAAA Sir Steven Moore 612 5th Elm Boulevard Suite D Riverdale Fayette County GA 39391 United States -5 condo 1760.8 +AAAAAAAAANIBAAAA Miss Luisa Russell 767 6th Road Suite 430 Franklin Rockdale County GA 39101 United States -5 condo 2711.28 +AAAAAAAABLBAAAAA Sir Robert Leatherman 29 11th 4th Pkwy Suite J Walnut Grove Walker County GA 37752 United States -5 condo 2286.79 +AAAAAAAABMCAAAAA Miss Heather Cady 406 Sunset Maple Boulevard Suite Q Oakwood Richmond County GA 30169 United States -5 condo 3231.94 +AAAAAAAACBIAAAAA Dr. Michael Maynard 91 Sunset Lincoln Ln Suite 390 Unionville Tift County GA 31711 United States -5 apartment 3135.73 +AAAAAAAACGCCAAAA Mrs. Sheila Rawlings 128 12th Wy Suite V Wilson Effingham County GA 36971 United States -5 apartment 4345.31 +AAAAAAAACKBAAAAA Dr. Maurice Morales 918 Lake Drive Suite T Shelby Lincoln County GA 36575 United States -5 condo 3317.24 +AAAAAAAADCBAAAAA Mr. Ralph Johnson 492 View Oak Avenue Suite C Walnut Grove Houston County GA 37752 United States -5 apartment 4740.04 +AAAAAAAADLABAAAA Mrs. Sharla Buchanan 227 Adams Dr. Suite 380 Greenwood Wilkinson County GA 38828 United States -5 apartment 2270.49 +AAAAAAAAEFDBAAAA Mrs. Helen Cartwright 29 Ash Avenue Suite 320 Riverside Douglas County GA 39231 United States -5 apartment 4829.73 +AAAAAAAAEJIAAAAA Mr. James Penn 260 Second Sixth Cir. Suite M Oak Hill Oglethorpe County GA 37838 United States -5 single family 1358.75 +AAAAAAAAFEAAAAAA Sir Steven Mcclellan 954 8th Pkwy Suite 30 Hillcrest Bleckley County GA 33003 United States -5 single family 7569.1 +AAAAAAAAFIHAAAAA Miss Dorothy Burrell 453 Davis Pine Way Suite 410 Wildwood Peach County GA 36871 United States -5 condo 9146.12 +AAAAAAAAGFIAAAAA Mr. James Bravo 961 Mill Pkwy Suite P Pleasant Hill Lee County GA 33604 United States -5 apartment 2885.76 +AAAAAAAAGFIAAAAA Mr. James Bravo 961 Mill Pkwy Suite P Pleasant Hill Lee County GA 33604 United States -5 apartment 2925.84 +AAAAAAAAGGDCAAAA Mr. Zachary Hendrickson 530 Sunset Second Way Suite 40 Lincoln Elbert County GA 31289 United States -5 single family 1986.74 +AAAAAAAAGGGBAAAA Dr. Timothy Werner 983 Cedar Johnson Cir. Suite 360 Edgewood Jenkins County GA 30069 United States -5 condo 8088.23 +AAAAAAAAGHABAAAA Mrs. Lina Abbott 173 Woodland Road Suite T Bunker Hill Candler County GA 30150 United States -5 apartment 2877.6 +AAAAAAAAHMOBAAAA Sir Harry Jones 492 View Oak Avenue Suite C Walnut Grove Houston County GA 37752 United States -5 apartment 7524.53 +AAAAAAAAIFEAAAAA Miss Lisa Flannery 321 Valley Maple Ct. Suite 430 Bunker Hill Gordon County GA 30150 United States -5 single family 4362 +AAAAAAAAJEEBAAAA Mrs. Mabel Cunningham 626 Oak Oak Lane Suite E Spring Valley Early County GA 36060 United States -5 condo 3240.57 +AAAAAAAAJFMBAAAA Dr. Donna Chaney 645 Seventh ST Suite 230 Lincoln Rockdale County GA 31289 United States -5 single family 3176.03 +AAAAAAAAJGEAAAAA Miss Kenya Park 571 Oak Miller Ln Suite 290 Newport Rabun County GA 31521 United States -5 single family 5495.04 +AAAAAAAAKAAAAAAA Ms. Albert Brunson 307 7th Hillcrest Street Suite 70 Wildwood Union County GA 36871 United States -5 apartment 1605.24 +AAAAAAAAKGCAAAAA Sir James Mueller 545 Sixth RD Suite U Plainview Long County GA 33683 United States -5 apartment 1257.75 +AAAAAAAALMBAAAAA Dr. Howard Chan 645 Oak Hillcrest ST Suite A Shady Grove Newton County GA 32812 United States -5 apartment 3363.44 +AAAAAAAAMCCCAAAA Dr. Julie Keys 242 North 3rd Pkwy Suite M Oak Ridge Marion County GA 38371 United States -5 single family 2134.59 +AAAAAAAAMJHBAAAA Dr. Cynthia Hutton 942 Sunset Blvd Suite S Concord Wilkes County GA 34107 United States -5 single family 5181.96 +AAAAAAAAMKABAAAA Sir Brandon Fahey 911 Second RD Suite A Harmony Lee County GA 35804 United States -5 apartment 4397.65 +AAAAAAAANBFAAAAA Sir Charles Francis 321 Pine Woodland Avenue Suite 40 Five Points Spalding County GA 36098 United States -5 apartment 5095.19 +AAAAAAAANJFAAAAA Mrs. Tina Jordan 321 Pine Woodland Avenue Suite 40 Five Points Spalding County GA 36098 United States -5 apartment 4259.08 +AAAAAAAAOCLAAAAA Dr. Lori Moore 619 Cedar Cir. Suite N Cedar Grove Camden County GA 30411 United States -5 single family 2992.22 +AAAAAAAAOJIAAAAA Sir Troy Joyner 692 Central Way Suite 270 Riverdale Dougherty County GA 39391 United States -5 condo 2385.06 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q82.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q82.slt.no new file mode 100644 index 00000000000..fb6158ce005 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q82.slt.no @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTR +SELECT i_item_id , + i_item_desc , + i_current_price +FROM item, + inventory, + date_dim, + store_sales +WHERE i_current_price BETWEEN 62 AND 62+30 + AND inv_item_sk = i_item_sk + AND d_date_sk=inv_date_sk + AND d_date BETWEEN cast('2000-05-25' AS date) AND cast('2000-07-24' AS date) + AND i_manufact_id IN (129, + 270, + 821, + 423) + AND inv_quantity_on_hand BETWEEN 100 AND 500 + AND ss_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q83.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q83.slt.no new file mode 100644 index 00000000000..3d2df7e941b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q83.slt.no @@ -0,0 +1,75 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TIRIRIRR +WITH sr_items AS + (SELECT i_item_id item_id, + sum(sr_return_quantity) sr_item_qty + FROM store_returns, + item, + date_dim + WHERE sr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items AS + (SELECT i_item_id item_id, + sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, + item, + date_dim + WHERE cr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items AS + (SELECT i_item_id item_id, + sum(wr_return_quantity) wr_item_qty + FROM web_returns, + item, + date_dim + WHERE wr_item_sk = i_item_sk + AND d_date IN + (SELECT d_date + FROM date_dim + WHERE d_week_seq IN + (SELECT d_week_seq + FROM date_dim + WHERE d_date IN ('2000-06-30', + '2000-09-27', + '2000-11-17'))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT sr_items.item_id , + sr_item_qty , + (sr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 sr_dev , + cr_item_qty , + (cr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 cr_dev , + wr_item_qty , + (wr_item_qty*1.0000)/(sr_item_qty+cr_item_qty+wr_item_qty)/3.0000 * 100 wr_dev , + (sr_item_qty+cr_item_qty+wr_item_qty)/3.0 average +FROM sr_items , + cr_items , + wr_items +WHERE sr_items.item_id=cr_items.item_id + AND sr_items.item_id=wr_items.item_id +ORDER BY sr_items.item_id NULLS FIRST, + sr_item_qty NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q84.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q84.slt.no new file mode 100644 index 00000000000..98b6921d732 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q84.slt.no @@ -0,0 +1,29 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TT +SELECT c_customer_id AS customer_id , + concat(concat(coalesce(c_last_name, '') , ', '), coalesce(c_first_name, '')) AS customername +FROM customer , + customer_address , + customer_demographics , + household_demographics , + income_band , + store_returns +WHERE ca_city = 'Edgewood' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 38128 + AND ib_upper_bound <= 38128 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id NULLS FIRST +LIMIT 100; +---- +AAAAAAAAEAGCAAAA Martin, Geraldine +AAAAAAAAEAGCAAAA Martin, Geraldine +AAAAAAAAEGECAAAA Ortiz, Tessa +AAAAAAAAIEKAAAAA Cohn, Michael +AAAAAAAAJKPBAAAA Arnold, Sally +AAAAAAAAMGLBAAAA Johnson, Wendy diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q85.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q85.slt.no new file mode 100644 index 00000000000..26e0d94d43a --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q85.slt.no @@ -0,0 +1,62 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TRRR +SELECT SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) avg1, + avg(wr_refunded_cash) avg2, + avg(wr_fee) +FROM web_sales, + web_returns, + web_page, + customer_demographics cd1, + customer_demographics cd2, + customer_address, + date_dim, + reason +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2000 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( ( cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd1.cd_marital_status = 'S' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'College' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = '2 yr Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ca_country = 'United States' + AND ca_state IN ('IN', + 'OH', + 'NJ') + AND ws_net_profit BETWEEN 100 AND 200) + OR ( ca_country = 'United States' + AND ca_state IN ('WI', + 'CT', + 'KY') + AND ws_net_profit BETWEEN 150 AND 300) + OR ( ca_country = 'United States' + AND ca_state IN ('LA', + 'IA', + 'AR') + AND ws_net_profit BETWEEN 50 AND 250) ) +GROUP BY r_reason_desc +ORDER BY SUBSTRING(r_reason_desc,1,20) , + avg(ws_quantity) , + avg(wr_refunded_cash) , + avg(wr_fee) +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q86.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q86.slt.no new file mode 100644 index 00000000000..a116bbad2ec --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q86.slt.no @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RTTII +SELECT sum(ws_net_paid) AS total_sum , + i_category , + i_class , + grouping(i_category)+grouping(i_class) AS lochierarchy , + rank() OVER ( PARTITION BY grouping(i_category)+grouping(i_class), + CASE + WHEN grouping(i_class) = 0 THEN i_category + END + ORDER BY sum(ws_net_paid) DESC) AS rank_within_parent +FROM web_sales , + date_dim d1 , + item +WHERE d1.d_month_seq BETWEEN 1200 AND 1200+11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY rollup(i_category,i_class) +ORDER BY lochierarchy DESC NULLS FIRST, + CASE + WHEN grouping(i_category)+grouping(i_class) = 0 THEN i_category + END NULLS FIRST, + rank_within_parent NULLS FIRST +LIMIT 100; +---- +33524177.4 NULL NULL 2 1 +3914061.57 Women NULL 1 1 +3723292.19 Electronics NULL 1 2 +3562592.04 Jewelry NULL 1 3 +3537855.19 Books NULL 1 4 +3464787.84 Men NULL 1 5 +3402491.77 Music NULL 1 6 +3122925.57 Shoes NULL 1 7 +3021726.62 Home NULL 1 8 +2872728.67 Sports NULL 1 9 +2809935.79 Children NULL 1 10 +91780.15 NULL NULL 1 11 +91780.15 NULL NULL 0 1 +408043.38 Books romance 0 1 +380601.08 Books reference 0 2 +313980.74 Books travel 0 3 +258279.16 Books arts 0 4 +238672.7 Books computers 0 5 +226340.44 Books self-help 0 6 +221596.6 Books mystery 0 7 +207320.35 Books fiction 0 8 +198144.84 Books entertainments 0 9 +187238.69 Books home repair 0 10 +179185.2 Books cooking 0 11 +179068.37 Books history 0 12 +145685.77 Books business 0 13 +130183.52 Books parenting 0 14 +119539.3 Books science 0 15 +115536.29 Books sports 0 16 +28438.76 Books NULL 0 17 +821633.3 Children school-uniforms 0 1 +704372.82 Children infants 0 2 +694988.41 Children toddlers 0 3 +588941.26 Children newborn 0 4 +501039.23 Electronics dvd/vcr players 0 1 +388380.33 Electronics televisions 0 2 +298812.54 Electronics stereo 0 3 +280245.34 Electronics karoke 0 4 +250154.17 Electronics cameras 0 5 +248384.32 Electronics musical 0 6 +240773.08 Electronics monitors 0 7 +222135.85 Electronics automotive 0 8 +198211.95 Electronics disk drives 0 9 +197554.69 Electronics memory 0 10 +196394.91 Electronics personal 0 11 +175646.11 Electronics camcorders 0 12 +171833.15 Electronics wireless 0 13 +164666.4 Electronics portable 0 14 +100308.3 Electronics scanners 0 15 +88751.82 Electronics audio 0 16 +401607.02 Home lighting 0 1 +347159.96 Home paint 0 2 +273846.35 Home decor 0 3 +273266.19 Home furniture 0 4 +267976.53 Home bedding 0 5 +266486.32 Home rugs 0 6 +208539.6 Home blinds/shades 0 7 +206655.62 Home flatware 0 8 +162311.64 Home curtains/drapes 0 9 +137826.91 Home wallpaper 0 10 +129423.21 Home glassware 0 11 +92300.94 Home bathroom 0 12 +76026.15 Home mattresses 0 13 +71838.96 Home accent 0 14 +63474.37 Home kids 0 15 +42986.85 Home tables 0 16 +394550.33 Jewelry pendants 0 1 +358709.25 Jewelry costume 0 2 +338028.13 Jewelry gold 0 3 +320709.39 Jewelry diamonds 0 4 +283641.53 Jewelry jewelry boxes 0 5 +236690.69 Jewelry bracelets 0 6 +235719.63 Jewelry womens watch 0 7 +216968.36 Jewelry mens watch 0 8 +211846.22 Jewelry earings 0 9 +197845.79 Jewelry loose stones 0 10 +195560.8 Jewelry estate 0 11 +173185.15 Jewelry birdal 0 12 +151245.69 Jewelry semi-precious 0 13 +104491.58 Jewelry consignment 0 14 +82889.09 Jewelry custom 0 15 +60510.41 Jewelry rings 0 16 +1010416.64 Men sports-apparel 0 1 +1003263.51 Men accessories 0 2 +781211.01 Men shirts 0 3 +669896.68 Men pants 0 4 +1038698.68 Music rock 0 1 +925564.57 Music pop 0 2 +725558.58 Music country 0 3 +712669.94 Music classical 0 4 +868660.92 Shoes athletic 0 1 +783356.28 Shoes womens 0 2 +778920.84 Shoes mens 0 3 +690225.27 Shoes kids 0 4 +1762.26 Shoes NULL 0 5 +274798.71 Sports archery 0 1 +274386.55 Sports outdoor 0 2 +260445.72 Sports camping 0 3 +257138.96 Sports fishing 0 4 +256330.09 Sports hockey 0 5 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q87.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q87.slt.no new file mode 100644 index 00000000000..266f29f9af6 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q87.slt.no @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT count(*) +FROM ((SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11) + EXCEPT + (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1200 AND 1200+11)) cool_cust ; +---- +4789 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q88.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q88.slt.no new file mode 100644 index 00000000000..e4f8d8e0883 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q88.slt.no @@ -0,0 +1,144 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IIIIIIII +SELECT * +FROM + (SELECT count(*) h8_30_to_9 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 8 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s1, + (SELECT count(*) h9_to_9_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s2, + (SELECT count(*) h9_30_to_10 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 9 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s3, + (SELECT count(*) h10_to_10_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s4, + (SELECT count(*) h10_30_to_11 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 10 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s5, + (SELECT count(*) h11_to_11_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s6, + (SELECT count(*) h11_30_to_12 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 11 + AND time_dim.t_minute >= 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s7, + (SELECT count(*) h12_to_12_30 + FROM store_sales, + household_demographics, + time_dim, + store + WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 12 + AND time_dim.t_minute < 30 + AND ((household_demographics.hd_dep_count = 4 + AND household_demographics.hd_vehicle_count<=4+2) + OR (household_demographics.hd_dep_count = 2 + AND household_demographics.hd_vehicle_count<=2+2) + OR (household_demographics.hd_dep_count = 0 + AND household_demographics.hd_vehicle_count<=0+2)) + AND store.s_store_name = 'ese') s8 ; +---- +0 0 0 0 0 0 0 0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q89.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q89.slt.no new file mode 100644 index 00000000000..93aa7f6783d --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q89.slt.no @@ -0,0 +1,124 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTTIRR +SELECT * from + (SELECT i_category, i_class, i_brand, s_store_name, s_company_name, d_moy, sum(ss_sales_price) sum_sales, avg(sum(ss_sales_price)) OVER (PARTITION BY i_category, i_brand, s_store_name, s_company_name) avg_monthly_sales + FROM item, store_sales, date_dim, store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year = 1999 + AND ((i_category IN ('Books','Electronics','Sports') + AND i_class IN ('computers','stereo','football') ) + OR (i_category IN ('Men','Jewelry','Women') + AND i_class IN ('shirts','birdal','dresses'))) + GROUP BY i_category, i_class, i_brand, s_store_name, s_company_name, d_moy) tmp1 +WHERE CASE + WHEN (avg_monthly_sales <> 0) THEN (abs(sum_sales - avg_monthly_sales) / avg_monthly_sales) + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + s_store_name, 1, 2, 3, 5, 6, 7, 8 +LIMIT 100; +---- +Women dresses amalgamalg #1 ought Unknown 3 923.47 2408.735833333333 +Women dresses amalgamalg #1 ought Unknown 6 982.71 2408.735833333333 +Men shirts importoimporto #1 ought Unknown 7 1188.25 2423.258333333333 +Women dresses amalgamalg #1 ought Unknown 5 1184.1 2408.735833333333 +Women dresses amalgamalg #1 ought Unknown 1 1354.43 2408.735833333333 +Men shirts importoimporto #1 ought Unknown 3 1406.02 2423.258333333333 +Men shirts importoimporto #1 ought Unknown 5 1411.01 2423.258333333333 +Women dresses amalgamalg #1 ought Unknown 2 1422.83 2408.735833333333 +Women dresses amalgamalg #1 ought Unknown 7 1448.62 2408.735833333333 +Men shirts importoimporto #1 ought Unknown 2 1507.7 2423.258333333333 +Men shirts importoimporto #1 ought Unknown 6 1549.04 2423.258333333333 +Women dresses amalgamalg #2 ought Unknown 2 801.22 1672.928333333333 +Women dresses amalgamalg #1 ought Unknown 4 1540.59 2408.735833333333 +Women dresses amalgamalg #2 ought Unknown 7 883.66 1672.928333333333 +Men shirts importoimporto #2 ought Unknown 5 477.76 1184.171666666667 +Men shirts importoimporto #2 ought Unknown 6 487.48 1184.171666666667 +Women dresses amalgamalg #2 ought Unknown 1 1023.68 1672.928333333333 +Men shirts importoimporto #1 ought Unknown 1 1779.64 2423.258333333333 +Women dresses amalgamalg #2 ought Unknown 3 1052.57 1672.928333333333 +Men shirts importoimporto #2 ought Unknown 7 564.29 1184.171666666667 +Women dresses amalgamalg #2 ought Unknown 5 1092.26 1672.928333333333 +Women dresses amalgamalg #2 ought Unknown 6 1139.04 1672.928333333333 +Men shirts importoimporto #1 ought Unknown 4 1893.82 2423.258333333333 +Men shirts importoimporto #1 ought Unknown 8 2064.33 2423.258333333333 +Women dresses amalgamalg #2 ought Unknown 4 1347.3 1672.928333333333 +Men shirts importoimporto #2 ought Unknown 1 866.84 1184.171666666667 +Jewelry birdal amalgcorp #8 ought Unknown 3 31.01 348.130833333333 +Books computers exportimaxi #3 ought Unknown 7 31.96 346.941666666667 +Men shirts importoimporto #2 ought Unknown 4 871.59 1184.171666666667 +Men shirts importoimporto #2 ought Unknown 2 884.78 1184.171666666667 +Jewelry birdal amalgcorp #8 ought Unknown 4 62.61 348.130833333333 +Books computers exportimaxi #3 ought Unknown 2 69.21 346.941666666667 +Men shirts importoimporto #2 ought Unknown 3 912.7 1184.171666666667 +Jewelry birdal amalgcorp #8 ought Unknown 7 91.82 348.130833333333 +Books computers exportimaxi #3 ought Unknown 10 91.14 346.941666666667 +Sports football corpnameless #5 ought Unknown 3 162.36 393.48 +Jewelry birdal amalgcorp #8 ought Unknown 6 124.78 348.130833333333 +Books computers exportimaxi #5 ought Unknown 4 1.37 224.351666666667 +Sports football corpnameless #1 ought Unknown 9 11.51 233.448181818182 +Sports football corpnameless #1 ought Unknown 6 11.75 233.448181818182 +Books computers exportimaxi #11 ought Unknown 5 13.99 217.664545454545 +Books computers exportimaxi #5 ought Unknown 7 25.81 224.351666666667 +Sports football corpnameless #5 ought Unknown 5 198.53 393.48 +Sports football corpnameless #1 ought Unknown 7 41.26 233.448181818182 +Jewelry birdal amalgcorp #1 ought Unknown 6 4.58 194.534166666667 +Electronics stereo exportiamalgamalg #5 ought Unknown 2 29.1 216.578181818182 +Books computers exportimaxi #5 ought Unknown 3 38.24 224.351666666667 +Books computers exportimaxi #2 ought Unknown 7 12.44 197.853636363636 +Sports football corpnameless #5 ought Unknown 2 210.6 393.48 +Jewelry birdal amalgcorp #2 ought Unknown 11 15.29 196.894545454545 +Electronics stereo exportiamalgamalg #6 ought Unknown 5 35.77 217.23 +Electronics stereo exportiamalgamalg #16 ought Unknown 6 1.07 179.7825 +Books computers exportimaxi #8 ought Unknown 5 17.15 194.200833333333 +Sports football corpnameless #1 ought Unknown 3 56.43 233.448181818182 +Sports football corpnameless #8 ought Unknown 2 21.41 196.005 +Books computers exportimaxi #2 ought Unknown 1 23.44 197.853636363636 +Electronics stereo exportiamalgamalg #6 ought Unknown 3 42.95 217.23 +Books computers exportimaxi #11 ought Unknown 1 44.82 217.664545454545 +Jewelry birdal amalgcorp #2 ought Unknown 5 24.85 196.894545454545 +Sports football corpnameless #5 ought Unknown 7 224.86 393.48 +Books computers exportimaxi #3 ought Unknown 6 179.63 346.941666666667 +Sports football corpnameless #8 ought Unknown 7 30.63 196.005 +Jewelry birdal amalgcorp #1 ought Unknown 4 33.17 194.534166666667 +Jewelry birdal amalgcorp #2 ought Unknown 6 36.29 196.894545454545 +Jewelry birdal amalgcorp #1 ought Unknown 7 36.26 194.534166666667 +Jewelry birdal amalgcorp #5 ought Unknown 6 19.56 177.540909090909 +Books computers exportimaxi #2 ought Unknown 3 40.18 197.853636363636 +Electronics stereo exportiamalgamalg #14 ought Unknown 7 8.7 165.399166666667 +Electronics stereo exportiamalgamalg #6 ought Unknown 1 60.73 217.23 +Jewelry birdal amalgcorp #5 ought Unknown 1 22.45 177.540909090909 +Jewelry birdal amalgcorp #5 ought Unknown 3 22.69 177.540909090909 +Electronics stereo exportiamalgamalg #5 ought Unknown 9 65.06 216.578181818182 +Jewelry birdal amalgcorp #2 ought Unknown 2 46.24 196.894545454545 +Jewelry birdal amalgcorp #5 ought Unknown 7 27.94 177.540909090909 +Books computers exportimaxi #8 ought Unknown 6 46.87 194.200833333333 +Jewelry birdal amalgcorp #8 ought Unknown 5 202.09 348.130833333333 +Electronics stereo exportiamalgamalg #5 ought Unknown 3 71.77 216.578181818182 +Electronics stereo exportiamalgamalg #14 ought Unknown 5 21.66 165.399166666667 +Books computers exportimaxi #11 ought Unknown 3 74.6 217.664545454545 +Books computers exportimaxi #11 ought Unknown 2 83.35 217.664545454545 +Sports football corpnameless #2 ought Unknown 5 41.22 173.356666666667 +Electronics stereo exportiamalgamalg #16 ought Unknown 7 47.79 179.7825 +Sports football corpnameless #1 ought Unknown 2 103.22 233.448181818182 +Electronics stereo exportiamalgamalg #5 ought Unknown 6 90.83 216.578181818182 +Electronics stereo exportiamalgamalg #14 ought Unknown 1 41.92 165.399166666667 +Jewelry birdal amalgcorp #1 ought Unknown 2 74.1 194.534166666667 +Electronics stereo exportiamalgamalg #16 ought Unknown 2 59.96 179.7825 +Sports football corpnameless #2 ought Unknown 7 56.48 173.356666666667 +Electronics stereo exportiamalgamalg #12 ought Unknown 1 42.33 157.264545454545 +Books computers exportimaxi #5 ought Unknown 10 111.05 224.351666666667 +Sports football corpnameless #8 ought Unknown 9 85.51 196.005 +Books computers exportimaxi #3 ought Unknown 3 240.65 346.941666666667 +Jewelry birdal amalgcorp #2 ought Unknown 4 93.76 196.894545454545 +Electronics stereo exportiamalgamalg #16 ought Unknown 5 77.28 179.7825 +Electronics stereo exportiamalgamalg #16 ought Unknown 1 77.8 179.7825 +Sports football corpnameless #5 ought Unknown 4 291.71 393.48 +Electronics stereo exportiamalgamalg #6 ought Unknown 4 115.84 217.23 +Sports football corpnameless #1 ought Unknown 1 132.75 233.448181818182 +Sports football corpnameless #8 ought Unknown 4 95.69 196.005 +Electronics stereo exportiamalgamalg #5 ought Unknown 8 118.38 216.578181818182 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q9.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q9.slt.no new file mode 100644 index 00000000000..601e7647dc7 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q9.slt.no @@ -0,0 +1,73 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query RRRRR +SELECT CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) > 74129 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) > 122840 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) > 56580 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) > 10097 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4, + CASE + WHEN + (SELECT count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) > 165306 THEN + (SELECT avg(ss_ext_discount_amt) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + ELSE + (SELECT avg(ss_net_paid) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM reason +WHERE r_reason_sk = 1 ; +---- +360.36244323597 1030.431489038098 1727.681323255987 267.128745971775 3087.216814544512 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q90.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q90.slt.no new file mode 100644 index 00000000000..7199e4d90fe --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q90.slt.no @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query R +SELECT case when pmc=0 then null else cast(amc AS decimal(15,4))/cast(pmc AS decimal(15,4)) end am_pm_ratio +FROM + (SELECT count(*) amc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 8 AND 8+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) "at", + (SELECT count(*) pmc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 19 AND 19+1 + AND household_demographics.hd_dep_count = 6 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +ORDER BY am_pm_ratio +LIMIT 100; +---- +NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q91.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q91.slt.no new file mode 100644 index 00000000000..1b9daeb6dcc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q91.slt.no @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTR +SELECT cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + sum(cr_net_loss) Returns_Loss +FROM call_center, + catalog_returns, + date_dim, + customer, + customer_address, + customer_demographics, + household_demographics +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk= c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1998 + AND d_moy = 11 + AND ((cd_marital_status = 'M' + AND cd_education_status = 'Unknown') or(cd_marital_status = 'W' + AND cd_education_status = 'Advanced Degree')) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, + cc_name, + cc_manager, + cd_marital_status, + cd_education_status +ORDER BY sum(cr_net_loss) DESC; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q92.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q92.slt.no new file mode 100644 index 00000000000..b3fc00b717c --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q92.slt.no @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query R +SELECT sum(ws_ext_discount_amt) AS "Excess Discount Amount" +FROM web_sales, + item, + date_dim +WHERE i_manufact_id = 350 + AND i_item_sk = ws_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk + AND ws_ext_discount_amt > + (SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales, + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date BETWEEN '2000-01-27' AND cast('2000-04-26' AS date) + AND d_date_sk = ws_sold_date_sk ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100; +---- +NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q93.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q93.slt.no new file mode 100644 index 00000000000..fe95c1b4fdc --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q93.slt.no @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IR +SELECT ss_customer_sk, + sum(act_sales) sumsales +FROM + (SELECT ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL THEN (ss_quantity-sr_return_quantity)*ss_sales_price + ELSE (ss_quantity*ss_sales_price) + END act_sales + FROM store_sales + LEFT OUTER JOIN store_returns ON (sr_item_sk = ss_item_sk + AND sr_ticket_number = ss_ticket_number) ,reason + WHERE sr_reason_sk = r_reason_sk + AND r_reason_desc = 'reason 28') t +GROUP BY ss_customer_sk +ORDER BY sumsales NULLS FIRST, + ss_customer_sk NULLS FIRST +LIMIT 100; +---- diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q94.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q94.slt.no new file mode 100644 index 00000000000..6db39958691 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q94.slt.no @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND EXISTS + (SELECT * + FROM web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) + AND NOT exists + (SELECT * + FROM web_returns wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +0 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q95.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q95.slt.no new file mode 100644 index 00000000000..67b5a49b8bd --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q95.slt.no @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query IRR +WITH ws_wh AS + (SELECT ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, + web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT count(DISTINCT ws_order_number) AS "order count" , + sum(ws_ext_ship_cost) AS "total shipping cost" , + sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '1999-02-01' AND cast('1999-04-02' AS date) + AND ws1.ws_ship_date_sk = d_date_sk + AND ws1.ws_ship_addr_sk = ca_address_sk + AND ca_state = 'IL' + AND ws1.ws_web_site_sk = web_site_sk + AND web_company_name = 'pri' + AND ws1.ws_order_number IN + (SELECT ws_order_number + FROM ws_wh) + AND ws1.ws_order_number IN + (SELECT wr_order_number + FROM web_returns, + ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +---- +0 NULL NULL diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q96.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q96.slt.no new file mode 100644 index 00000000000..e539a33b8cf --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q96.slt.no @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query I +SELECT count(*) +FROM store_sales , + household_demographics, + time_dim, + store +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 20 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY count(*) +LIMIT 100; +---- +0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q97.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q97.slt.no new file mode 100644 index 00000000000..c7d49b7abee --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q97.slt.no @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query III +WITH ssci AS + (SELECT ss_customer_sk customer_sk , + ss_item_sk item_sk + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY ss_customer_sk , + ss_item_sk), + csci as + ( SELECT cs_bill_customer_sk customer_sk ,cs_item_sk item_sk + FROM catalog_sales,date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1200 AND 1200 + 11 + GROUP BY cs_bill_customer_sk ,cs_item_sk) +SELECT sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NULL THEN 1 + ELSE 0 + END) store_only , + sum(CASE + WHEN ssci.customer_sk IS NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) catalog_only , + sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) store_and_catalog +FROM ssci +FULL OUTER JOIN csci ON (ssci.customer_sk=csci.customer_sk + AND ssci.item_sk = csci.item_sk) +LIMIT 100; +---- +54150 28203 169 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q98.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q98.slt.no new file mode 100644 index 00000000000..825ff77a018 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q98.slt.no @@ -0,0 +1,281 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTTRRR +SELECT i_item_id , + i_item_desc, + i_category, + i_class, + i_current_price , + sum(ss_ext_sales_price) AS itemrevenue, + sum(ss_ext_sales_price)*100.0000/sum(sum(ss_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratio +FROM store_sales , + item, + date_dim +WHERE ss_item_sk = i_item_sk + AND i_category IN ('Sports', + 'Books', + 'Home') + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('1999-02-22' AS date) AND cast('1999-03-24' AS date) +GROUP BY i_item_id , + i_item_desc, + i_category , + i_class , + i_current_price +ORDER BY i_category NULLS FIRST, + i_class NULLS FIRST, + i_item_id NULLS FIRST, + i_item_desc NULLS FIRST, + revenueratio NULLS FIRST; +---- +AAAAAAAAOJGAAAAA NULL Books NULL NULL 3915.12 100 +AAAAAAAACKEAAAAA Physical, local rates cannot explain; quickly lovely horses used to take. Quick, various subjects keep usually; please easy sources ought to thin Books arts 35.27 5719.26 27.839185510847 +AAAAAAAAIJGAAAAA Industrial figures shall not meet still. Live, civil years ought to spend tiny groups. Brief years know again unfortunately present texts. So as prime terms become. Effective sets get other oth Books arts 4.1 1910.06 9.297446641147 +AAAAAAAAKGBAAAAA Important, scientific words replace sure united friends. Important areas list fresh, gross directions. Mild services leave sadly commercial, appropriate ju Books arts 5.6 6876.6 33.472677074288 +AAAAAAAAMFFAAAAA So tiny sales obtain as ill tons. Constant others increase women. New Books arts 8.22 4509.34 21.949754477237 +AAAAAAAANIBAAAAA Open, real terms should avoid discussions. Just obvious adults will say strong, poor drawings. Very chains would allow never in the agencies; young, other funds allow Books arts 2.72 1528.66 7.440936296481 +AAAAAAAAADFAAAAA Good groups steal respective chapters. Components could rely needs. Men need only wide, private courts. New, sudden forms see only. Letters will not find at the faces. Just fascinating humans s Books business 78.25 9384.78 38.46744721003 +AAAAAAAAEICAAAAA Contemporary, signific Books business 2.42 4439.48 18.197066158182 +AAAAAAAAIKEAAAAA Complex, complete doubts say as eyes. Desperately general missiles ought Books business 9.44 9034.12 37.030120491805 +AAAAAAAAKMAAAAAA Conservative women ought to beat positions. Agai Books business 0.19 429.66 1.761141270042 +AAAAAAAALDFAAAAA Dramatically particular charts used to boost unusually false organisers. I Books business 3.68 1108.64 4.544224869941 +AAAAAAAAFEEAAAAA Directly good effects could not complete. Implications may not investigate individually; electrical husba Books computers 3.83 7141.32 15.277710923405 +AAAAAAAAGMCAAAAA Now old phenomena will suppress sufficiently by a arguments. C Books computers 9.23 10362.09 22.16803274217 +AAAAAAAALCDAAAAA Groups see legs. Systems lead hot, golden hands. Then general enquiries comply often social houses. Relentlessly annual ministers should not minimise suf Books computers 4.34 14729.89 31.512241623896 +AAAAAAAAMJEAAAAA Advantages w Books computers 1.04 5060.32 10.825744559819 +AAAAAAAAOGFAAAAA Similar months should want available, normal points; powers make. Soviet books will not enter indepe Books computers 99.41 6042.6 12.927175371748 +AAAAAAAAOMDAAAAA Ev Books computers 4.99 3407.17 7.289094778962 +AAAAAAAAGOCAAAAA Frantically necess Books cooking 4.37 502.5 8.018292877522 +AAAAAAAAKCCAAAAA Bitter reasons may not bear cuts. Marine, normal shares make also. Trying contracts lift numerous reports. Also general feelings argue rights; still quiet techniques Books cooking 4.44 5649.86 90.15369591442 +AAAAAAAALIGAAAAA Visitors will determine reluctant forms. Laws could not need fresh paths. Social, critical police must not thin Books cooking 0.88 114.56 1.828011208058 +AAAAAAAACIDAAAAA Magic, dead sports call; recently european wives o Books entertainments 3.51 4821.84 20.903818866864 +AAAAAAAAJKGAAAAA Most final departments will attempt also other customers. Severe units put increased years; flights Books entertainments 4.92 3270.6 14.178825922463 +AAAAAAAAKDEAAAAA Free activities might act on a years. Other, new fingers can claim specifically at the alternatives. Great, straightforward features come now; sure, little stand Books entertainments 6.46 12091.88 52.42116480013 +AAAAAAAAMKDAAAAA More local leaders Books entertainments 1.52 2419.13 10.487501728676 +AAAAAAAAOOEAAAAA True, sole women market far except for a depths. Dif Books entertainments 1.45 463.34 2.008688681867 +AAAAAAAABGAAAAAA More reg Books fiction 57.09 3355.17 4.166692021555 +AAAAAAAACEFAAAAA Bottom, national fea Books fiction 4.25 4199.82 5.215639292784 +AAAAAAAADEAAAAAA Already Books fiction 1.47 5987.53 7.43574646883 +AAAAAAAAHDDAAAAA Partially great points will fulfil at least big, recent years. Solicitors ought to achieve cases. Hidden, major Books fiction 45.99 13517.5 16.787006143169 +AAAAAAAALIAAAAAA Lines shall describe explicitly northern, firm systems. Later Books fiction 2.99 7234.25 8.98401325624 +AAAAAAAAMLAAAAAA Very national teams shall not treat as important remaining details. Outdoor, good calls would not say. Various, unpleasant plants will not pass legal, final courts. Likely, Books fiction 0.47 15813.19 19.637959509754 +AAAAAAAANDDAAAAA Voters can write today dealers. Women see very other years. Able, russian barriers use systems. So young fingers would say primary, new companies. Only disabled children ought to renew fol Books fiction 2.73 7092.26 8.807679836431 +AAAAAAAAOCGAAAAA National, suitable weeks tax yet personal, subjective groups. White, likely boys drive states; de Books fiction 8.69 14767.87 18.339805763752 +AAAAAAAAPMBAAAAA Unlikely, interested chemicals control likely countries. Assistant, medical museums choose horses. Far fierce waters should touch significantly publishers. At first foreign entries may unde Books fiction 8.79 8556 10.625457707487 +AAAAAAAAAJFAAAAA Prayers wait exactly at a rules. Books history 2.5 6759.47 28.823225153903 +AAAAAAAAAMEAAAAA Lexical, religious days would go pregnant, natural employees; lines raise v Books history 9.64 6022.95 25.682611793632 +AAAAAAAACIBAAAAA Correct concentrations might not come questions. Economic, pure shelves should track. Only, long feet might not like much Books history 4.94 5670.77 24.180872243829 +AAAAAAAAJGEAAAAA Periods indicate regularly emotional, entire positions. Women mount originally large, religious refugees. Industrial, present wi Books history 0.65 1750.84 7.465800651302 +AAAAAAAALAFAAAAA Substantial flowers make perhaps regular negotiations. For example basic victims ought to cease below technological young troops. Citizens shall let carefully hostile, other characte Books history 5.91 3247.44 13.847490157333 +AAAAAAAAOGGAAAAA Inner friends used to love. New, european tables must not choose long, present pp.; about Books history 0.66 0 0 +AAAAAAAAEIBAAAAA Legal, eligible concessions take still however conservative profits. Books home repair 0.82 7719.88 40.439731291619 +AAAAAAAAFDFAAAAA Import Books home repair 7.18 343.98 1.801900906451 +AAAAAAAAGBEAAAAA Y Books home repair 2.1 1168.95 6.123414339774 +AAAAAAAAMBGAAAAA More available quantities fit also in a interests. As foreign representations reflect darling sides Books home repair 3.33 5944.62 31.140229567141 +AAAAAAAAPNGAAAAA Ancient firms shall not show all thence emotional affairs. Ever annual revenues used to sta Books home repair 1.73 3912.41 20.494723895014 +AAAAAAAAADCAAAAA Possibly dependent prices might laugh also financial careers. Contrary, clever costs could sense; reliable, d Books mystery 1.55 12411.62 40.595395558835 +AAAAAAAACLBAAAAA Foreign, successful books might see bri Books mystery 3 7528.52 24.623961043973 +AAAAAAAAIGAAAAAA Connections must constitute only eastern leaves. Primary, elderly times make expectations. Never tory stores build very points. Books mystery 2.33 3912.47 12.796739447556 +AAAAAAAAMABAAAAA Children argue naturally already unable thanks. Low cars improve either light, powerful tools. Lar Books mystery 3.73 3765.96 12.317540809238 +AAAAAAAAOFBAAAAA Dependent, high weeks accept through an proposals. Ric Books mystery 3.1 2955.39 9.666363140398 +AAAAAAAAEFEAAAAA Extern Books parenting 2.15 5150.4 21.021277186257 +AAAAAAAAGFCAAAAA Royal versions restore oddly in a travellers; inc measures should play enough complex kinds. Necessary, local stations mean quite serious stones. Econo Books parenting 2.09 4976.9 20.313139645131 +AAAAAAAAIHFAAAAA Permanent cards act again. Christian cases should not include positions. Quite multiple films should locate physical risks; by now negative leaders shall give duties. Victor Books parenting 4.64 8267 33.74163142645 +AAAAAAAAKHAAAAAA Well lovely hands know even Books parenting 2.62 1755.09 7.163372432593 +AAAAAAAANMAAAAAA Very detailed points can mention then. Miles could not know very as a inhabitants. Still nearb Books parenting 7.3 4351.5 17.760579309568 +AAAAAAAAAODAAAAA Successful subjects might se Books reference 3.68 14561.72 30.890539489611 +AAAAAAAACLGAAAAA Failures think just eventually top factors. Animals ought to lose nearly terrible, necessary books. Public principles must not go sometimes else commercial wages. Serious oth Books reference 2.23 608.38 1.29058836557 +AAAAAAAAEPBAAAAA Developers suggest even aspects. Most human teachers dive Books reference 6.28 9331.29 19.794954320919 +AAAAAAAAHFBAAAAA Difficult, ready masses ought to take tools. Attempts must receive immediately. Pilots s Books reference 38.26 7671.27 16.27346693045 +AAAAAAAAHMGAAAAA White, international others ought to agree economic objects. Maps continue naturally in a boards. Joint feet should Books reference 4.95 5025.56 10.660983705044 +AAAAAAAALIDAAAAA German, ultimate personnel want even. Asian, old hospitals could not open far applicable, logical seeds. Years worry schemes. Perhaps li Books reference 1.55 1858.24 3.94198186074 +AAAAAAAANJAAAAAA Recent performances get yet other publications; current patients could not carry comparatively intense, vital times. Wide problems smooth truly. Tomorrow used years catch a Books reference 2.21 8083.28 17.147485327666 +AAAAAAAABOBAAAAA Solutions gain. Various shares create elsewhere. Specific, excellent police sa Books romance 2.38 1703.64 9.797233766884 +AAAAAAAAFCDAAAAA Bombs ensure once members. Even national effects can get quickly new extraordinary clubs. Main, occupational barriers tackle just equal ser Books romance 4.5 1924.97 11.07005064699 +AAAAAAAALLDAAAAA Officials must prevent openly local, federal elements. Expenses sleep lines; russian, young conclusions cost actually up the leaders. Regulations Books romance 90.72 3538.78 20.350693168493 +AAAAAAAAMOAAAAAA Industries feel however. Domestic statements slide firms. European figures must plead now strong languages. Dangerous meetings set toda Books romance 0.75 7189.84 41.347082262972 +AAAAAAAAMPEAAAAA Skills eat great, soviet provinces. Male, widespread months must help in public responsible cells. Widely main responses might appear Books romance 2.81 1489.55 8.566052427427 +AAAAAAAAOKCAAAAA Detailed, married powers argue unique actions. Cr Books romance 2.33 1542.21 8.868887727234 +AAAAAAAACDFAAAAA Narrow, basic investors matter together. Uniquely wide parents feel surely severe properties. Only huge arrangements will not last miles. Urban months enhance. Members might not stop personnel. Books science 4.18 3809.78 13.968167604226 +AAAAAAAACPCAAAAA Elections grow arab, domestic initiatives. Wide courses shall order involved, new services. Compulsory, concerne Books science 0.31 7185.85 26.346181978703 +AAAAAAAADAHAAAAA Similar fields run old cities. Golden, warm opportunities compare by a wives. Initial, regular libraries touch sometimes. Still unemployed stations contribute below Books science 2.33 795.85 2.917902395367 +AAAAAAAADPEAAAAA Double effects put. Long, personal keys vote national metres; other, logical residents decide especially. Materials provide different, different families. Clearly open systems take pa Books science 0.45 11.52 0.042236898404 +AAAAAAAAENFAAAAA Quite clean scores write well lesser, important acti Books science 1.51 4772.7 17.49861501837 +AAAAAAAAIPFAAAAA Babies might attend open problems. Just private sections should mean truly industrial alone factors. Others suggest yet terms. Able, small properties would not know moreover diff Books science 2.51 2985.1 10.944562970926 +AAAAAAAAMAEAAAAA Especially british years feed; children expand small spirits. Assets include both previous effects. For example Books science 7.92 7713.93 28.282333134004 +AAAAAAAABJAAAAAA Prospects know Books self-help 59.77 2222.64 9.166886630593 +AAAAAAAAEMGAAAAA Changes would not go especially Books self-help 27.81 256.78 1.059043816814 +AAAAAAAAFGCAAAAA Pp. would agree thus processes. Married plans should want most in the houses. Ministers could write very foreign, level features. Ot Books self-help 1.89 5337.85 22.015020786591 +AAAAAAAAJHAAAAAA However increasing dates meet. Large, ready goals mean now blind structures. Crea Books self-help 38.79 14626.06 60.322604592847 +AAAAAAAAKGEAAAAA In order interesting ingredients get more. Young, in Books self-help 9.23 1739.72 7.175168272403 +AAAAAAAAMPBAAAAA Beautiful, short women could occur consciously women. Books self-help 2.94 63.35 0.261275900752 +AAAAAAAAAGCAAAAA Facilities form busy years. Women meet rather on the benefits. Only remarkable factors cannot start supreme, crucial skills; stairs take Books sports 7.52 5325.02 100 +AAAAAAAAAHDAAAAA National reasons Books travel 4.02 6797.59 19.713501866196 +AAAAAAAADJEAAAAA Good, domestic authorities can drink only blue, old findings. Historical, Books travel 84.79 12905.88 37.427983956801 +AAAAAAAAKPAAAAAA Flowers suffer following, subst Books travel 4.16 1183.69 3.432786476383 +AAAAAAAALCAAAAAA Resources shall not continue thus similar, practical results. Practical words f Books travel 6.08 1225.22 3.553226475339 +AAAAAAAALFGAAAAA Poor, Books travel 3.95 2847 8.256505586989 +AAAAAAAAMEAAAAAA Original interests see of course british, important terms. Yet appropriate principles conclude in a arrangements; good countries would get sometimes; Books travel 3.84 5804.95 16.834774185877 +AAAAAAAAMGBAAAAA White trees grow simply. Then possible banks used to get happily unhappy accused minds. Very fires should touch then particular towns. National systems watch actively victorian papers. Con Books travel 8.58 2781.25 8.065825839063 +AAAAAAAAMODAAAAA Months provide firmly whole, historical characters. Relatively perfect centres find tomorrow products. Others dream linguistic, good visitor Books travel 0.23 936.32 2.715395613351 +AAAAAAAAABDAAAAA Great, wonderful lakes must not arrange already to the rules. Easy, cultural elections need rather sensible orders. Hardly favorable prospects take at Home accent 1.06 12151.52 43.962576789216 +AAAAAAAAEAGAAAAA Over other countries cannot remai Home accent 9.45 8364.5 30.261644103239 +AAAAAAAAGPFAAAAA Potential, late services could hide. Feet take enough arms; running degrees diagnose especially persons. Close types should not re Home accent 3.2 6960.58 25.182449006172 +AAAAAAAAOLDAAAAA So old proposals could not reconsider varieties. Sentences Home accent 0.48 164 0.593330101373 +AAAAAAAAADEAAAAA International colleges shall mind large, outer hundreds. Technical, major times shall turn afterwards even medical questions. Alone members oug Home bathroom 2.57 650.24 18.381394717724 +AAAAAAAAHBFAAAAA There young things should not compete small, relative problems. Sources find right dealers. Late authorities must find groups. Feet fall continually major courses. Now Home bathroom 7.89 2887.25 81.618605282276 +AAAAAAAAAOGAAAAA As prime legs proceed probably orange, historic experiments. Here different skills may not appease usually continental terms. Cheerful daughters take on a shops. Far Home bedding 3.51 2578.8 38.904142654558 +AAAAAAAAHHCAAAAA Trades shall become. Terms provide yesterday black investigations. Industrial lines mean. Bri Home bedding 1.65 1342.4 20.251636846393 +AAAAAAAAMDFAAAAA Really evil methods see abroad present diseases. Here good police will not sit now alternatively strong markets. Then fascinating years mean Home bedding 1.79 2558.06 38.591256072172 +AAAAAAAAMPFAAAAA Issues go new banks. Significant, ordina Home bedding 79.19 149.34 2.252964426877 +AAAAAAAACAFAAAAA Western, young groups could understand more never important police; general years emerge broad talks. Findings insure so waiting problems Home blinds/shades 29.09 4006.01 15.801354668922 +AAAAAAAADOFAAAAA New needs write as. Back drivers like but for a years. Times perform soon economic odds. Very cold windows used to know occasionally. Cases must take Home blinds/shades 2.08 3486.69 13.752942531492 +AAAAAAAAEJGAAAAA Th Home blinds/shades 5.49 2416.2 9.530488728448 +AAAAAAAAFOAAAAAA Inevitably general children must focus Home blinds/shades 3.2 4401.98 17.363223562972 +AAAAAAAAGHDAAAAA Low men ought to try really. Just natural relationships shall not relate slightly other Home blinds/shades 6.97 8574.86 33.822782293691 +AAAAAAAAIJFAAAAA Ty Home blinds/shades 1.08 2466.58 9.729208214475 +AAAAAAAAPOCAAAAA Top options care tomorrow dangerous emotions. Cool deputies establish t Home blinds/shades 3.71 NULL NULL +AAAAAAAAACAAAAAA Ce Home curtains/drapes 1.77 880.85 2.332905340482 +AAAAAAAAAGEAAAAA Medium rights put enough sufficient elections; certain children will pick dark, wild men. New terms help today actu Home curtains/drapes 7.02 5668.09 15.011769803409 +AAAAAAAAAIAAAAAA Great, tiny animals adopt then outcomes. Terms sweep less dry, physical signs. National, black terms adapt for a reasons; groups shall Home curtains/drapes 4.06 9044.62 23.954410286236 +AAAAAAAACMFAAAAA Literally available ages stand never unusual bo Home curtains/drapes 42.98 404.26 1.07067073048 +AAAAAAAAGKDAAAAA Once again real differences can make black offenders. Consequen Home curtains/drapes 0.46 11861.12 31.413827771015 +AAAAAAAAIAGAAAAA Full, japanese pages must admit; fixed farms Home curtains/drapes 0.79 721.36 1.91050076223 +AAAAAAAAINFAAAAA Happy products provide mediterranean figures. Home curtains/drapes 5.48 1970.31 5.218308135784 +AAAAAAAAMMBAAAAA Recent flowers should trace alike hard questions. Small areas could not give easy, enthusiastic ends. Obvious concessions shall relate never reasons. Italian, acute officers c Home curtains/drapes 8.88 3217.93 8.522593043421 +AAAAAAAAOPFAAAAA Limited ey Home curtains/drapes 4.92 3989.1 10.565014126942 +AAAAAAAABJGAAAAA Objectives ignore today never responsible sites. Academic, Home decor 2.87 3738.95 12.078237270921 +AAAAAAAAJNGAAAAA Financial, clear nations ought to come. As private men imply; arbitrary, past days should colour quiet, financial men. Lips come by a questions. Deep years must not connec Home decor 4.49 1071.6 3.461677492216 +AAAAAAAAKPGAAAAA Hours afford together days. Future, important hundreds may hope overall for a services. Black breasts stop wives. Numbers s Home decor 4.76 5856.72 18.919443637746 +AAAAAAAALLGAAAAA Aspects acc Home decor 3.23 3610.26 11.662519394407 +AAAAAAAAMBEAAAAA However recent matt Home decor 0.69 11689.3 37.760905850836 +AAAAAAAAMOFAAAAA Certainly only priorities help definitely top arguments. Full years need abroad. Local functions get e Home decor 1.89 1184.46 3.826258419587 +AAAAAAAAPBDAAAAA Rarely social women will not stand chosen, sure bodies. Responsible directors ought to see then for a effo Home decor 6.27 3804.8 12.290957934287 +AAAAAAAAANDAAAAA Low, left communities send always so gothic operations. Too significant colours remove for a pounds. Eggs go scientific levels. Results sleep short, black partic Home flatware 7.13 9281.08 23.458206788339 +AAAAAAAABNCAAAAA Words shall not avoid then thick inches. Nevertheless gold facilities shall panic however. Good govern Home flatware 9.67 9706.43 24.533291612241 +AAAAAAAAEBGAAAAA Relations shall know head, decent weaknesses. Systematic implications might not keep in a managers. Much great others Home flatware 6.97 2848.32 7.199213837114 +AAAAAAAAEGBAAAAA Then central estimates can solve too central equal sentences; clear weeks join. Clean, remaining systems may not ask then terribly big affairs. Inevitably big pp. commen Home flatware 7.82 13963.4 35.292910379857 +AAAAAAAAMCDAAAAA Ago foreign arguments stress other materials; possible, optimistic sides must l Home flatware 9.51 99.2 0.250730961634 +AAAAAAAANMDAAAAA Players shall not ensue still rational, public losses. Uncertain times walk anywhere. Costs get. Nearly white sales remove available ends. Rivers will think then customers. Families trust together sig Home flatware 2.03 905.95 2.289815672303 +AAAAAAAAODFAAAAA Domestic years refuse strictly more selective years. Studies become schools. Almost clear countries end unknown, special images; further little men may no Home flatware 9.22 2759.94 6.975830748513 +AAAAAAAAABBAAAAA Benefits used to influence a little fields. There foreign figures must know radically new patients. American, genetic workers deter special, other boys; local Home furniture 1.71 394.56 1.031620032505 +AAAAAAAAABEAAAAA Less short parts can mention careful groups. Even successful tons say in a rights. Then chinese traditions repair. Attit Home furniture 8.76 1788.98 4.677482780187 +AAAAAAAAABGAAAAA Extra millions should condemn. Uncomfortable nurses should not joi Home furniture 4.64 52.68 0.137737589498 +AAAAAAAAAFDAAAAA Most increased shares may not examine sometimes evident, environmental roots. Minerals may live ge Home furniture 0.85 3547.96 9.276527297561 +AAAAAAAACBBAAAAA Lovely teachers would demo Home furniture 4.69 19874.51 51.964067954728 +AAAAAAAADHAAAAAA Policies used to decrease social forms; well massive parts admire lacking, necessary cities. More rational areas deceive therefore only facilities. Yet persist Home furniture 2.68 3872.06 10.123921996808 +AAAAAAAAFNBAAAAA Superior years can need yesterday radical points. Brothers might not clear more. Seriously present armies can perform too main real residents. Rarely public contacts could lock Home furniture 0.16 2359.25 6.168515717982 +AAAAAAAAKHFAAAAA Usually artistic shapes would not Home furniture 4.93 219.92 0.575004758588 +AAAAAAAAMOCAAAAA Black meals challenge vast roles. Common, recent men k Home furniture 23.89 2915.33 7.622447357467 +AAAAAAAAONEAAAAA Recent models cannot make warml Home furniture 2.18 3221.39 8.422674514676 +AAAAAAAAEAEAAAAA Suggest Home glassware 9.5 3368.18 23.316965716616 +AAAAAAAAGLFAAAAA As available thoughts satisfy even both criminal courses. Sure ways could not construct everywhere residents. Points could not ask downstairs pres Home glassware 2.84 891.59 6.172227571946 +AAAAAAAAJFFAAAAA Close, small reports will expand seriously men. Serious, a Home glassware 0.82 2399.91 16.613904005416 +AAAAAAAAOOAAAAAA Previously recent expectations win over true minutes. Extra perc Home glassware 2.39 7785.51 53.896902706022 +AAAAAAAAEHFAAAAA Kids used to know even. Homes require i Home kids 3.14 10076.37 58.53100472599 +AAAAAAAALPCAAAAA Networks mention organisms. Kilometres used to conduct as with a clients; somehow old teachers shall develop african, scientific institutions. Precisely national supporters tra Home kids 1.54 106.38 0.617933668846 +AAAAAAAAPHAAAAAA High, black homes shall not greet also magnificent facts; inc, environmental areas say well howev Home kids 3.66 7032.69 40.851061605164 +AAAAAAAAGKBAAAAA English, effective thousands make Home lighting 1.87 6853.47 15.530517878812 +AAAAAAAAICAAAAAA Usually other children must stop shares. Relations Home lighting 9.93 12724.77 28.835359020872 +AAAAAAAALBBAAAAA Democrats pay papers. Moving, conventional seats could not mind instead. Alone activit Home lighting 9.13 6127.08 13.884459330078 +AAAAAAAALBEAAAAA Gently contemporary operations can occur with the doubts; circumstances may feel high. Hard countries would no Home lighting 48.57 3093.83 7.010869257326 +AAAAAAAALCGAAAAA Hours influence in a interests. Years should choo Home lighting 3.18 5983.8 13.55977525009 +AAAAAAAAOJAAAAAA Great, absent relations should participate alone wonderful issues; chains will care on behalf of a police. Substantial activities exert grey, free Home lighting 9.17 9346.1 21.179019262821 +AAAAAAAAALGAAAAA Big, western sentences could use; prices bring average board Home mattresses 4.48 10486.75 56.344449184552 +AAAAAAAAHAGAAAAA Great tons expect so ever continuous doubts. Old, initial vehicles ought to die more laboratories. Elected, useful girls be Home mattresses 2.75 4829.15 25.946627580478 +AAAAAAAALGCAAAAA Different, new tests could not warn able, great bodies. Good, moving years might convey; permanently confident e Home mattresses 9.27 3295.96 17.70892323497 +AAAAAAAABDGAAAAA New sites shou Home paint 4.83 8207.26 18.184617988885 +AAAAAAAAILEAAAAA Sweet days allow theoretical, conventional events. Simple, useful offences w Home paint 0.76 8807.78 19.515174934161 +AAAAAAAAKDGAAAAA Things used to support yet early conditions; minutes must make halfway critical masters. Open trials m Home paint 36.48 10908.01 24.168601319922 +AAAAAAAAKOBAAAAA Elsewhere minimum hands stay about between a forms. Various relations will not like by a authorities. Products may begin secondary, other Home paint 6.55 13457.75 29.817995620941 +AAAAAAAAMGFAAAAA Resources could not provide ai Home paint 7.56 3348.86 7.419984233259 +AAAAAAAANAGAAAAA Light suggestions lie human, educational employees. Strong wounds might come new words. Important scenes will affect like a columns. Then principal farmers could not worry exceptio Home paint 7.24 403.32 0.893625902832 +AAAAAAAAGIGAAAAA Actually keen visitors shall inject just to Home rugs 1.24 2445.12 21.611493037817 +AAAAAAAAHKFAAAAA Relevant farmers can become various, fresh methods. Genuinely special women take british experienc Home rugs 4.43 2030.06 17.94293431666 +AAAAAAAAKECAAAAA Possible countries see ever. Never particular users ought to encourage in a casualties. Still upper proposals will see though succe Home rugs 87.61 3972.09 35.107804680581 +AAAAAAAANGAAAAAA Solutions may not go central, interesting sectors. Enterprises resist inte Home rugs 9.46 760.74 6.723893802181 +AAAAAAAAPCFAAAAA Standard women sit however sale Home rugs 7.34 2105.97 18.613874162761 +AAAAAAAAAEDAAAAA Modern farmers decide wild, usual efforts. Great needs matter without the communities; levels might abandon on a pa Home tables 7.16 11404.99 64.829847790412 +AAAAAAAAOEBAAAAA Over different children would provide successfully important international forms; well particular birds list in order. Horses used to pay never cert Home tables 1.94 6187.2 35.170152209588 +AAAAAAAAAICAAAAA Only, other occasions can work also birds. General women get si Home wallpaper 4.82 10701.57 17.641656555799 +AAAAAAAAGCFAAAAA Medical, proposed friends suggest then even arbitrary years. Governments continue upon the yea Home wallpaper 8.17 4654.63 7.673209057579 +AAAAAAAAJKDAAAAA Hardly well-known agencies might eat now similar british circumstances; institutions tell eventually. Informal problems will per Home wallpaper 57.16 17245.24 28.42896895524 +AAAAAAAAKABAAAAA Certainly difficult fields like for a fields. Old, ideal committees should experiment out of a messages. Hearts see geo Home wallpaper 8.59 3970.18 6.544885659273 +AAAAAAAAKEFAAAAA Important, awful changes shall determine then awful, possible respondents. Children clear especially. Really saf Home wallpaper 0.75 11302.36 18.632065518424 +AAAAAAAAKPBAAAAA For example flat users lower very new developments; animals enter systems. Male courses want Home wallpaper 6.27 3810.46 6.281585472002 +AAAAAAAAMNDAAAAA Compatible kids go at the acts. Massive operations may not mark brilliantly. Minds used to control severe, local boxes; therefore male issues must not live flatly new local officers. Substantial Home wallpaper 4.16 8976.36 14.797628781684 +AAAAAAAADCFAAAAA Police might not generate completely now personal newspapers. Levels settle widely furthermore basic f Sports archery 6.79 5069.42 14.258399636383 +AAAAAAAAEFCAAAAA Statistical, Sports archery 0.35 18161.83 51.082496669847 +AAAAAAAAEKFAAAAA Sure schools might fit as essential organisations; feelings average lazily modest aspects. British difficulties should enable Sports archery 0.14 72.54 0.204028135294 +AAAAAAAAMNGAAAAA Conscious, c Sports archery 4.8 6111.44 17.189215703922 +AAAAAAAAPIFAAAAA Trials shall opt now main ba Sports archery 4.72 6138.69 17.265859854553 +AAAAAAAACPAAAAAA At all lengthy sales must not restore poor, clean calculations; also alone inves Sports athletic shoes 1.76 3992.25 28.925428220958 +AAAAAAAAGAEAAAAA Equations may not lea Sports athletic shoes 6.16 4312.6 31.246490511793 +AAAAAAAAOFGAAAAA Real, sure elections tell as en route british services. Fi Sports athletic shoes 2.14 1111.5 8.053256551467 +AAAAAAAAPDBAAAAA Poor, serious years help bare, great days. Wide institutions detach carefully needs. Supreme models find almost new changes. Businesses assume just even experimental words. Mos Sports athletic shoes 0.45 4385.52 31.774824715781 +AAAAAAAAALFAAAAA Dir Sports baseball 5.85 14974.79 38.609298074407 +AAAAAAAAAPEAAAAA Indian days should not Sports baseball 0.57 5152.16 13.283744290707 +AAAAAAAADBGAAAAA Unfair years may survive then against a pictures. Previous stars write sure, new boys. Complete holidays shall not send at all barely growing stands. Early centres help economic concentrations. For Sports baseball 4.32 4700.93 12.120344098109 +AAAAAAAAPBGAAAAA Now empty authorities shall not Sports baseball 0.58 13957.57 35.986613536777 +AAAAAAAAAAHAAAAA Then sensible months would go other, profitable systems. For instance easy cigarettes accommodate perhaps holy changes. Persistent schools should eat. Away white schools would give under. Able grou Sports basketball 2.16 2081.01 47.08018298063 +AAAAAAAACBFAAAAA Primary, front circumstances may no Sports basketball 1.19 2339.13 52.91981701937 +AAAAAAAAAIDAAAAA Instead local goods heat better metropolitan nations; however different posts remember normally in a minds. So good visitors Sports camping 3.26 1294.83 9.198313255409 +AAAAAAAAFLGAAAAA Immediate co Sports camping 5.38 1025 7.281474082925 +AAAAAAAAKFFAAAAA Numerous, specific courts top even on a machines. Children could not endure too payable acc Sports camping 51.7 1562.4 11.099097665524 +AAAAAAAAKLCAAAAA Top, correct qualifications grab parts Sports camping 2.43 5768.31 40.977365626612 +AAAAAAAAOKEAAAAA Good titles can expect. Nuclear, attractive pupils might not tell political, dull moments. Attitudes used to grow usually chemicals. Police might not wish in a policies. Econom Sports camping 4.28 4426.28 31.443749369531 +AAAAAAAACIAAAAAA Final orders give else. International, living personnel may miss significant companies. Black, american numbers put then Sports fishing 1.7 3767.86 12.775607177527 +AAAAAAAACNCAAAAA Cells will say quite with the manufacturers. Immediate steps shall assess hardly. Legal, high policies recognize also significant politicians. Only, political companies must not run d Sports fishing 3.38 11626.7 39.422418022684 +AAAAAAAADEDAAAAA Institutional, ethical minutes say sources. Great lectures shall buy of course therefore steep men. Social sources go. Members meet all. All heavy tons will concentrate in the books; Sports fishing 5.52 1651.38 5.599300977431 +AAAAAAAAEDGAAAAA Modern numbers stop various, old programs; children must not reinstate always in a tanks; passive, financia Sports fishing 2.45 27.52 0.093311510917 +AAAAAAAAMAFAAAAA Less political cases establish in the surfaces. Waiting, important games need very. Alone, academic customers may not see for a c Sports fishing 5.13 1718.82 5.827968430058 +AAAAAAAANNCAAAAA Effects used to look in a aspects. More domestic changes could turn away medieval, financial families. Domestic, alone techniques should we Sports fishing 1.4 3846.9 13.043606517022 +AAAAAAAAOBBAAAAA Reasonable, parliamentary fires could Sports fishing 1.21 6471.09 21.941394810429 +AAAAAAAAPBAAAAAA Bright advisers explain i Sports fishing 8.48 382.34 1.296392553931 +AAAAAAAAANEAAAAA Pictures see below increased pupils. Again experimental preferences will not set of course foreign unions; stones take ago negotiations. Others might not take still together wi Sports fitness 0.9 3581.94 33.240162807143 +AAAAAAAACNEAAAAA Connections agree structures. Good minds incorporate more early, national lights; young, young p Sports fitness 3.45 1868.82 17.342524178865 +AAAAAAAAFPFAAAAA Groups hurt children. Organisms would not pick somehow too square examples. Environmental years counteract further into a arguments. Nuclear, unawa Sports fitness 4.01 2613.33 24.251527012957 +AAAAAAAAICDAAAAA Valuable officers must not put for the defences; purposes hurt in particular by a structures; Sports fitness 7.42 2711.85 25.165786001036 +AAAAAAAAFBBAAAAA Owners restore very ancient, new themes. Possible millions used to carry op Sports football 3.83 8540.51 44.599081334676 +AAAAAAAAIIDAAAAA Weeks must twist. Children fall for a girls; gr Sports football 3.3 3708.63 19.36669953085 +AAAAAAAANOEAAAAA Nasty customers pick in a considerations; surprised positions sacrifice principal players. Grounds would not offer together only individuals. Therefore glad negotiations can underst Sports football 4.83 5110.64 26.688084087747 +AAAAAAAAOHEAAAAA Subsequent schools ensure more useful hours. Statistical ways may not undertake much relationships. Fa Sports football 1.83 1789.74 9.346135046727 +AAAAAAAADICAAAAA Long old elements consider often just great conservatives; likely, foreign consequences may remember; massive Sports golf 32.36 4947.79 62.917443418948 +AAAAAAAADLFAAAAA Available problems could keep late, great risks. Supreme situations ought to follow once even beautiful systems. Narrow, late authorities should tell e Sports golf 3.04 681.91 8.671353036773 +AAAAAAAAJDEAAAAA Borders may stay too b Sports golf 8.11 1845.35 23.465972527766 +AAAAAAAAKJEAAAAA Hot seeds should ask significant, l Sports golf 7.66 388.89 4.945231016513 +AAAAAAAACJGAAAAA Apparently literary pounds ought to come welsh, large d Sports guns 7.02 2261.92 27.696968286952 +AAAAAAAADMEAAAAA Dry words make already yet costly friends; interesting courts send again. Either pleasa Sports guns 5.4 4802.22 58.802669876461 +AAAAAAAAGGBAAAAA Australian countries disappear more low Sports guns 3.75 567.45 6.948364510872 +AAAAAAAAOODAAAAA Prime years should ask short for long simple bits. Sports guns 6 535.08 6.551997325715 +AAAAAAAACHBAAAAA Sec Sports hockey 2.13 6690.03 18.607063142744 +AAAAAAAADLCAAAAA French nations demonstrate in an skills. Rooms carry rural guidelines; options pay splendid, square fields; prices overcome small, racial parts. Weeks cannot preserve all but lakes. F Sports hockey 0.09 3799.34 10.567151310346 +AAAAAAAAHLEAAAAA Then friendly specialists may work early for a rocks. Years describe enor Sports hockey 7 5486.49 15.259642462296 +AAAAAAAALEEAAAAA Marks shall not ensure little too dry groups. More clear relations ought to make in private concerning the reports. Careers Sports hockey 5.9 2676.32 7.443681901305 +AAAAAAAAMKAAAAAA Automatic, black developments get thus new profits. Chemicals describe widely similar temperatures. Easy features used to emphasize different Sports hockey 0.83 6838.16 19.019058942962 +AAAAAAAAOAAAAAAA Important grounds rip there just big vehicles. Journalists w Sports hockey 1.85 10463.91 29.103402240347 +AAAAAAAAAEAAAAAA Public, annual h Sports optics 2.02 5797.43 18.164884308891 +AAAAAAAABKCAAAAA Past, adequate years may not worry also open male Sports optics 0.79 11150.1 34.93621769173 +AAAAAAAADFFAAAAA Gastric ends go personal, official years; concentrat Sports optics 1.51 3900.05 12.219890028666 +AAAAAAAAINEAAAAA Talks might not react now populations. Powerful effects would take more wide, dangerous seconds. Less common patients could come just Sports optics 3.09 4096.27 12.834699280195 +AAAAAAAAMFAAAAAA New, quick observations merge too worth a children; shares could live there crucial mountains. Simply eastern pounds shall crush immediately married long wives. Corporate, import Sports optics 4.48 6971.74 21.844308690518 +AAAAAAAACGAAAAAA Years know merely religious reasons. New animals modernise well racial pieces. Various, chi Sports outdoor 3.16 6743.55 14.066686886445 +AAAAAAAAEMDAAAAA Small, full states might not join forward both sure possibilities. Top women achieve true ya Sports outdoor 4.66 4318.93 9.009058432795 +AAAAAAAAGCCAAAAA Arguments used to make originally discussions. Clear, great strategies will want geographical railways. Important patients ought to protect right also western children. French circumstances get up to Sports outdoor 3.72 7196.03 15.010536117544 +AAAAAAAAGDFAAAAA Much poor companies must offer equal powers; parliamentary terms seek so. Social men beat british clothes. Under Sports outdoor 1.75 7052.22 14.710556100915 +AAAAAAAAILGAAAAA Positive reasons Sports outdoor 5.25 107.1 0.223404907732 +AAAAAAAAJCFAAAAA Unusual, good courses Sports outdoor 84.32 10749.3 22.422468484472 +AAAAAAAALLAAAAAA Benefits may show only goods. More economic issues may fetch then human, political pilots. British, appropriate friends must make. Cultural forces believe. Much obvious numbers make rough Sports outdoor 0.79 4066.79 8.483107793807 +AAAAAAAAMLCAAAAA Now silly doctors make units. Evenly natural figures cannot rectify so unpleasant eyes. Top proceedings follow. Steps try quite dependent, financial tanks. Already Sports outdoor 2.43 4150.64 8.658014437255 +AAAAAAAAPNAAAAAA Common cha Sports outdoor 5.87 3555.3 7.416166839035 +AAAAAAAACLDAAAAA Voters should control provisions. Parliamentary days Sports pools 6.33 5203.81 10.939116674017 +AAAAAAAAGLCAAAAA Regular, Sports pools 0.7 2426.48 5.100791117887 +AAAAAAAAGMFAAAAA Present, individual substances take so at a appointments. True aut Sports pools 1.76 10657.17 22.40282140294 +AAAAAAAAMEGAAAAA Short owners may become further obvious markets. Important, various thoughts might meet below so educational resources. Other, modern games determine slightly inside a benefits. Long likely instrument Sports pools 76.51 10293.66 21.638673922119 +AAAAAAAAOFEAAAAA Too concerned seats must judge. Afterwards lucky families must work sound defences. Services know in the others. Surprised, other horses think Sports pools 2.34 18989.54 39.918596883037 +AAAAAAAAAKAAAAAA Legs cannot make much across a children. Well industrial ports see so. Equal, full systems rise police. Labour departments will leave. Political, social Sports sailing 1.17 4953.59 9.880384397514 +AAAAAAAACJCAAAAA Ever informal books suffice as available developments. Outside patterns might drive like a organisations. Generally political characters might not know finally new interests. Recently old shops wo Sports sailing 82.11 30433.67 60.702714238984 +AAAAAAAAEIFAAAAA Police could no Sports sailing 3.94 4036.3 8.050766321735 +AAAAAAAAEKGAAAAA Minerals used to leave american flowers; so wrong questions activate rigid dishes. Records should involve teachers. Significant, difficult cri Sports sailing 1.58 10712.04 21.366135041767 +AAAAAAAAALCAAAAA Long managerial powers could make also lexical principal children. Very blank authors used Sports tennis 2.87 11158.53 100 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/results/q99.slt.no b/vortex-sqllogictest/slt/tpcds/duckdb/results/q99.slt.no new file mode 100644 index 00000000000..0e17f8af911 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/results/q99.slt.no @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +query TTTIIIII +SELECT w_substr , + sm_type , + LOWER(cc_name) cc_name_lower , + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk <= 30) THEN 1 + ELSE 0 + END) AS "30 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 30) + AND (cs_ship_date_sk - cs_sold_date_sk <= 60) THEN 1 + ELSE 0 + END) AS "31-60 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 60) + AND (cs_ship_date_sk - cs_sold_date_sk <= 90) THEN 1 + ELSE 0 + END) AS "61-90 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 90) + AND (cs_ship_date_sk - cs_sold_date_sk <= 120) THEN 1 + ELSE 0 + END) AS "91-120 days", + sum(CASE + WHEN (cs_ship_date_sk - cs_sold_date_sk > 120) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM catalog_sales , + (SELECT SUBSTRING(w_warehouse_name,1,20) w_substr, * + FROM warehouse) AS sq1 , + ship_mode , + call_center , + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY w_substr , + sm_type , + cc_name +ORDER BY w_substr NULLS FIRST, + sm_type NULLS FIRST, + cc_name_lower NULLS FIRST +LIMIT 100; +---- +Conventional childr EXPRESS ny metro 1810 2036 1851 0 0 +Conventional childr LIBRARY ny metro 1299 1478 1409 0 0 +Conventional childr NEXT DAY ny metro 1804 1911 1871 0 0 +Conventional childr OVERNIGHT ny metro 1423 1425 1370 0 0 +Conventional childr REGULAR ny metro 1397 1420 1395 0 0 +Conventional childr TWO DAY ny metro 1374 1449 1421 0 0 diff --git a/vortex-sqllogictest/slt/tpcds/duckdb/tpcds.slt b/vortex-sqllogictest/slt/tpcds/duckdb/tpcds.slt new file mode 100644 index 00000000000..d19324035e9 --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/duckdb/tpcds.slt @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +include ../../setup.slt.no + +let FILE_FORMAT +SELECT 'vortex'; + +statement ok +SET explain_output = 'all'; + +include ./create.slt.no +include ./results/*.slt.no +include ./plans/*.slt.no +include ./drop.slt.no diff --git a/vortex-sqllogictest/slt/tpcds/generate_data.sh b/vortex-sqllogictest/slt/tpcds/generate_data.sh new file mode 100755 index 00000000000..ae011efa30b --- /dev/null +++ b/vortex-sqllogictest/slt/tpcds/generate_data.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# SPDX-License-Identifier: Apache-2.0 +# SPDX-FileCopyrightText: Copyright the Vortex contributors + +# Generates TPC-DS at scale factor 0.1 with DuckDB's tpcds extension into +# slt/tpcds/data/, one Parquet file per table, converts every table to Vortex, +# and checks that the Parquet and Vortex tables hold identical data before the +# Vortex files are used by the SLT suite. Set VORTEX_SLT_PROFILE to reuse an +# existing cargo profile for the parity test (CI uses `ci`). + +set -e -o pipefail + +if ! command -v uvx &> /dev/null; then + echo "Error: uvx not found. Install uv first: https://docs.astral.sh/uv/" >&2 + exit 1 +fi + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +CRATE_DIR="$(cd "${SCRIPT_DIR}/../.." && pwd)" +DATA_DIR="${SCRIPT_DIR}/data" +SCALE_FACTOR="0.1" + +rm -rf "${DATA_DIR}" +mkdir -p "${DATA_DIR}" + +echo "Generating TPC-DS data (SF=${SCALE_FACTOR})..." +uvx --with duckdb python - "${DATA_DIR}" "${SCALE_FACTOR}" <<'PY' +import sys +import duckdb + +data_dir, scale_factor = sys.argv[1], sys.argv[2] +con = duckdb.connect() +con.execute(f"CALL dsdgen(sf={scale_factor})") +con.execute(f"EXPORT DATABASE '{data_dir}' (FORMAT parquet)") +PY +# EXPORT DATABASE also writes load/schema scripts that the tests do not use. +rm -f "${DATA_DIR}"/load.sql "${DATA_DIR}"/schema.sql + +# The Parquet files are kept so the `parquet.slt` suites and the parity test +# can read them. +for f in "${DATA_DIR}"/*.parquet; do + echo "Converting $(basename "$f") to Vortex..." + (cd "${CRATE_DIR}" && cargo run --release --package vortex-tui --bin vx -- convert "$f") +done + +# The parity test reads every table in both formats through DuckDB and fails if +# any row differs, so a bad conversion is caught before the query result files +# are trusted. +echo "Checking that the TPC-DS Parquet and Vortex tables match..." +( + cd "${CRATE_DIR}" + cargo test --profile "${VORTEX_SLT_PROFILE:-release}" -p vortex-sqllogictest --test sqllogictests \ + -- --exact 'slt::duckdb::tpcds/duckdb/parity.slt' +)