Skip to content

Commit 399c9f6

Browse files
committed
Add a test with TPC-H queries
1 parent 6b04c81 commit 399c9f6

File tree

2 files changed

+313
-0
lines changed

2 files changed

+313
-0
lines changed

tests/queries/0_stateless/03447_analyzer_correlated_subqueries_tpc_h.reference

Whitespace-only changes.
Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
CREATE TABLE nation (
2+
n_nationkey Int32,
3+
n_name String,
4+
n_regionkey Int32,
5+
n_comment String)
6+
ORDER BY (n_nationkey);
7+
8+
CREATE TABLE region (
9+
r_regionkey Int32,
10+
r_name String,
11+
r_comment String)
12+
ORDER BY (r_regionkey);
13+
14+
CREATE TABLE part (
15+
p_partkey Int32,
16+
p_name String,
17+
p_mfgr String,
18+
p_brand String,
19+
p_type String,
20+
p_size Int32,
21+
p_container String,
22+
p_retailprice Decimal(15,2),
23+
p_comment String)
24+
ORDER BY (p_partkey);
25+
26+
CREATE TABLE supplier (
27+
s_suppkey Int32,
28+
s_name String,
29+
s_address String,
30+
s_nationkey Int32,
31+
s_phone String,
32+
s_acctbal Decimal(15,2),
33+
s_comment String)
34+
ORDER BY (s_suppkey);
35+
36+
CREATE TABLE partsupp (
37+
ps_partkey Int32,
38+
ps_suppkey Int32,
39+
ps_availqty Int32,
40+
ps_supplycost Decimal(15,2),
41+
ps_comment String)
42+
ORDER BY (ps_partkey, ps_suppkey);
43+
44+
CREATE TABLE customer (
45+
c_custkey Int32,
46+
c_name String,
47+
c_address String,
48+
c_nationkey Int32,
49+
c_phone String,
50+
c_acctbal Decimal(15,2),
51+
c_mktsegment String,
52+
c_comment String)
53+
ORDER BY (c_custkey);
54+
55+
CREATE TABLE orders (
56+
o_orderkey Int32,
57+
o_custkey Int32,
58+
o_orderstatus String,
59+
o_totalprice Decimal(15,2),
60+
o_orderdate Date,
61+
o_orderpriority String,
62+
o_clerk String,
63+
o_shippriority Int32,
64+
o_comment String)
65+
ORDER BY (o_orderkey);
66+
-- The following is an alternative order key which is not compliant with the official TPC-H rules but recommended by sec. 4.5 in
67+
-- "Quantifying TPC-H Choke Points and Their Optimizations":
68+
-- ORDER BY (o_orderdate, o_orderkey);
69+
70+
CREATE TABLE lineitem (
71+
l_orderkey Int32,
72+
l_partkey Int32,
73+
l_suppkey Int32,
74+
l_linenumber Int32,
75+
l_quantity Decimal(15,2),
76+
l_extendedprice Decimal(15,2),
77+
l_discount Decimal(15,2),
78+
l_tax Decimal(15,2),
79+
l_returnflag String,
80+
l_linestatus String,
81+
l_shipdate Date,
82+
l_commitdate Date,
83+
l_receiptdate Date,
84+
l_shipinstruct String,
85+
l_shipmode String,
86+
l_comment String)
87+
ORDER BY (l_orderkey, l_linenumber);
88+
-- The following is an alternative order key which is not compliant with the official TPC-H rules but recommended by sec. 4.5 in
89+
-- "Quantifying TPC-H Choke Points and Their Optimizations":
90+
-- ORDER BY (l_shipdate, l_orderkey, l_linenumber);
91+
92+
INSERT INTO nation SELECT * FROM generateRandom() LIMIT 1;
93+
INSERT INTO region SELECT * FROM generateRandom() LIMIT 1;
94+
INSERT INTO part SELECT * FROM generateRandom() LIMIT 1;
95+
INSERT INTO supplier SELECT * FROM generateRandom() LIMIT 1;
96+
INSERT INTO partsupp SELECT * FROM generateRandom() LIMIT 1;
97+
INSERT INTO customer SELECT * FROM generateRandom() LIMIT 1;
98+
INSERT INTO orders SELECT * FROM generateRandom() LIMIT 1;
99+
INSERT INTO lineitem SELECT * FROM generateRandom() LIMIT 1;
100+
101+
set enable_analyzer = 1;
102+
set allow_experimental_correlated_subqueries = 1;
103+
104+
-- Q2
105+
SELECT
106+
s_acctbal,
107+
s_name,
108+
n_name,
109+
p_partkey,
110+
p_mfgr,
111+
s_address,
112+
s_phone,
113+
s_comment
114+
FROM
115+
part,
116+
supplier,
117+
partsupp,
118+
nation,
119+
region
120+
WHERE
121+
p_partkey = ps_partkey
122+
AND s_suppkey = ps_suppkey
123+
AND p_size = 15
124+
AND p_type LIKE '%BRASS'
125+
AND s_nationkey = n_nationkey
126+
AND n_regionkey = r_regionkey
127+
AND r_name = 'EUROPE'
128+
AND ps_supplycost = (
129+
SELECT
130+
min(ps_supplycost)
131+
FROM
132+
partsupp,
133+
supplier,
134+
nation,
135+
region
136+
WHERE
137+
p_partkey = ps_partkey
138+
AND s_suppkey = ps_suppkey
139+
AND s_nationkey = n_nationkey
140+
AND n_regionkey = r_regionkey
141+
AND r_name = 'EUROPE'
142+
)
143+
ORDER BY
144+
s_acctbal DESC,
145+
n_name,
146+
s_name,
147+
p_partkey
148+
FORMAT Null;
149+
150+
-- Q4
151+
SELECT
152+
o_orderpriority,
153+
count(*) AS order_count
154+
FROM
155+
orders
156+
WHERE
157+
o_orderdate >= DATE '1993-07-01'
158+
AND o_orderdate < DATE '1993-07-01' + INTERVAL '3' MONTH
159+
AND EXISTS (
160+
SELECT
161+
*
162+
FROM
163+
lineitem
164+
WHERE
165+
l_orderkey = o_orderkey
166+
AND l_commitdate < l_receiptdate
167+
)
168+
GROUP BY
169+
o_orderpriority
170+
ORDER BY
171+
o_orderpriority
172+
FORMAT Null;
173+
174+
-- Q17
175+
SELECT
176+
sum(l_extendedprice) / 7.0 AS avg_yearly
177+
FROM
178+
lineitem,
179+
part
180+
WHERE
181+
p_partkey = l_partkey
182+
AND p_brand = 'Brand#23'
183+
AND p_container = 'MED BOX'
184+
AND l_quantity < (
185+
SELECT
186+
0.2 * avg(l_quantity)
187+
FROM
188+
lineitem
189+
WHERE
190+
l_partkey = p_partkey
191+
)
192+
FORMAT Null;
193+
194+
-- Q20
195+
SELECT
196+
s_name,
197+
s_address
198+
FROM
199+
supplier,
200+
nation
201+
WHERE
202+
s_suppkey in (
203+
SELECT
204+
ps_suppkey
205+
FROM
206+
partsupp
207+
WHERE
208+
ps_partkey in (
209+
SELECT
210+
p_partkey
211+
FROM
212+
part
213+
WHERE
214+
p_name LIKE 'forest%'
215+
)
216+
AND ps_availqty > (
217+
SELECT
218+
0.5 * sum(l_quantity)
219+
FROM
220+
lineitem
221+
WHERE
222+
l_partkey = ps_partkey
223+
AND l_suppkey = ps_suppkey
224+
AND l_shipdate >= DATE '1994-01-01'
225+
AND l_shipdate < DATE '1994-01-01' + INTERVAL '1' year
226+
)
227+
)
228+
AND s_nationkey = n_nationkey
229+
AND n_name = 'CANADA'
230+
ORDER BY
231+
s_name
232+
FORMAT Null;
233+
234+
-- Q21
235+
SELECT
236+
s_name,
237+
count(*) AS numwait
238+
FROM
239+
supplier,
240+
lineitem l1,
241+
orders,
242+
nation
243+
WHERE
244+
s_suppkey = l1.l_suppkey
245+
AND o_orderkey = l1.l_orderkey
246+
AND o_orderstatus = 'F'
247+
AND l1.l_receiptdate > l1.l_commitdate
248+
AND EXISTS (
249+
SELECT
250+
*
251+
FROM
252+
lineitem l2
253+
WHERE
254+
l2.l_orderkey = l1.l_orderkey
255+
AND l2.l_suppkey <> l1.l_suppkey
256+
)
257+
AND NOT EXISTS (
258+
SELECT
259+
*
260+
FROM
261+
lineitem l3
262+
WHERE
263+
l3.l_orderkey = l1.l_orderkey
264+
AND l3.l_suppkey <> l1.l_suppkey
265+
AND l3.l_receiptdate > l3.l_commitdate
266+
)
267+
AND s_nationkey = n_nationkey
268+
AND n_name = 'SAUDI ARABIA'
269+
GROUP BY
270+
s_name
271+
ORDER BY
272+
numwait DESC,
273+
s_name
274+
FORMAT Null;
275+
276+
-- Q22
277+
SELECT
278+
cntrycode,
279+
count(*) AS numcust,
280+
sum(c_acctbal) AS totacctbal
281+
FROM (
282+
SELECT
283+
substring(c_phone FROM 1 for 2) AS cntrycode,
284+
c_acctbal
285+
FROM
286+
customer
287+
WHERE
288+
substring(c_phone FROM 1 for 2) in
289+
('13', '31', '23', '29', '30', '18', '17')
290+
AND c_acctbal > (
291+
SELECT
292+
avg(c_acctbal)
293+
FROM
294+
customer
295+
WHERE
296+
c_acctbal > 0.00
297+
AND substring(c_phone FROM 1 for 2) in
298+
('13', '31', '23', '29', '30', '18', '17')
299+
)
300+
AND NOT EXISTS (
301+
SELECT
302+
*
303+
FROM
304+
orders
305+
WHERE
306+
o_custkey = c_custkey
307+
)
308+
) AS custsale
309+
GROUP BY
310+
cntrycode
311+
ORDER BY
312+
cntrycode
313+
FORMAT Null;

0 commit comments

Comments
 (0)