aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/sql/suites/tpch
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-11-20 11:14:58 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-11-20 11:14:58 +0000
commit31773f157bf8164364649b5f470f52dece0a4317 (patch)
tree33d0f7eef45303ab68cf08ab381ce5e5e36c5240 /yql/essentials/tests/sql/suites/tpch
parent2c7938962d8689e175574fc1e817c05049f27905 (diff)
parenteff600952d5dfe17942f38f510a8ac2b203bb3a5 (diff)
downloadydb-31773f157bf8164364649b5f470f52dece0a4317.tar.gz
Merge branch 'rightlib' into mergelibs-241120-1113
Diffstat (limited to 'yql/essentials/tests/sql/suites/tpch')
-rw-r--r--yql/essentials/tests/sql/suites/tpch/customer.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/customer.txt.attr56
-rw-r--r--yql/essentials/tests/sql/suites/tpch/default.cfg8
-rw-r--r--yql/essentials/tests/sql/suites/tpch/lineitem.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/lineitem.txt.attr114
-rw-r--r--yql/essentials/tests/sql/suites/tpch/nation.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/nation.txt.attr32
-rw-r--r--yql/essentials/tests/sql/suites/tpch/orders.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/orders.txt.attr65
-rw-r--r--yql/essentials/tests/sql/suites/tpch/part.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/part.txt.attr62
-rw-r--r--yql/essentials/tests/sql/suites/tpch/partsupp.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/partsupp.txt.attr39
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q1.sql26
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q10.sql87
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q11.sql62
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q12.sql45
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q13.sql33
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q14.sql21
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q15.sql56
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q16.sql44
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q17.sql41
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q18.sql53
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q19.sql40
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q2.sql68
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q20.sql83
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q21.sql51
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q22.sql58
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q3.sql55
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q4.sql29
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q5.sql102
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q6.sql16
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q7.sql87
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q8.sql110
-rw-r--r--yql/essentials/tests/sql/suites/tpch/q9.sql59
-rw-r--r--yql/essentials/tests/sql/suites/tpch/region.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/region.txt.attr26
-rw-r--r--yql/essentials/tests/sql/suites/tpch/supplier.txt1
-rw-r--r--yql/essentials/tests/sql/suites/tpch/supplier.txt.attr50
39 files changed, 1686 insertions, 0 deletions
diff --git a/yql/essentials/tests/sql/suites/tpch/customer.txt b/yql/essentials/tests/sql/suites/tpch/customer.txt
new file mode 100644
index 0000000000..51461f4d12
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/customer.txt
@@ -0,0 +1 @@
+{"c_custkey"=1;"c_acctbal"=711.56;"c_phone"="25-989-741-2988";"c_mktsegment"="BUILDING";"c_nationkey"=15;"c_comment"="to the even, regular platelets. regular, ironic epitaphs nag e";"c_name"="Customer#000000001";"c_address"="IVhzIApeRb ot,c,E";};
diff --git a/yql/essentials/tests/sql/suites/tpch/customer.txt.attr b/yql/essentials/tests/sql/suites/tpch/customer.txt.attr
new file mode 100644
index 0000000000..db4ca5853e
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/customer.txt.attr
@@ -0,0 +1,56 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "c_custkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "c_acctbal";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "c_phone";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "c_mktsegment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "c_nationkey";
+ "required" = %true;
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "c_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "c_name";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "c_address";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/default.cfg b/yql/essentials/tests/sql/suites/tpch/default.cfg
new file mode 100644
index 0000000000..f3c9624348
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/default.cfg
@@ -0,0 +1,8 @@
+in customer customer.txt
+in lineitem lineitem.txt
+in nation nation.txt
+in orders orders.txt
+in part part.txt
+in partsupp partsupp.txt
+in region region.txt
+in supplier supplier.txt
diff --git a/yql/essentials/tests/sql/suites/tpch/lineitem.txt b/yql/essentials/tests/sql/suites/tpch/lineitem.txt
new file mode 100644
index 0000000000..dedb4b8f12
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/lineitem.txt
@@ -0,0 +1 @@
+{"l_orderkey"=1;"l_linenumber"=1;"l_discount"=0.04;"l_extendedprice"=21168.23;"l_comment"="egular courts above the";"l_shipdate"=9568u;"l_returnflag"="N";"l_partkey"=155190;"l_tax"=0.02;"l_shipinstruct"="DELIVER IN PERSON";"l_commitdate"=9538u;"l_receiptdate"=9577u;"l_quantity"=17.;"l_suppkey"=7706;"l_shipmode"="TRUCK";"l_linestatus"="O";};
diff --git a/yql/essentials/tests/sql/suites/tpch/lineitem.txt.attr b/yql/essentials/tests/sql/suites/tpch/lineitem.txt.attr
new file mode 100644
index 0000000000..7abd7775de
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/lineitem.txt.attr
@@ -0,0 +1,114 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "l_orderkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "l_linenumber";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "l_discount";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "l_extendedprice";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "l_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "l_shipdate";
+ "required" = %false;
+ "type" = "date";
+ "type_v3" = {
+ "type_name" = "optional";
+ "item" = "date";
+ };
+ };
+ {
+ "name" = "l_returnflag";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "l_partkey";
+ "required" = %true;
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "l_tax";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "l_shipinstruct";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "l_commitdate";
+ "required" = %false;
+ "type" = "date";
+ "type_v3" = {
+ "type_name" = "optional";
+ "item" = "date";
+ };
+ };
+ {
+ "name" = "l_receiptdate";
+ "required" = %false;
+ "type" = "date";
+ "type_v3" = {
+ "type_name" = "optional";
+ "item" = "date";
+ };
+ };
+ {
+ "name" = "l_quantity";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "l_suppkey";
+ "required" = %true;
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "l_shipmode";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "l_linestatus";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/nation.txt b/yql/essentials/tests/sql/suites/tpch/nation.txt
new file mode 100644
index 0000000000..69cbb20e37
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/nation.txt
@@ -0,0 +1 @@
+{"n_nationkey"=0;"n_regionkey"=0;"n_name"="ALGERIA";"n_comment"=" haggle. carefully final deposits detect slyly agai";};
diff --git a/yql/essentials/tests/sql/suites/tpch/nation.txt.attr b/yql/essentials/tests/sql/suites/tpch/nation.txt.attr
new file mode 100644
index 0000000000..1db996b861
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/nation.txt.attr
@@ -0,0 +1,32 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "n_nationkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "n_regionkey";
+ "required" = %true;
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "n_name";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "n_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/orders.txt b/yql/essentials/tests/sql/suites/tpch/orders.txt
new file mode 100644
index 0000000000..0fb3aa5340
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/orders.txt
@@ -0,0 +1 @@
+{"o_orderkey"=1;"o_orderstatus"="O";"o_comment"="nstructions sleep furiously among ";"o_totalprice"=173665.47;"o_clerk"="Clerk#000000951";"o_custkey"=36901;"o_orderpriority"="5-LOW";"o_orderdate"=9497u;"o_shippriority"=0;};
diff --git a/yql/essentials/tests/sql/suites/tpch/orders.txt.attr b/yql/essentials/tests/sql/suites/tpch/orders.txt.attr
new file mode 100644
index 0000000000..fb5e422f56
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/orders.txt.attr
@@ -0,0 +1,65 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "o_orderkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "o_orderstatus";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "o_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "o_totalprice";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "o_clerk";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "o_custkey";
+ "required" = %true;
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "o_orderpriority";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "o_orderdate";
+ "required" = %false;
+ "type" = "date";
+ "type_v3" = {
+ "type_name" = "optional";
+ "item" = "date";
+ };
+ };
+ {
+ "name" = "o_shippriority";
+ "required" = %true;
+ "type" = "int64";
+ "type_v3" = "int64";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/part.txt b/yql/essentials/tests/sql/suites/tpch/part.txt
new file mode 100644
index 0000000000..62ebe18f41
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/part.txt
@@ -0,0 +1 @@
+{"p_partkey"=1;"p_name"="goldenrod lavender spring chocolate lace";"p_container"="JUMBO PKG";"p_size"=7;"p_type"="PROMO BURNISHED COPPER";"p_comment"="ly. slyly ironi";"p_retailprice"=901.;"p_mfgr"="Manufacturer#1";"p_brand"="Brand#13";};
diff --git a/yql/essentials/tests/sql/suites/tpch/part.txt.attr b/yql/essentials/tests/sql/suites/tpch/part.txt.attr
new file mode 100644
index 0000000000..973fedb9e4
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/part.txt.attr
@@ -0,0 +1,62 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "p_partkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "p_name";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "p_container";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "p_size";
+ "required" = %true;
+ "type" = "int64";
+ "type_v3" = "int64";
+ };
+ {
+ "name" = "p_type";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "p_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "p_retailprice";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "p_mfgr";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "p_brand";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/partsupp.txt b/yql/essentials/tests/sql/suites/tpch/partsupp.txt
new file mode 100644
index 0000000000..c06ac1b884
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/partsupp.txt
@@ -0,0 +1 @@
+{"ps_partkey"=1;"ps_suppkey"=2;"ps_comment"=", even theodolites. regular, final theodolites eat after the carefully pending foxes. furiously regular deposits sleep slyly. carefully bold realms above the ironic dependencies haggle careful";"ps_supplycost"=771.64;"ps_availqty"=3325;};
diff --git a/yql/essentials/tests/sql/suites/tpch/partsupp.txt.attr b/yql/essentials/tests/sql/suites/tpch/partsupp.txt.attr
new file mode 100644
index 0000000000..b941075b07
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/partsupp.txt.attr
@@ -0,0 +1,39 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "ps_partkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "ps_suppkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "ps_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "ps_supplycost";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "ps_availqty";
+ "required" = %true;
+ "type" = "int64";
+ "type_v3" = "int64";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/q1.sql b/yql/essentials/tests/sql/suites/tpch/q1.sql
new file mode 100644
index 0000000000..3f8ccfe964
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q1.sql
@@ -0,0 +1,26 @@
+
+-- TPC-H/TPC-R Pricing Summary Report Query (Q1)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+select
+ l_returnflag,
+ l_linestatus,
+ sum(l_quantity) as sum_qty,
+ sum(l_extendedprice) as sum_base_price,
+ sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,
+ sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge,
+ avg(l_quantity) as avg_qty,
+ avg(l_extendedprice) as avg_price,
+ avg(l_discount) as avg_disc,
+ count(*) as count_order
+from
+ plato.lineitem
+where
+ CAST(l_shipdate AS Timestamp) <= (CAST('1998-12-01' AS Date) - Interval("P100D"))
+group by
+ l_returnflag,
+ l_linestatus
+order by
+ l_returnflag,
+ l_linestatus;
diff --git a/yql/essentials/tests/sql/suites/tpch/q10.sql b/yql/essentials/tests/sql/suites/tpch/q10.sql
new file mode 100644
index 0000000000..1d3e4a75bb
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q10.sql
@@ -0,0 +1,87 @@
+
+-- TPC-H/TPC-R Returned Item Reporting Query (Q10)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$border = Date("1993-12-01");
+$join1 = (
+select
+ c.c_custkey as c_custkey,
+ c.c_name as c_name,
+ c.c_acctbal as c_acctbal,
+ c.c_address as c_address,
+ c.c_phone as c_phone,
+ c.c_comment as c_comment,
+ c.c_nationkey as c_nationkey,
+ o.o_orderkey as o_orderkey
+from
+ plato.customer as c
+join
+ plato.orders as o
+on
+ c.c_custkey = o.o_custkey
+where
+ cast(o.o_orderdate as timestamp) >= $border and
+ cast(o.o_orderdate as timestamp) < ($border + Interval("P90D"))
+);
+$join2 = (
+select
+ j.c_custkey as c_custkey,
+ j.c_name as c_name,
+ j.c_acctbal as c_acctbal,
+ j.c_address as c_address,
+ j.c_phone as c_phone,
+ j.c_comment as c_comment,
+ j.c_nationkey as c_nationkey,
+ l.l_extendedprice as l_extendedprice,
+ l.l_discount as l_discount
+from
+ $join1 as j
+join
+ plato.lineitem as l
+on
+ l.l_orderkey = j.o_orderkey
+where
+ l.l_returnflag = 'R'
+);
+$join3 = (
+select
+ j.c_custkey as c_custkey,
+ j.c_name as c_name,
+ j.c_acctbal as c_acctbal,
+ j.c_address as c_address,
+ j.c_phone as c_phone,
+ j.c_comment as c_comment,
+ j.c_nationkey as c_nationkey,
+ j.l_extendedprice as l_extendedprice,
+ j.l_discount as l_discount,
+ n.n_name as n_name
+from
+ $join2 as j
+join
+ plato.nation as n
+on
+ n.n_nationkey = j.c_nationkey
+);
+select
+ c_custkey,
+ c_name,
+ sum(l_extendedprice * (1 - l_discount)) as revenue,
+ c_acctbal,
+ n_name,
+ c_address,
+ c_phone,
+ c_comment
+from
+ $join3
+group by
+ c_custkey,
+ c_name,
+ c_acctbal,
+ c_phone,
+ n_name,
+ c_address,
+ c_comment
+order by
+ revenue desc
+limit 20;
diff --git a/yql/essentials/tests/sql/suites/tpch/q11.sql b/yql/essentials/tests/sql/suites/tpch/q11.sql
new file mode 100644
index 0000000000..2a80fb6128
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q11.sql
@@ -0,0 +1,62 @@
+
+-- TPC-H/TPC-R Important Stock Identification Query (Q11)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+PRAGMA DisableSimpleColumns;
+
+$join1 = (
+select
+ ps.ps_partkey as ps_partkey,
+ ps.ps_supplycost as ps_supplycost,
+ ps.ps_availqty as ps_availqty,
+ s.s_nationkey as s_nationkey
+from
+ plato.partsupp as ps
+join
+ plato.supplier as s
+on
+ ps.ps_suppkey = s.s_suppkey
+);
+$join2 = (
+select
+ j.ps_partkey as ps_partkey,
+ j.ps_supplycost as ps_supplycost,
+ j.ps_availqty as ps_availqty,
+ j.s_nationkey as s_nationkey
+from
+ $join1 as j
+join
+ plato.nation as n
+on
+ n.n_nationkey = j.s_nationkey
+where
+ n.n_name = 'CANADA'
+);
+$threshold = (
+select
+ sum(ps_supplycost * ps_availqty) * 0.0001000000 as threshold
+from
+ $join2
+);
+$values = (
+select
+ ps_partkey,
+ sum(ps_supplycost * ps_availqty) as value
+from
+ $join2
+group by
+ ps_partkey
+);
+
+select
+ v.ps_partkey as ps_partkey,
+ v.value as value
+from
+ $values as v
+cross join
+ $threshold as t
+where
+ v.value > t.threshold
+order by
+ value desc;
diff --git a/yql/essentials/tests/sql/suites/tpch/q12.sql b/yql/essentials/tests/sql/suites/tpch/q12.sql
new file mode 100644
index 0000000000..d8425b0b4a
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q12.sql
@@ -0,0 +1,45 @@
+
+-- TPC-H/TPC-R Shipping Modes and Order Priority Query (Q12)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$join = (
+ select
+ l.l_shipmode as l_shipmode,
+ o.o_orderpriority as o_orderpriority,
+ l.l_commitdate as l_commitdate,
+ l.l_shipdate as l_shipdate,
+ l.l_receiptdate as l_receiptdate
+ from
+ plato.orders as o
+ join plato.lineitem as l
+ on o.o_orderkey == l.l_orderkey
+);
+
+$border = Date("1994-01-01");
+
+select
+ l_shipmode,
+ sum(case
+ when o_orderpriority = '1-URGENT'
+ or o_orderpriority = '2-HIGH'
+ then 1
+ else 0
+ end) as high_line_count,
+ sum(case
+ when o_orderpriority <> '1-URGENT'
+ and o_orderpriority <> '2-HIGH'
+ then 1
+ else 0
+ end) as low_line_count
+from $join
+where
+ (l_shipmode = 'MAIL' or l_shipmode = 'TRUCK')
+ and l_commitdate < l_receiptdate
+ and l_shipdate < l_commitdate
+ and cast(l_receiptdate as timestamp) >= $border
+ and cast(l_receiptdate as timestamp) < ($border + Interval("P365D"))
+group by
+ l_shipmode
+order by
+ l_shipmode;
diff --git a/yql/essentials/tests/sql/suites/tpch/q13.sql b/yql/essentials/tests/sql/suites/tpch/q13.sql
new file mode 100644
index 0000000000..e94f36a545
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q13.sql
@@ -0,0 +1,33 @@
+
+-- TPC-H/TPC-R Customer Distribution Query (Q13)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$orders = (
+ select
+ o_orderkey,
+ o_custkey
+ from
+ plato.orders
+ where
+ o_comment NOT LIKE "%unusual%requests%"
+);
+select
+ c_count as c_count,
+ count(*) as custdist
+from
+ (
+ select
+ c.c_custkey as c_custkey,
+ count(o.o_orderkey) as c_count
+ from
+ plato.customer as c left outer join $orders as o on
+ c.c_custkey = o.o_custkey
+ group by
+ c.c_custkey
+ ) as c_orders
+group by
+ c_count
+order by
+ custdist desc,
+ c_count desc;
diff --git a/yql/essentials/tests/sql/suites/tpch/q14.sql b/yql/essentials/tests/sql/suites/tpch/q14.sql
new file mode 100644
index 0000000000..99ad7f0c4e
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q14.sql
@@ -0,0 +1,21 @@
+
+-- TPC-H/TPC-R Promotion Effect Query (Q14)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$border = Date("1994-08-01");
+select
+ 100.00 * sum(case
+ when StartsWith(p.p_type, 'PROMO')
+ then l.l_extendedprice * (1 - l.l_discount)
+ else 0
+ end) / sum(l.l_extendedprice * (1 - l.l_discount)) as promo_revenue
+from
+ plato.lineitem as l
+join
+ plato.part as p
+on
+ l.l_partkey = p.p_partkey
+where
+ cast(l.l_shipdate as timestamp) >= $border
+ and cast(l.l_shipdate as timestamp) < ($border + Interval("P31D"));
diff --git a/yql/essentials/tests/sql/suites/tpch/q15.sql b/yql/essentials/tests/sql/suites/tpch/q15.sql
new file mode 100644
index 0000000000..e8a141e83f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q15.sql
@@ -0,0 +1,56 @@
+-- ignore runonopt plan diff
+-- TPC-H/TPC-R Top Supplier Query (Q15)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$border = Date("1997-03-01");
+$revenue0 = (
+ select
+ l_suppkey as supplier_no,
+ sum(l_extendedprice * (1 - l_discount)) as total_revenue,
+ cast(sum(l_extendedprice * (1 - l_discount)) as Uint64) as total_revenue_approx
+ from
+ plato.lineitem
+ where
+ cast(l_shipdate as timestamp) >= $border
+ and cast(l_shipdate as timestamp) < ($border + Interval("P92D"))
+ group by
+ l_suppkey
+);
+$max_revenue = (
+select
+ max(total_revenue_approx) as max_revenue
+from
+ $revenue0
+);
+$join1 = (
+select
+ s.s_suppkey as s_suppkey,
+ s.s_name as s_name,
+ s.s_address as s_address,
+ s.s_phone as s_phone,
+ r.total_revenue as total_revenue,
+ r.total_revenue_approx as total_revenue_approx
+from
+ plato.supplier as s
+join
+ $revenue0 as r
+on
+ s.s_suppkey = r.supplier_no
+);
+
+select
+ j.s_suppkey as s_suppkey,
+ j.s_name as s_name,
+ j.s_address as s_address,
+ j.s_phone as s_phone,
+ j.total_revenue as total_revenue
+from
+ $join1 as j
+join
+ $max_revenue as m
+on
+ j.total_revenue_approx = m.max_revenue
+order by
+ s_suppkey;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q16.sql b/yql/essentials/tests/sql/suites/tpch/q16.sql
new file mode 100644
index 0000000000..153b72797b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q16.sql
@@ -0,0 +1,44 @@
+
+-- TPC-H/TPC-R Parts/Supplier Relationship Query (Q16)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$join = (
+select
+ ps.ps_suppkey as ps_suppkey,
+ ps.ps_partkey as ps_partkey
+from
+ plato.partsupp as ps
+left join
+ plato.supplier as w
+on
+ w.s_suppkey = ps.ps_suppkey
+where not (s_comment like "%Customer%Complaints%")
+);
+
+select
+ p.p_brand as p_brand,
+ p.p_type as p_type,
+ p.p_size as p_size,
+ count(distinct j.ps_suppkey) as supplier_cnt
+from
+ $join as j
+join
+ plato.part as p
+on
+ p.p_partkey = j.ps_partkey
+where
+ p.p_brand <> 'Brand#33'
+ and (not StartsWith(p.p_type, 'PROMO POLISHED'))
+ and (p.p_size = 20 or p.p_size = 27 or p.p_size = 11 or p.p_size = 45 or p.p_size = 40 or p.p_size = 41 or p.p_size = 34 or p.p_size = 36)
+group by
+ p.p_brand,
+ p.p_type,
+ p.p_size
+order by
+ supplier_cnt desc,
+ p_brand,
+ p_type,
+ p_size
+;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q17.sql b/yql/essentials/tests/sql/suites/tpch/q17.sql
new file mode 100644
index 0000000000..c775d585bb
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q17.sql
@@ -0,0 +1,41 @@
+
+-- TPC-H/TPC-R Small-Quantity-Order Revenue Query (Q17)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$threshold = (
+select
+ 0.2 * avg(l_quantity) as threshold,
+ l_partkey
+from
+ plato.lineitem
+group by
+ l_partkey
+);
+
+$join1 = (
+select
+ p.p_partkey as p_partkey,
+ l.l_extendedprice as l_extendedprice,
+ l.l_quantity as l_quantity
+from
+ plato.lineitem as l
+join
+ plato.part as p
+on
+ p.p_partkey = l.l_partkey
+where
+ p.p_brand = 'Brand#35'
+ and p.p_container = 'LG DRUM'
+);
+
+select
+ sum(j.l_extendedprice) / 7.0 as avg_yearly
+from
+ $join1 as j
+join
+ $threshold as t
+on
+ j.p_partkey = t.l_partkey
+where
+ j.l_quantity < t.threshold;
diff --git a/yql/essentials/tests/sql/suites/tpch/q18.sql b/yql/essentials/tests/sql/suites/tpch/q18.sql
new file mode 100644
index 0000000000..dfc0e858ea
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q18.sql
@@ -0,0 +1,53 @@
+
+-- TPC-H/TPC-R Large Volume Customer Query (Q18)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$in = (
+select
+ l_orderkey,
+ sum(l_quantity) as sum_l_quantity
+from
+ plato.lineitem
+group by
+ l_orderkey having
+ sum(l_quantity) > 315
+);
+
+$join1 = (
+select
+ c.c_name as c_name,
+ c.c_custkey as c_custkey,
+ o.o_orderkey as o_orderkey,
+ o.o_orderdate as o_orderdate,
+ o.o_totalprice as o_totalprice
+from
+ plato.customer as c
+join
+ plato.orders as o
+on
+ c.c_custkey = o.o_custkey
+);
+select
+ j.c_name as c_name,
+ j.c_custkey as c_custkey,
+ j.o_orderkey as o_orderkey,
+ j.o_orderdate as o_orderdate,
+ j.o_totalprice as o_totalprice,
+ sum(i.sum_l_quantity) as sum_l_quantity
+from
+ $join1 as j
+join
+ $in as i
+on
+ i.l_orderkey = j.o_orderkey
+group by
+ j.c_name,
+ j.c_custkey,
+ j.o_orderkey,
+ j.o_orderdate,
+ j.o_totalprice
+order by
+ o_totalprice desc,
+ o_orderdate
+limit 100;
diff --git a/yql/essentials/tests/sql/suites/tpch/q19.sql b/yql/essentials/tests/sql/suites/tpch/q19.sql
new file mode 100644
index 0000000000..e9b3a7d7bc
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q19.sql
@@ -0,0 +1,40 @@
+
+-- TPC-H/TPC-R Discounted Revenue Query (Q19)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+select
+ sum(l.l_extendedprice* (1 - l.l_discount)) as revenue
+from
+ plato.lineitem as l
+join
+ plato.part as p
+on
+ p.p_partkey = l.l_partkey
+where
+ (
+ p.p_brand = 'Brand#23'
+ and (p.p_container = 'SM CASE' or p.p_container = 'SM BOX' or p.p_container = 'SM PACK' or p.p_container = 'SM PKG')
+ and l.l_quantity >= 7 and l.l_quantity <= 7 + 10
+ and p.p_size between 1 and 5
+ and (l.l_shipmode = 'AIR' or l.l_shipmode = 'AIR REG')
+ and l.l_shipinstruct = 'DELIVER IN PERSON'
+ )
+ or
+ (
+ p.p_brand = 'Brand#15'
+ and (p.p_container = 'MED BAG' or p.p_container = 'MED BOX' or p.p_container = 'MED PKG' or p.p_container = 'MED PACK')
+ and l.l_quantity >= 17 and l.l_quantity <= 17 + 10
+ and p.p_size between 1 and 10
+ and (l.l_shipmode = 'AIR' or l.l_shipmode = 'AIR REG')
+ and l.l_shipinstruct = 'DELIVER IN PERSON'
+ )
+ or
+ (
+ p.p_brand = 'Brand#44'
+ and (p.p_container = 'LG CASE' or p.p_container = 'LG BOX' or p.p_container = 'LG PACK' or p.p_container = 'LG PKG')
+ and l.l_quantity >= 25 and l.l_quantity <= 25 + 10
+ and p.p_size between 1 and 15
+ and (l.l_shipmode = 'AIR' or l.l_shipmode = 'AIR REG')
+ and l.l_shipinstruct = 'DELIVER IN PERSON'
+ );
diff --git a/yql/essentials/tests/sql/suites/tpch/q2.sql b/yql/essentials/tests/sql/suites/tpch/q2.sql
new file mode 100644
index 0000000000..f8e11a8c5d
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q2.sql
@@ -0,0 +1,68 @@
+
+-- TPC-H/TPC-R Minimum Cost Supplier Query (Q2)
+-- using 1680793381 as a seed to the RNG
+
+$r = (select r_regionkey from
+ plato.region
+where r_name='AMERICA');
+
+$j1 = (select n_name,n_nationkey
+ from plato.nation as n
+ join $r as r on
+ n.n_regionkey = r.r_regionkey);
+
+$j2 = (select s_acctbal,s_name,s_address,s_phone,s_comment,n_name,s_suppkey
+ from plato.supplier as s
+ join $j1 as j on
+ s.s_nationkey = j.n_nationkey
+);
+
+$j3 = (select ps_partkey,ps_supplycost,s_acctbal,s_name,s_address,s_phone,s_comment,n_name
+ from plato.partsupp as ps
+ join $j2 as j on
+ ps.ps_suppkey = j.s_suppkey
+);
+
+$min_ps_supplycost = (select min(ps_supplycost) as min_ps_supplycost,ps_partkey
+ from $j3
+ group by ps_partkey
+);
+
+$p = (select p_partkey,p_mfgr
+ from plato.part
+ where
+ p_size = 10
+ and p_type like '%COPPER'
+);
+
+$j4 = (select s_acctbal,
+ s_name,
+ n_name,
+ p_partkey,
+ p_mfgr,
+ s_address,
+ s_phone,
+ s_comment
+ from $p as p
+ join $j3 as j on p.p_partkey = j.ps_partkey
+ join $min_ps_supplycost as m on p.p_partkey = m.ps_partkey
+ where min_ps_supplycost=ps_supplycost
+);
+
+select
+ s_acctbal,
+ s_name,
+ n_name,
+ p_partkey,
+ p_mfgr,
+ s_address,
+ s_phone,
+ s_comment
+from $j4
+order by
+ s_acctbal desc,
+ n_name,
+ s_name,
+ p_partkey
+limit 100;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q20.sql b/yql/essentials/tests/sql/suites/tpch/q20.sql
new file mode 100644
index 0000000000..3272f866d6
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q20.sql
@@ -0,0 +1,83 @@
+
+-- TPC-H/TPC-R Potential Part Promotion Query (Q20)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$border = Date("1993-01-01");
+$threshold = (
+select
+ 0.5 * sum(l_quantity) as threshold,
+ l_partkey as l_partkey,
+ l_suppkey as l_suppkey
+from
+ plato.lineitem
+where
+ cast(l_shipdate as timestamp) >= $border
+ and cast(l_shipdate as timestamp) < ($border + Interval("P365D"))
+group by
+ l_partkey, l_suppkey
+);
+
+$parts = (
+select
+ p_partkey
+from
+ plato.part
+where
+ StartsWith(p_name, 'maroon')
+);
+
+$join1 = (
+select
+ ps.ps_suppkey as ps_suppkey,
+ ps.ps_availqty as ps_availqty,
+ ps.ps_partkey as ps_partkey
+from
+ plato.partsupp as ps
+join any
+ $parts as p
+on
+ ps.ps_partkey = p.p_partkey
+);
+
+$join2 = (
+select
+ distinct(j.ps_suppkey) as ps_suppkey
+from
+ $join1 as j
+join any
+ $threshold as t
+on
+ j.ps_partkey = t.l_partkey and j.ps_suppkey = t.l_suppkey
+where
+ j.ps_availqty > t.threshold
+);
+
+$join3 = (
+select
+ j.ps_suppkey as ps_suppkey,
+ s.s_name as s_name,
+ s.s_address as s_address,
+ s.s_nationkey as s_nationkey
+from
+ $join2 as j
+join any
+ plato.supplier as s
+on
+ j.ps_suppkey = s.s_suppkey
+);
+
+select
+ j.s_name as s_name,
+ j.s_address as s_address
+from
+ $join3 as j
+join
+ plato.nation as n
+on
+ j.s_nationkey = n.n_nationkey
+where
+ n.n_name = 'VIETNAM'
+order by
+ s_name;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q21.sql b/yql/essentials/tests/sql/suites/tpch/q21.sql
new file mode 100644
index 0000000000..8b116c809c
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q21.sql
@@ -0,0 +1,51 @@
+
+-- TPC-H/TPC-R Suppliers Who Kept Orders Waiting Query (Q21)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$n = select n_nationkey from plato.nation
+where n_name = 'EGYPT';
+
+$s = select s_name, s_suppkey from plato.supplier as supplier
+join $n as nation
+on supplier.s_nationkey = nation.n_nationkey;
+
+$l = select l_suppkey, l_orderkey from plato.lineitem
+where l_receiptdate > l_commitdate;
+
+$j1 = select s_name, l_suppkey, l_orderkey from $l as l1
+join $s as supplier
+on l1.l_suppkey = supplier.s_suppkey;
+
+$j1_1 = select l1.l_orderkey as l_orderkey from $j1 as l1
+join $l as l3
+on l1.l_orderkey = l3.l_orderkey
+where l3.l_suppkey <> l1.l_suppkey;
+
+$j2 = select s_name, l_suppkey, l_orderkey from $j1 as l1
+left only join $j1_1 as l3
+on l1.l_orderkey = l3.l_orderkey;
+
+$j2_1 = select l1.l_orderkey as l_orderkey from $j2 as l1
+join plato.lineitem as l2
+on l1.l_orderkey = l2.l_orderkey
+where l2.l_suppkey <> l1.l_suppkey;
+
+$j3 = select s_name, l1.l_suppkey as l_suppkey, l1.l_orderkey as l_orderkey from $j2 as l1
+left semi join $j2_1 as l2
+on l1.l_orderkey = l2.l_orderkey;
+
+$j4 = select s_name from $j3 as l1
+join plato.orders as orders
+on orders.o_orderkey = l1.l_orderkey
+where o_orderstatus = 'F';
+
+select s_name,
+ count(*) as numwait from $j4
+group by
+ s_name
+order by
+ numwait desc,
+ s_name
+limit 100;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q22.sql b/yql/essentials/tests/sql/suites/tpch/q22.sql
new file mode 100644
index 0000000000..4b12ec51a7
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q22.sql
@@ -0,0 +1,58 @@
+
+-- TPC-H/TPC-R Global Sales Opportunity Query (Q22)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$customers = (
+select
+ c_acctbal,
+ c_custkey,
+ Substring(c_phone, 0u, 2u) as cntrycode
+from
+ plato.customer
+where (Substring(c_phone, 0u, 2u) = '31' or Substring(c_phone, 0u, 2u) = '29' or Substring(c_phone, 0u, 2u) = '30' or Substring(c_phone, 0u, 2u) = '26' or Substring(c_phone, 0u, 2u) = '28' or Substring(c_phone, 0u, 2u) = '25' or Substring(c_phone, 0u, 2u) = '15')
+);
+$avg = (
+select
+ avg(c_acctbal) as a
+from
+ $customers
+where
+ c_acctbal > 0.00
+);
+$join1 = (
+select
+ c.c_acctbal as c_acctbal,
+ c.c_custkey as c_custkey,
+ c.cntrycode as cntrycode
+from
+ $customers as c
+cross join
+ $avg as a
+where
+ c.c_acctbal > a.a
+);
+$join2 = (
+select
+ j.cntrycode as cntrycode,
+ c_custkey,
+ j.c_acctbal as c_acctbal
+from
+ $join1 as j
+left only join
+ plato.orders as o
+on
+ o.o_custkey = j.c_custkey
+);
+
+select
+ cntrycode,
+ count(*) as numcust,
+ sum(c_acctbal) as totacctbal
+from
+ $join2 as custsale
+group by
+ cntrycode
+order by
+ cntrycode;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q3.sql b/yql/essentials/tests/sql/suites/tpch/q3.sql
new file mode 100644
index 0000000000..668cb9441f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q3.sql
@@ -0,0 +1,55 @@
+
+-- TPC-H/TPC-R Shipping Priority Query (Q3)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$join1 = (
+select
+ c.c_mktsegment as c_mktsegment,
+ o.o_orderdate as o_orderdate,
+ o.o_shippriority as o_shippriority,
+ o.o_orderkey as o_orderkey
+from
+ plato.customer as c
+join
+ plato.orders as o
+on
+ c.c_custkey = o.o_custkey
+);
+
+$join2 = (
+select
+ j1.c_mktsegment as c_mktsegment,
+ j1.o_orderdate as o_orderdate,
+ j1.o_shippriority as o_shippriority,
+ l.l_orderkey as l_orderkey,
+ l.l_discount as l_discount,
+ l.l_shipdate as l_shipdate,
+ l.l_extendedprice as l_extendedprice
+from
+ $join1 as j1
+join
+ plato.lineitem as l
+on
+ l.l_orderkey = j1.o_orderkey
+);
+
+select
+ l_orderkey,
+ sum(l_extendedprice * (1 - l_discount)) as revenue,
+ o_orderdate,
+ o_shippriority
+from
+ $join2
+where
+ c_mktsegment = 'MACHINERY'
+ and CAST(o_orderdate AS Timestamp) < Date('1995-03-08')
+ and CAST(l_shipdate AS Timestamp) > Date('1995-03-08')
+group by
+ l_orderkey,
+ o_orderdate,
+ o_shippriority
+order by
+ revenue desc,
+ o_orderdate
+limit 10;
diff --git a/yql/essentials/tests/sql/suites/tpch/q4.sql b/yql/essentials/tests/sql/suites/tpch/q4.sql
new file mode 100644
index 0000000000..9b02c049cd
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q4.sql
@@ -0,0 +1,29 @@
+
+-- TPC-H/TPC-R Order Priority Checking Query (Q4)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$border = Date("1994-03-01");
+
+$join = (select
+ o.o_orderpriority as o_orderpriority,
+ o.o_orderdate as o_orderdate,
+ l.l_commitdate as l_commitdate,
+ l.l_receiptdate as l_receiptdate
+ from
+ plato.orders as o
+ join any plato.lineitem as l
+ on o.o_orderkey = l.l_orderkey);
+
+select
+ o_orderpriority,
+ count(*) as order_count
+from $join
+where
+ CAST(o_orderdate AS Timestamp) >= $border
+ and CAST(o_orderdate AS Timestamp) < DateTime::MakeDate(DateTime::ShiftMonths($border, 3))
+ and l_commitdate < l_receiptdate
+group by
+ o_orderpriority
+order by
+ o_orderpriority;
diff --git a/yql/essentials/tests/sql/suites/tpch/q5.sql b/yql/essentials/tests/sql/suites/tpch/q5.sql
new file mode 100644
index 0000000000..62e7acc7d1
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q5.sql
@@ -0,0 +1,102 @@
+
+-- TPC-H/TPC-R Local Supplier Volume Query (Q5)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$join1 = (
+select
+ o.o_orderkey as o_orderkey,
+ o.o_orderdate as o_orderdate,
+ c.c_nationkey as c_nationkey
+from
+ plato.customer as c
+join
+ plato.orders as o
+on
+ c.c_custkey = o.o_custkey
+);
+
+$join2 = (
+select
+ j.o_orderkey as o_orderkey,
+ j.o_orderdate as o_orderdate,
+ j.c_nationkey as c_nationkey,
+ l.l_extendedprice as l_extendedprice,
+ l.l_discount as l_discount,
+ l.l_suppkey as l_suppkey
+from
+ $join1 as j
+join
+ plato.lineitem as l
+on
+ l.l_orderkey = j.o_orderkey
+);
+
+$join3 = (
+select
+ j.o_orderkey as o_orderkey,
+ j.o_orderdate as o_orderdate,
+ j.c_nationkey as c_nationkey,
+ j.l_extendedprice as l_extendedprice,
+ j.l_discount as l_discount,
+ j.l_suppkey as l_suppkey,
+ s.s_nationkey as s_nationkey
+from
+ $join2 as j
+join
+ plato.supplier as s
+on
+ j.l_suppkey = s.s_suppkey
+);
+$join4 = (
+select
+ j.o_orderkey as o_orderkey,
+ j.o_orderdate as o_orderdate,
+ j.c_nationkey as c_nationkey,
+ j.l_extendedprice as l_extendedprice,
+ j.l_discount as l_discount,
+ j.l_suppkey as l_suppkey,
+ j.s_nationkey as s_nationkey,
+ n.n_regionkey as n_regionkey,
+ n.n_name as n_name
+from
+ $join3 as j
+join
+ plato.nation as n
+on
+ j.s_nationkey = n.n_nationkey
+ and j.c_nationkey = n.n_nationkey
+);
+$join5 = (
+select
+ j.o_orderkey as o_orderkey,
+ j.o_orderdate as o_orderdate,
+ j.c_nationkey as c_nationkey,
+ j.l_extendedprice as l_extendedprice,
+ j.l_discount as l_discount,
+ j.l_suppkey as l_suppkey,
+ j.s_nationkey as s_nationkey,
+ j.n_regionkey as n_regionkey,
+ j.n_name as n_name,
+ r.r_name as r_name
+from
+ $join4 as j
+join
+ plato.region as r
+on
+ j.n_regionkey = r.r_regionkey
+);
+$border = Date("1995-01-01");
+select
+ n_name,
+ sum(l_extendedprice * (1 - l_discount)) as revenue
+from
+ $join5
+where
+ r_name = 'AFRICA'
+ and CAST(o_orderdate AS Timestamp) >= $border
+ and CAST(o_orderdate AS Timestamp) < ($border + Interval("P365D"))
+group by
+ n_name
+order by
+ revenue desc;
diff --git a/yql/essentials/tests/sql/suites/tpch/q6.sql b/yql/essentials/tests/sql/suites/tpch/q6.sql
new file mode 100644
index 0000000000..c96b8ac098
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q6.sql
@@ -0,0 +1,16 @@
+
+-- TPC-H/TPC-R Forecasting Revenue Change Query (Q6)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$border = Date("1995-01-01");
+
+select
+ sum(l_extendedprice * l_discount) as revenue
+from
+ plato.lineitem
+where
+ CAST(l_shipdate AS Timestamp) >= $border
+ and cast(l_shipdate as Timestamp) < ($border + Interval("P365D"))
+ and l_discount between 0.07 - 0.01 and 0.07 + 0.01
+ and l_quantity < 25;
diff --git a/yql/essentials/tests/sql/suites/tpch/q7.sql b/yql/essentials/tests/sql/suites/tpch/q7.sql
new file mode 100644
index 0000000000..6ff0eec4db
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q7.sql
@@ -0,0 +1,87 @@
+
+-- TPC-H/TPC-R Volume Shipping Query (Q7)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$n = select n_name, n_nationkey from plato.nation as n
+ where n_name = 'PERU' or n_name = 'MOZAMBIQUE';
+
+$l = select
+ l_orderkey, l_suppkey,
+ DateTime::GetYear(cast(l_shipdate as timestamp)) as l_year,
+ l_extendedprice * (1 - l_discount) as volume
+from
+ plato.lineitem as l
+where
+ cast(cast(l.l_shipdate as Timestamp) as Date)
+ between Date('1995-01-01') and Date('1996-12-31');
+
+$j1 = select
+ n_name as supp_nation,
+ s_suppkey
+from
+ plato.supplier as supplier
+join
+ $n as n1
+on
+ supplier.s_nationkey = n1.n_nationkey;
+
+$j2 = select
+ n_name as cust_nation,
+ c_custkey
+from
+ plato.customer as customer
+join
+ $n as n2
+on
+ customer.c_nationkey = n2.n_nationkey;
+
+$j3 = select
+ cust_nation, o_orderkey
+from
+ plato.orders as orders
+join
+ $j2 as customer
+on
+ orders.o_custkey = customer.c_custkey;
+
+$j4 = select
+ cust_nation,
+ l_orderkey, l_suppkey,
+ l_year,
+ volume
+from
+ $l as lineitem
+join
+ $j3 as orders
+on
+ lineitem.l_orderkey = orders.o_orderkey;
+
+$j5 = select
+ supp_nation, cust_nation,
+ l_year, volume
+from
+ $j4 as lineitem
+join
+ $j1 as supplier
+on
+ lineitem.l_suppkey = supplier.s_suppkey
+where (supp_nation = 'PERU' and cust_nation = 'MOZAMBIQUE')
+ OR (supp_nation = 'MOZAMBIQUE' and cust_nation = 'PERU');
+
+select
+ supp_nation,
+ cust_nation,
+ l_year,
+ sum(volume) as revenue
+from
+ $j5 as shipping
+group by
+ supp_nation,
+ cust_nation,
+ l_year
+order by
+ supp_nation,
+ cust_nation,
+ l_year;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/q8.sql b/yql/essentials/tests/sql/suites/tpch/q8.sql
new file mode 100644
index 0000000000..855813a06e
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q8.sql
@@ -0,0 +1,110 @@
+
+-- TPC-H/TPC-R National Market Share Query (Q8)
+-- TPC TPC-H Parameter Substitution (Version 2.17.2 build 0)
+-- using 1680793381 as a seed to the RNG
+
+$join1 = (
+select
+ l.l_extendedprice * (1 - l.l_discount) as volume,
+ l.l_suppkey as l_suppkey,
+ l.l_orderkey as l_orderkey
+from
+ plato.part as p
+join
+ plato.lineitem as l
+on
+ p.p_partkey = l.l_partkey
+where
+ p.p_type = 'ECONOMY PLATED COPPER'
+);
+$join2 = (
+select
+ j.volume as volume,
+ j.l_orderkey as l_orderkey,
+ s.s_nationkey as s_nationkey
+from
+ $join1 as j
+join
+ plato.supplier as s
+on
+ s.s_suppkey = j.l_suppkey
+);
+$join3 = (
+select
+ j.volume as volume,
+ j.l_orderkey as l_orderkey,
+ n.n_name as nation
+from
+ $join2 as j
+join
+ plato.nation as n
+on
+ n.n_nationkey = j.s_nationkey
+);
+$join4 = (
+select
+ j.volume as volume,
+ j.nation as nation,
+ DateTime::GetYear(cast(o.o_orderdate as Timestamp)) as o_year,
+ o.o_custkey as o_custkey
+from
+ $join3 as j
+join
+ plato.orders as o
+on
+ o.o_orderkey = j.l_orderkey
+where cast(cast(o_orderdate as Timestamp) as Date) between Date('1995-01-01') and Date('1996-12-31')
+);
+$join5 = (
+select
+ j.volume as volume,
+ j.nation as nation,
+ j.o_year as o_year,
+ c.c_nationkey as c_nationkey
+from
+ $join4 as j
+join
+ plato.customer as c
+on
+ c.c_custkey = j.o_custkey
+);
+$join6 = (
+select
+ j.volume as volume,
+ j.nation as nation,
+ j.o_year as o_year,
+ n.n_regionkey as n_regionkey
+from
+ $join5 as j
+join
+ plato.nation as n
+on
+ n.n_nationkey = j.c_nationkey
+);
+$join7 = (
+select
+ j.volume as volume,
+ j.nation as nation,
+ j.o_year as o_year
+from
+ $join6 as j
+join
+ plato.region as r
+on
+ r.r_regionkey = j.n_regionkey
+where
+ r.r_name = 'AFRICA'
+);
+
+select
+ o_year,
+ sum(case
+ when nation = 'MOZAMBIQUE' then volume
+ else 0
+ end) / sum(volume) as mkt_share
+from
+ $join7 as all_nations
+group by
+ o_year
+order by
+ o_year;
diff --git a/yql/essentials/tests/sql/suites/tpch/q9.sql b/yql/essentials/tests/sql/suites/tpch/q9.sql
new file mode 100644
index 0000000000..f6c9f914ed
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/q9.sql
@@ -0,0 +1,59 @@
+
+-- TPC-H/TPC-R Product Type Profit Measure Query (Q9)
+-- Approved February 1998
+-- using 1680793381 as a seed to the RNG
+
+$p = (select p_partkey, p_name
+from
+ plato.part
+where FIND(p_name, 'rose') IS NOT NULL);
+
+$j1 = (select ps_partkey, ps_suppkey, ps_supplycost
+from
+ plato.partsupp as ps
+join $p as p
+on ps.ps_partkey = p.p_partkey);
+
+$j2 = (select l_suppkey, l_partkey, l_orderkey, l_extendedprice, l_discount, ps_supplycost, l_quantity
+from
+ plato.lineitem as l
+join $j1 as j
+on l.l_suppkey = j.ps_suppkey AND l.l_partkey = j.ps_partkey);
+
+$j3 = (select l_orderkey, s_nationkey, l_extendedprice, l_discount, ps_supplycost, l_quantity
+from
+ plato.supplier as s
+join $j2 as j
+on j.l_suppkey = s.s_suppkey);
+
+$j4 = (select o_orderdate, l_extendedprice, l_discount, ps_supplycost, l_quantity, s_nationkey
+from
+ plato.orders as o
+join $j3 as j
+on o.o_orderkey = j.l_orderkey);
+
+$j5 = (select n_name, o_orderdate, l_extendedprice, l_discount, ps_supplycost, l_quantity
+from
+ plato.nation as n
+join $j4 as j
+on j.s_nationkey = n.n_nationkey
+);
+
+$profit = (select
+ n_name as nation,
+ DateTime::GetYear(cast(o_orderdate as timestamp)) as o_year,
+ l_extendedprice * (1 - l_discount) - ps_supplycost * l_quantity as amount
+from $j5);
+
+select
+ nation,
+ o_year,
+ sum(amount) as sum_profit
+from $profit
+group by
+ nation,
+ o_year
+order by
+ nation,
+ o_year desc;
+
diff --git a/yql/essentials/tests/sql/suites/tpch/region.txt b/yql/essentials/tests/sql/suites/tpch/region.txt
new file mode 100644
index 0000000000..14ddd4ea7b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/region.txt
@@ -0,0 +1 @@
+{"r_regionkey"=0;"r_comment"="lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to ";"r_name"="AFRICA";};
diff --git a/yql/essentials/tests/sql/suites/tpch/region.txt.attr b/yql/essentials/tests/sql/suites/tpch/region.txt.attr
new file mode 100644
index 0000000000..daadd6b05b
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/region.txt.attr
@@ -0,0 +1,26 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "r_regionkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "r_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "r_name";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ ];
+}
diff --git a/yql/essentials/tests/sql/suites/tpch/supplier.txt b/yql/essentials/tests/sql/suites/tpch/supplier.txt
new file mode 100644
index 0000000000..52c12d3c7f
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/supplier.txt
@@ -0,0 +1 @@
+{"s_suppkey"=1;"s_comment"="each slyly above the careful";"s_address"=" N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ";"s_acctbal"=5755.94;"s_nationkey"=17;"s_name"="Supplier#000000001";"s_phone"="27-918-335-1736";};
diff --git a/yql/essentials/tests/sql/suites/tpch/supplier.txt.attr b/yql/essentials/tests/sql/suites/tpch/supplier.txt.attr
new file mode 100644
index 0000000000..cc250b2226
--- /dev/null
+++ b/yql/essentials/tests/sql/suites/tpch/supplier.txt.attr
@@ -0,0 +1,50 @@
+{
+ "schema" = <
+ "strict" = %true;
+ "unique_keys" = %false;
+ > [
+ {
+ "name" = "s_suppkey";
+ "required" = %true;
+ "sort_order" = "ascending";
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "s_comment";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "s_address";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "s_acctbal";
+ "required" = %true;
+ "type" = "double";
+ "type_v3" = "double";
+ };
+ {
+ "name" = "s_nationkey";
+ "required" = %true;
+ "type" = "int32";
+ "type_v3" = "int32";
+ };
+ {
+ "name" = "s_name";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ {
+ "name" = "s_phone";
+ "required" = %true;
+ "type" = "string";
+ "type_v3" = "string";
+ };
+ ];
+}