mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
Add test cases to cover TPC-H Q8.
FossilOrigin-Name: eb5cef8351d12c0f8550dac96ee7a6e495975b5a
This commit is contained in:
11
manifest
11
manifest
@ -1,5 +1,5 @@
|
|||||||
C Deterministically\sinitialize\sthe\sPRNG\sused\sas\sa\stie-breaker\sin\sthe\sANALYZE\ncommand,\sso\sthat\sthe\sanalysis\sis\salways\sthe\ssame\sgiven\sthe\ssame\sdatabase.\nThis\ssimplifies\stesting.
|
C Add\stest\scases\sto\scover\sTPC-H\sQ8.
|
||||||
D 2013-09-10T01:41:25.676
|
D 2013-09-11T14:57:11.714
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
|
F Makefile.in 5e41da95d92656a5004b03d3576e8b226858a28e
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@ -964,6 +964,7 @@ F test/tkt3992.test f3e7d548ac26f763b47bc0f750da3d03c81071da
|
|||||||
F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
|
F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
|
||||||
F test/tkt4018.test 7c2c9ba4df489c676a0a7a0e809a1fb9b2185bd1
|
F test/tkt4018.test 7c2c9ba4df489c676a0a7a0e809a1fb9b2185bd1
|
||||||
F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
|
F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
|
||||||
|
F test/tpch01.test 8f4ac52f62f3e9f6bce0889105aecdf0275e331b
|
||||||
F test/trace.test 4b36a41a3e9c7842151af6da5998f5080cdad9e5
|
F test/trace.test 4b36a41a3e9c7842151af6da5998f5080cdad9e5
|
||||||
F test/trace2.test e7a988fdd982cdec62f1f1f34b0360e6476d01a0
|
F test/trace2.test e7a988fdd982cdec62f1f1f34b0360e6476d01a0
|
||||||
F test/trans.test 6e1b4c6a42dba31bd65f8fa5e61a2708e08ddde6
|
F test/trans.test 6e1b4c6a42dba31bd65f8fa5e61a2708e08ddde6
|
||||||
@ -1111,7 +1112,7 @@ F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
|||||||
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
|
||||||
F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae
|
F tool/wherecosttest.c f407dc4c79786982a475261866a161cd007947ae
|
||||||
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
|
||||||
P d6e361d7fb8013d616af91ef2c10038c97d1be5f
|
P 48ed8b565b84c8fa7898c2f9817c01f7e9c9182e
|
||||||
R f0dc49c77588220f9d25d9d712edfe4a
|
R b9522deba37561644e51654b6b510026
|
||||||
U drh
|
U drh
|
||||||
Z e68c71d629e67be96bb05aa541d1ef71
|
Z 8b5488a345e69fd6a7996d8b2149a33e
|
||||||
|
@ -1 +1 @@
|
|||||||
48ed8b565b84c8fa7898c2f9817c01f7e9c9182e
|
eb5cef8351d12c0f8550dac96ee7a6e495975b5a
|
187
test/tpch01.test
Normal file
187
test/tpch01.test
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
# 2013-09-05
|
||||||
|
#
|
||||||
|
# The author disclaims copyright to this source code. In place of
|
||||||
|
# a legal notice, here is a blessing:
|
||||||
|
#
|
||||||
|
# May you do good and not evil.
|
||||||
|
# May you find forgiveness for yourself and forgive others.
|
||||||
|
# May you share freely, never taking more than you give.
|
||||||
|
#
|
||||||
|
#***********************************************************************
|
||||||
|
#
|
||||||
|
# TPC-H test queries.
|
||||||
|
#
|
||||||
|
|
||||||
|
set testdir [file dirname $argv0]
|
||||||
|
source $testdir/tester.tcl
|
||||||
|
set testprefix tpch01
|
||||||
|
|
||||||
|
do_execsql_test tpch01-1.0 {
|
||||||
|
CREATE TABLE NATION ( N_NATIONKEY INTEGER NOT NULL,
|
||||||
|
N_NAME CHAR(25) NOT NULL,
|
||||||
|
N_REGIONKEY INTEGER NOT NULL,
|
||||||
|
N_COMMENT VARCHAR(152));
|
||||||
|
CREATE TABLE REGION ( R_REGIONKEY INTEGER NOT NULL,
|
||||||
|
R_NAME CHAR(25) NOT NULL,
|
||||||
|
R_COMMENT VARCHAR(152));
|
||||||
|
CREATE TABLE PART ( P_PARTKEY INTEGER NOT NULL,
|
||||||
|
P_NAME VARCHAR(55) NOT NULL,
|
||||||
|
P_MFGR CHAR(25) NOT NULL,
|
||||||
|
P_BRAND CHAR(10) NOT NULL,
|
||||||
|
P_TYPE VARCHAR(25) NOT NULL,
|
||||||
|
P_SIZE INTEGER NOT NULL,
|
||||||
|
P_CONTAINER CHAR(10) NOT NULL,
|
||||||
|
P_RETAILPRICE DECIMAL(15,2) NOT NULL,
|
||||||
|
P_COMMENT VARCHAR(23) NOT NULL );
|
||||||
|
CREATE TABLE SUPPLIER ( S_SUPPKEY INTEGER NOT NULL,
|
||||||
|
S_NAME CHAR(25) NOT NULL,
|
||||||
|
S_ADDRESS VARCHAR(40) NOT NULL,
|
||||||
|
S_NATIONKEY INTEGER NOT NULL,
|
||||||
|
S_PHONE CHAR(15) NOT NULL,
|
||||||
|
S_ACCTBAL DECIMAL(15,2) NOT NULL,
|
||||||
|
S_COMMENT VARCHAR(101) NOT NULL);
|
||||||
|
CREATE TABLE PARTSUPP ( PS_PARTKEY INTEGER NOT NULL,
|
||||||
|
PS_SUPPKEY INTEGER NOT NULL,
|
||||||
|
PS_AVAILQTY INTEGER NOT NULL,
|
||||||
|
PS_SUPPLYCOST DECIMAL(15,2) NOT NULL,
|
||||||
|
PS_COMMENT VARCHAR(199) NOT NULL );
|
||||||
|
CREATE TABLE CUSTOMER ( C_CUSTKEY INTEGER NOT NULL,
|
||||||
|
C_NAME VARCHAR(25) NOT NULL,
|
||||||
|
C_ADDRESS VARCHAR(40) NOT NULL,
|
||||||
|
C_NATIONKEY INTEGER NOT NULL,
|
||||||
|
C_PHONE CHAR(15) NOT NULL,
|
||||||
|
C_ACCTBAL DECIMAL(15,2) NOT NULL,
|
||||||
|
C_MKTSEGMENT CHAR(10) NOT NULL,
|
||||||
|
C_COMMENT VARCHAR(117) NOT NULL);
|
||||||
|
CREATE TABLE ORDERS ( O_ORDERKEY INTEGER NOT NULL,
|
||||||
|
O_CUSTKEY INTEGER NOT NULL,
|
||||||
|
O_ORDERSTATUS CHAR(1) NOT NULL,
|
||||||
|
O_TOTALPRICE DECIMAL(15,2) NOT NULL,
|
||||||
|
O_ORDERDATE DATE NOT NULL,
|
||||||
|
O_ORDERPRIORITY CHAR(15) NOT NULL,
|
||||||
|
O_CLERK CHAR(15) NOT NULL,
|
||||||
|
O_SHIPPRIORITY INTEGER NOT NULL,
|
||||||
|
O_COMMENT VARCHAR(79) NOT NULL);
|
||||||
|
CREATE TABLE LINEITEM ( L_ORDERKEY INTEGER NOT NULL,
|
||||||
|
L_PARTKEY INTEGER NOT NULL,
|
||||||
|
L_SUPPKEY INTEGER NOT NULL,
|
||||||
|
L_LINENUMBER INTEGER NOT NULL,
|
||||||
|
L_QUANTITY DECIMAL(15,2) NOT NULL,
|
||||||
|
L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
|
||||||
|
L_DISCOUNT DECIMAL(15,2) NOT NULL,
|
||||||
|
L_TAX DECIMAL(15,2) NOT NULL,
|
||||||
|
L_RETURNFLAG CHAR(1) NOT NULL,
|
||||||
|
L_LINESTATUS CHAR(1) NOT NULL,
|
||||||
|
L_SHIPDATE DATE NOT NULL,
|
||||||
|
L_COMMITDATE DATE NOT NULL,
|
||||||
|
L_RECEIPTDATE DATE NOT NULL,
|
||||||
|
L_SHIPINSTRUCT CHAR(25) NOT NULL,
|
||||||
|
L_SHIPMODE CHAR(10) NOT NULL,
|
||||||
|
L_COMMENT VARCHAR(44) NOT NULL);
|
||||||
|
CREATE INDEX npki on nation(N_NATIONKEY);
|
||||||
|
CREATE INDEX rpki on region(R_REGIONKEY);
|
||||||
|
CREATE INDEX ppki on part(P_PARTKEY);
|
||||||
|
CREATE INDEX spki on supplier(S_SUPPKEY);
|
||||||
|
CREATE INDEX pspki on partsupp(PS_PARTKEY, PS_SUPPKEY);
|
||||||
|
CREATE INDEX cpki on customer(C_CUSTKEY);
|
||||||
|
CREATE INDEX opki on orders(O_ORDERKEY);
|
||||||
|
CREATE INDEX lpki on lineitem(L_ORDERKEY, L_LINENUMBER);
|
||||||
|
CREATE INDEX nrki on nation(n_regionkey);
|
||||||
|
CREATE INDEX snki on supplier(s_nationkey);
|
||||||
|
CREATE INDEX cnki on customer(c_nationkey);
|
||||||
|
CREATE INDEX ocki on orders(O_CUSTKEY);
|
||||||
|
CREATE INDEX odi on orders(O_ORDERDATE);
|
||||||
|
CREATE INDEX lpki2 on lineitem(L_PARTKEY);
|
||||||
|
CREATE INDEX lski on lineitem(L_SUPPKEY);
|
||||||
|
CREATE INDEX lsdi on lineitem(L_SHIPDATE);
|
||||||
|
CREATE INDEX lcdi on lineitem(L_COMMITDATE);
|
||||||
|
CREATE INDEX lrdi on lineitem(L_RECEIPTDATE);
|
||||||
|
CREATE INDEX bootleg_nni on nation(N_NAME);
|
||||||
|
CREATE INDEX bootleg_psi on part(p_size);
|
||||||
|
CREATE INDEX bootleg_pti on part(p_type);
|
||||||
|
ANALYZE sqlite_master;
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('LINEITEM','lrdi','600572 236');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('LINEITEM','lcdi','600572 244');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('LINEITEM','lsdi','600572 238');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('LINEITEM','lski','600572 601');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('LINEITEM','lpki2','600572 31');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('LINEITEM','lpki','600572 5 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('ORDERS','odi','150000 63');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('ORDERS','ocki','150000 15');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('ORDERS','opki','150000 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('CUSTOMER','cnki','15000 600');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('CUSTOMER','cpki','15000 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('PARTSUPP','pspki','80000 4 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('SUPPLIER','snki','1000 40');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('SUPPLIER','spki','1000 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('PART','bootleg_pti','20000 134');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('PART','bootleg_psi','20000 400');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('PART','ppki','20000 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('REGION','rpki','5 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('NATION','bootleg_nni','25 1');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('NATION','nrki','25 5');
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('NATION','npki','25 1');
|
||||||
|
ANALYZE sqlite_master;
|
||||||
|
} {}
|
||||||
|
|
||||||
|
do_test tpch01-1.1 {
|
||||||
|
unset -nocomplain ::eqpres
|
||||||
|
set ::eqpres [db eval {EXPLAIN QUERY PLAN
|
||||||
|
select
|
||||||
|
o_year,
|
||||||
|
sum(case
|
||||||
|
when nation = 'EGYPT' then volume
|
||||||
|
else 0
|
||||||
|
end) / sum(volume) as mkt_share
|
||||||
|
from
|
||||||
|
(
|
||||||
|
select
|
||||||
|
strftime('%Y', o_orderdate) as o_year,
|
||||||
|
l_extendedprice * (1 - l_discount) as volume,
|
||||||
|
n2.n_name as nation
|
||||||
|
from
|
||||||
|
part,
|
||||||
|
supplier,
|
||||||
|
lineitem,
|
||||||
|
orders,
|
||||||
|
customer,
|
||||||
|
nation n1,
|
||||||
|
nation n2,
|
||||||
|
region
|
||||||
|
where
|
||||||
|
p_partkey = l_partkey
|
||||||
|
and s_suppkey = l_suppkey
|
||||||
|
and l_orderkey = o_orderkey
|
||||||
|
and o_custkey = c_custkey
|
||||||
|
and c_nationkey = n1.n_nationkey
|
||||||
|
and n1.n_regionkey = r_regionkey
|
||||||
|
and r_name = 'MIDDLE EAST'
|
||||||
|
and s_nationkey = n2.n_nationkey
|
||||||
|
and o_orderdate between '1995-01-01' and '1996-12-31'
|
||||||
|
and p_type = 'LARGE PLATED STEEL'
|
||||||
|
) as all_nations
|
||||||
|
group by
|
||||||
|
o_year
|
||||||
|
order by
|
||||||
|
o_year;}]
|
||||||
|
set ::eqpres
|
||||||
|
} {/0 0 0 {SEARCH TABLE part USING INDEX bootleg_pti .P_TYPE=..} 0 1 2 {SEARCH TABLE lineitem USING INDEX lpki2 .L_PARTKEY=..}.*/}
|
||||||
|
do_test tpch01-1.1b {
|
||||||
|
set ::eqpres
|
||||||
|
} {/.* customer .* nation AS n1 .* nation AS n2 .*/}
|
||||||
|
|
||||||
|
do_eqp_test tpch01-1.2 {
|
||||||
|
select
|
||||||
|
c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) as revenue,
|
||||||
|
c_acctbal, n_name, c_address, c_phone, c_comment
|
||||||
|
from
|
||||||
|
customer, orders, lineitem, nation
|
||||||
|
where
|
||||||
|
c_custkey = o_custkey and l_orderkey = o_orderkey
|
||||||
|
and o_orderdate >= '1994-08-01' and o_orderdate < date('1994-08-01', '+3 month')
|
||||||
|
and l_returnflag = 'R' and c_nationkey = n_nationkey
|
||||||
|
group by
|
||||||
|
c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment
|
||||||
|
order by
|
||||||
|
revenue desc;
|
||||||
|
} {0 0 1 {SEARCH TABLE orders USING INDEX odi (O_ORDERDATE>? AND O_ORDERDATE<?)} 0 1 0 {SEARCH TABLE customer USING INDEX cpki (C_CUSTKEY=?)} 0 2 3 {SEARCH TABLE nation USING INDEX npki (N_NATIONKEY=?)} 0 3 2 {SEARCH TABLE lineitem USING INDEX lpki (L_ORDERKEY=?)} 0 0 0 {USE TEMP B-TREE FOR GROUP BY} 0 0 0 {USE TEMP B-TREE FOR ORDER BY}}
|
Reference in New Issue
Block a user