Skip to content

Commit

Permalink
Add integration test for Trino cascading query
Browse files Browse the repository at this point in the history
  • Loading branch information
diqiu50 committed Oct 8, 2024
1 parent 8c62fc5 commit c08abcd
Show file tree
Hide file tree
Showing 275 changed files with 11,970 additions and 11 deletions.
4 changes: 1 addition & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -488,11 +488,9 @@ tasks.rat {
"dev/docker/kerberos-hive/kadm5.acl",
"**/*.log",
"**/*.out",
"**/testsets",
"**/trino-ci-testset",
"**/licenses/*.txt",
"**/licenses/*.md",
"integration-test/**/*.sql",
"integration-test/**/*.txt",
"docs/**/*.md",
"spark-connector/spark-common/src/test/resources/**",
"web/web/.**",
Expand Down
6 changes: 4 additions & 2 deletions integration-test-common/docker-script/shutdown.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
cd "$(dirname "$0")"

LOG_DIR=../build/trino-ci-container-log
docker cp trino-ci-hive:/usr/local/hadoop/logs $LOG_DIR/hdfs
docker cp trino-ci-hive:/tmp/root $LOG_DIR/hive
if [ -d $LOG_DIR ]; then
docker cp trino-ci-hive:/usr/local/hadoop/logs $LOG_DIR/hdfs
docker cp trino-ci-hive:/tmp/root $LOG_DIR/hive
fi

docker compose down
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,6 @@ public class TrinoQueryIT extends TrinoQueryITBase {
static {
testsetsDir = TrinoQueryIT.class.getClassLoader().getResource("trino-ci-testset").getPath();
testsetsDir = ITUtils.joinPath(testsetsDir, "testsets");

ciTestsets.add("hive");
ciTestsets.add("lakehouse-iceberg");
ciTestsets.add("jdbc-mysql");
ciTestsets.add("jdbc-postgresql");
ciTestsets.add("tpch");
}

@BeforeAll
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
select count(*) from call_center;
select count(*) from catalog_page;
select count(*) from catalog_returns;
select count(*) from catalog_sales;
select count(*) from customer;
select count(*) from customer_address;
select count(*) from customer_demographics;
select count(*) from date_dim;
select count(*) from household_demographics;
select count(*) from income_band;
select count(*) from inventory;
select count(*) from item;
select count(*) from promotion;
select count(*) from reason;
select count(*) from ship_mode;
select count(*) from store;
select count(*) from store_returns;
select count(*) from store_sales;
select count(*) from time_dim;
select count(*) from warehouse;
select count(*) from web_page;
select count(*) from web_returns;
select count(*) from web_sales;
select count(*) from web_site;

SELECT * FROM call_center ORDER BY cc_call_center_sk, cc_call_center_id, cc_rec_start_date LIMIT 10;

SELECT * FROM catalog_page ORDER BY cp_catalog_page_sk, cp_catalog_page_id, cp_start_date_sk LIMIT 10;

SELECT * FROM catalog_returns ORDER BY cr_returned_date_sk, cr_returned_time_sk, cr_item_sk LIMIT 10;

SELECT * FROM catalog_sales ORDER BY cs_sold_date_sk, cs_sold_time_sk, cs_ship_date_sk LIMIT 10;

SELECT * FROM customer ORDER BY c_customer_sk, c_customer_id, c_current_cdemo_sk LIMIT 10;

SELECT * FROM customer_address ORDER BY ca_address_sk, ca_address_id, ca_street_number LIMIT 10;

SELECT * FROM customer_demographics ORDER BY cd_demo_sk, cd_gender, cd_marital_status LIMIT 10;

SELECT * FROM date_dim ORDER BY d_date_sk, d_date_id, d_date LIMIT 10;

SELECT * FROM household_demographics ORDER BY hd_demo_sk, hd_income_band_sk, hd_buy_potential LIMIT 10;

SELECT * FROM income_band ORDER BY ib_income_band_sk, ib_lower_bound, ib_upper_bound LIMIT 10;

SELECT * FROM inventory ORDER BY inv_date_sk, inv_item_sk, inv_warehouse_sk LIMIT 10;

SELECT * FROM item ORDER BY i_item_sk, i_item_id, i_rec_start_date LIMIT 10;

SELECT * FROM promotion ORDER BY p_promo_sk, p_promo_id, p_start_date_sk LIMIT 10;

SELECT * FROM reason ORDER BY r_reason_sk, r_reason_id, r_reason_desc LIMIT 10;

SELECT * FROM ship_mode ORDER BY sm_ship_mode_sk, sm_ship_mode_id, sm_type LIMIT 10;

SELECT * FROM store ORDER BY s_store_sk, s_store_id, s_rec_start_date LIMIT 10;

SELECT * FROM store_returns ORDER BY sr_returned_date_sk, sr_return_time_sk, sr_item_sk LIMIT 10;

SELECT * FROM store_sales ORDER BY ss_sold_date_sk, ss_sold_time_sk, ss_item_sk LIMIT 10;

SELECT * FROM time_dim ORDER BY t_time_sk, t_time_id, t_time LIMIT 10;

SELECT * FROM warehouse ORDER BY w_warehouse_sk, w_warehouse_id, w_warehouse_name LIMIT 10;

SELECT * FROM web_page ORDER BY wp_web_page_sk, wp_web_page_id, wp_rec_start_date LIMIT 10;

SELECT * FROM web_returns ORDER BY wr_returned_date_sk, wr_returned_time_sk, wr_item_sk LIMIT 10;

SELECT * FROM web_sales ORDER BY ws_sold_date_sk, ws_sold_time_sk, ws_ship_date_sk LIMIT 10;

SELECT * FROM web_site ORDER BY web_site_sk, web_site_id, web_rec_start_date LIMIT 10;

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
WITH
customer_total_return AS (
SELECT
"sr_customer_sk" "ctr_customer_sk"
, "sr_store_sk" "ctr_store_sk"
, "sum"("sr_return_amt") "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") * DECIMAL '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" ASC
-- additional columns to assure results stability for larger scale factors this is a deviation from TPC-DS specification
LIMIT 100
;
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
"AAAAAAAAAACAAAAA"
"AAAAAAAAAADAAAAA"
"AAAAAAAAACCAAAAA"
"AAAAAAAAADDAAAAA"
"AAAAAAAAAEAAAAAA"
"AAAAAAAAAHCAAAAA"
"AAAAAAAAAIDAAAAA"
"AAAAAAAAAJBAAAAA"
"AAAAAAAAAJCAAAAA"
"AAAAAAAAAKBAAAAA"
"AAAAAAAAALDAAAAA"
"AAAAAAAAAMDAAAAA"
"AAAAAAAAAODAAAAA"
"AAAAAAAAAODAAAAA"
"AAAAAAAABBAAAAAA"
"AAAAAAAABBBAAAAA"
"AAAAAAAABBDAAAAA"
"AAAAAAAABCAAAAAA"
"AAAAAAAABCAAAAAA"
"AAAAAAAABCBAAAAA"
"AAAAAAAABCCAAAAA"
"AAAAAAAABEAAAAAA"
"AAAAAAAABEDAAAAA"
"AAAAAAAABGAAAAAA"
"AAAAAAAABGBAAAAA"
"AAAAAAAABGDAAAAA"
"AAAAAAAABHAAAAAA"
"AAAAAAAABIBAAAAA"
"AAAAAAAABIDAAAAA"
"AAAAAAAABJDAAAAA"
"AAAAAAAABKCAAAAA"
"AAAAAAAABKCAAAAA"
"AAAAAAAABLAAAAAA"
"AAAAAAAABLCAAAAA"
"AAAAAAAABMCAAAAA"
"AAAAAAAABMDAAAAA"
"AAAAAAAABNBAAAAA"
"AAAAAAAABNBAAAAA"
"AAAAAAAABNDAAAAA"
"AAAAAAAABOAAAAAA"
"AAAAAAAABODAAAAA"
"AAAAAAAABPBAAAAA"
"AAAAAAAACAAAAAAA"
"AAAAAAAACABAAAAA"
"AAAAAAAACACAAAAA"
"AAAAAAAACACAAAAA"
"AAAAAAAACBAAAAAA"
"AAAAAAAACCAAAAAA"
"AAAAAAAACDAAAAAA"
"AAAAAAAACGBAAAAA"
"AAAAAAAACGDAAAAA"
"AAAAAAAACHAAAAAA"
"AAAAAAAACHBAAAAA"
"AAAAAAAACHDAAAAA"
"AAAAAAAACICAAAAA"
"AAAAAAAACJAAAAAA"
"AAAAAAAACJBAAAAA"
"AAAAAAAACJDAAAAA"
"AAAAAAAACJDAAAAA"
"AAAAAAAACLBAAAAA"
"AAAAAAAACLCAAAAA"
"AAAAAAAACNBAAAAA"
"AAAAAAAACNBAAAAA"
"AAAAAAAACOCAAAAA"
"AAAAAAAACOCAAAAA"
"AAAAAAAACPAAAAAA"
"AAAAAAAACPCAAAAA"
"AAAAAAAADBAAAAAA"
"AAAAAAAADBDAAAAA"
"AAAAAAAADCAAAAAA"
"AAAAAAAADDAAAAAA"
"AAAAAAAADDDAAAAA"
"AAAAAAAADFAAAAAA"
"AAAAAAAADFBAAAAA"
"AAAAAAAADGBAAAAA"
"AAAAAAAADGDAAAAA"
"AAAAAAAADHDAAAAA"
"AAAAAAAADJAAAAAA"
"AAAAAAAADKBAAAAA"
"AAAAAAAADMAAAAAA"
"AAAAAAAADMDAAAAA"
"AAAAAAAADNBAAAAA"
"AAAAAAAADNCAAAAA"
"AAAAAAAADOAAAAAA"
"AAAAAAAADOCAAAAA"
"AAAAAAAADODAAAAA"
"AAAAAAAADPBAAAAA"
"AAAAAAAADPCAAAAA"
"AAAAAAAAEAAAAAAA"
"AAAAAAAAEAAAAAAA"
"AAAAAAAAEACAAAAA"
"AAAAAAAAEBAAAAAA"
"AAAAAAAAEBBAAAAA"
"AAAAAAAAEBCAAAAA"
"AAAAAAAAECAAAAAA"
"AAAAAAAAECBAAAAA"
"AAAAAAAAEDBAAAAA"
"AAAAAAAAEDBAAAAA"
"AAAAAAAAEHBAAAAA"
"AAAAAAAAEHDAAAAA"
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
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
) )
, 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)
, "round"(("mon_sales1" / "mon_sales2"), 2)
, "round"(("tue_sales1" / "tue_sales2"), 2)
, "round"(("wed_sales1" / "wed_sales2"), 2)
, "round"(("thu_sales1" / "thu_sales2"), 2)
, "round"(("fri_sales1" / "fri_sales2"), 2)
, "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" ASC
LIMIT 100
;
Loading

0 comments on commit c08abcd

Please sign in to comment.