github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/cmd/smithcmp/tpch.toml (about) 1 # This requires the postgres and cockroach servers be already loaded 2 # with identical TPCH data. 3 4 smither = "postgres" 5 seed = -1 6 stmttimeoutsecs = 120 7 8 sql = [ 9 """ 10 SELECT 11 l_returnflag, 12 l_linestatus, 13 sum(l_quantity) AS sum_qty, 14 sum(l_extendedprice) AS sum_base_price, 15 sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price, 16 sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge, 17 avg(l_quantity) AS avg_qty, 18 avg(l_extendedprice) AS avg_price, 19 avg(l_discount) AS avg_disc, 20 count(*) AS count_order 21 FROM 22 lineitem 23 WHERE 24 l_shipdate <= $1::DATE - $2::INTERVAL 25 GROUP BY 26 l_returnflag, 27 l_linestatus 28 ORDER BY 29 l_returnflag, 30 l_linestatus; 31 """, 32 """ 33 SELECT 34 s_acctbal, 35 s_name, 36 n_name, 37 p_partkey, 38 p_mfgr, 39 s_address, 40 s_phone, 41 s_comment 42 FROM 43 part, 44 supplier, 45 partsupp, 46 nation, 47 region 48 WHERE 49 p_partkey = ps_partkey 50 AND s_suppkey = ps_suppkey 51 AND p_size = $1 52 AND p_type LIKE '%BRASS' 53 AND s_nationkey = n_nationkey 54 AND n_regionkey = r_regionkey 55 AND r_name = 'EUROPE' 56 AND ps_supplycost = ( 57 SELECT 58 min(ps_supplycost) 59 FROM 60 partsupp, 61 supplier, 62 nation, 63 region 64 WHERE 65 p_partkey = ps_partkey 66 AND s_suppkey = ps_suppkey 67 AND s_nationkey = n_nationkey 68 AND n_regionkey = r_regionkey 69 AND r_name = 'EUROPE' 70 ) 71 ORDER BY 72 s_acctbal DESC, 73 n_name, 74 s_name, 75 p_partkey 76 LIMIT 100; 77 """, 78 """ 79 SELECT 80 l_orderkey, 81 sum(l_extendedprice * (1 - l_discount)) AS revenue, 82 o_orderdate, 83 o_shippriority 84 FROM 85 customer, 86 orders, 87 lineitem 88 WHERE 89 c_mktsegment = 'BUILDING' 90 AND c_custkey = o_custkey 91 AND l_orderkey = o_orderkey 92 AND o_orderDATE < $1::DATE 93 AND l_shipdate > $2::DATE 94 GROUP BY 95 l_orderkey, 96 o_orderdate, 97 o_shippriority 98 ORDER BY 99 revenue DESC, 100 o_orderdate 101 LIMIT 10; 102 """, 103 """ 104 SELECT 105 o_orderpriority, 106 count(*) AS order_count 107 FROM 108 orders 109 WHERE 110 o_orderdate >= $1::DATE 111 AND o_orderdate < $2::DATE + $3::INTERVAL 112 AND EXISTS ( 113 SELECT 114 * 115 FROM 116 lineitem 117 WHERE 118 l_orderkey = o_orderkey 119 AND l_commitDATE < l_receiptdate 120 ) 121 GROUP BY 122 o_orderpriority 123 ORDER BY 124 o_orderpriority; 125 """, 126 """ 127 SELECT 128 n_name, 129 sum(l_extendedprice * (1 - l_discount)) AS revenue 130 FROM 131 customer, 132 orders, 133 lineitem, 134 supplier, 135 nation, 136 region 137 WHERE 138 c_custkey = o_custkey 139 AND l_orderkey = o_orderkey 140 AND l_suppkey = s_suppkey 141 AND c_nationkey = s_nationkey 142 AND s_nationkey = n_nationkey 143 AND n_regionkey = r_regionkey 144 AND r_name = 'ASIA' 145 AND o_orderDATE >= $1::DATE 146 AND o_orderDATE < $2::DATE + $3::INTERVAL 147 GROUP BY 148 n_name 149 ORDER BY 150 revenue DESC; 151 """, 152 """ 153 SELECT 154 sum(l_extendedprice * l_discount) AS revenue 155 FROM 156 lineitem 157 WHERE 158 l_shipdate >= $1::DATE 159 AND l_shipdate < $2::DATE + $3::INTERVAL 160 AND l_discount BETWEEN $4::FLOAT8 - $5::FLOAT8 AND $6::FLOAT8 + $7::FLOAT8 161 AND l_quantity < $8::FLOAT8; 162 """, 163 """ 164 SELECT 165 supp_nation, 166 cust_nation, 167 l_year, 168 sum(volume) AS revenue 169 FROM 170 ( 171 SELECT 172 n1.n_name AS supp_nation, 173 n2.n_name AS cust_nation, 174 EXTRACT(year FROM l_shipdate) AS l_year, 175 l_extendedprice * (1 - l_discount) AS volume 176 FROM 177 supplier, 178 lineitem, 179 orders, 180 customer, 181 nation n1, 182 nation n2 183 WHERE 184 s_suppkey = l_suppkey 185 AND o_orderkey = l_orderkey 186 AND c_custkey = o_custkey 187 AND s_nationkey = n1.n_nationkey 188 AND c_nationkey = n2.n_nationkey 189 AND ( 190 (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') 191 or (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE') 192 ) 193 AND l_shipdate BETWEEN $1::DATE AND $2::DATE 194 ) AS shipping 195 GROUP BY 196 supp_nation, 197 cust_nation, 198 l_year 199 ORDER BY 200 supp_nation, 201 cust_nation, 202 l_year; 203 """, 204 """ 205 SELECT 206 o_year, 207 sum(CASE 208 WHEN nation = 'BRAZIL' THEN volume 209 ELSE 0 210 END) / sum(volume) AS mkt_share 211 FROM 212 ( 213 SELECT 214 EXTRACT(year FROM o_orderdate) AS o_year, 215 l_extendedprice * (1 - l_discount) AS volume, 216 n2.n_name AS nation 217 FROM 218 part, 219 supplier, 220 lineitem, 221 orders, 222 customer, 223 nation n1, 224 nation n2, 225 region 226 WHERE 227 p_partkey = l_partkey 228 AND s_suppkey = l_suppkey 229 AND l_orderkey = o_orderkey 230 AND o_custkey = c_custkey 231 AND c_nationkey = n1.n_nationkey 232 AND n1.n_regionkey = r_regionkey 233 AND r_name = 'AMERICA' 234 AND s_nationkey = n2.n_nationkey 235 AND o_orderdate BETWEEN $1::DATE AND $2::DATE 236 AND p_type = 'ECONOMY ANODIZED STEEL' 237 ) AS all_nations 238 GROUP BY 239 o_year 240 ORDER BY 241 o_year; 242 """, 243 """ 244 SELECT 245 c_custkey, 246 c_name, 247 sum(l_extendedprice * (1 - l_discount)) AS revenue, 248 c_acctbal, 249 n_name, 250 c_address, 251 c_phone, 252 c_comment 253 FROM 254 customer, 255 orders, 256 lineitem, 257 nation 258 WHERE 259 c_custkey = o_custkey 260 AND l_orderkey = o_orderkey 261 AND o_orderDATE >= $1::DATE 262 AND o_orderDATE < $2::DATE + $3::INTERVAL 263 AND l_returnflag = 'R' 264 AND c_nationkey = n_nationkey 265 GROUP BY 266 c_custkey, 267 c_name, 268 c_acctbal, 269 c_phone, 270 n_name, 271 c_address, 272 c_comment 273 ORDER BY 274 revenue DESC 275 LIMIT 20; 276 """, 277 """ 278 SELECT 279 ps_partkey, 280 sum(ps_supplycost * ps_availqty::float) AS value 281 FROM 282 partsupp, 283 supplier, 284 nation 285 WHERE 286 ps_suppkey = s_suppkey 287 AND s_nationkey = n_nationkey 288 AND n_name = 'GERMANY' 289 GROUP BY 290 ps_partkey HAVING 291 sum(ps_supplycost * ps_availqty::float) > ( 292 SELECT 293 sum(ps_supplycost * ps_availqty::float) * $1::FLOAT8 294 FROM 295 partsupp, 296 supplier, 297 nation 298 WHERE 299 ps_suppkey = s_suppkey 300 AND s_nationkey = n_nationkey 301 AND n_name = 'GERMANY' 302 ) 303 ORDER BY 304 value DESC, ps_partkey; 305 """, 306 """ 307 SELECT 308 l_shipmode, 309 sum(CASE 310 WHEN o_orderpriority = '1-URGENT' 311 or o_orderpriority = '2-HIGH' 312 THEN 1 313 ELSE 0 314 END) AS high_line_count, 315 sum(CASE 316 WHEN o_orderpriority <> '1-URGENT' 317 AND o_orderpriority <> '2-HIGH' 318 THEN 1 319 ELSE 0 320 END) AS low_line_count 321 FROM 322 orders, 323 lineitem 324 WHERE 325 o_orderkey = l_orderkey 326 AND l_shipmode IN ('MAIL', 'SHIP') 327 AND l_commitdate < l_receiptdate 328 AND l_shipdate < l_commitdate 329 AND l_receiptdate >= $1::DATE 330 AND l_receiptdate < $2::DATE + $3::INTERVAL 331 GROUP BY 332 l_shipmode 333 ORDER BY 334 l_shipmode; 335 """, 336 """ 337 SELECT 338 100.00 * sum(CASE 339 WHEN p_type LIKE 'PROMO%' 340 THEN l_extendedprice * (1 - l_discount) 341 ELSE 0 342 END) / sum(l_extendedprice * (1 - l_discount)) AS promo_revenue 343 FROM 344 lineitem, 345 part 346 WHERE 347 l_partkey = p_partkey 348 AND l_shipdate >= $1::DATE 349 AND l_shipdate < $2::DATE + $3::INTERVAL; 350 """, 351 """ 352 SELECT 353 c_name, 354 c_custkey, 355 o_orderkey, 356 o_orderdate, 357 o_totalprice, 358 sum(l_quantity) 359 FROM 360 customer, 361 orders, 362 lineitem 363 WHERE 364 o_orderkey IN ( 365 SELECT 366 l_orderkey 367 FROM 368 lineitem 369 GROUP BY 370 l_orderkey HAVING 371 sum(l_quantity) > $1::INT8 372 ) 373 AND c_custkey = o_custkey 374 AND o_orderkey = l_orderkey 375 GROUP BY 376 c_name, 377 c_custkey, 378 o_orderkey, 379 o_orderdate, 380 o_totalprice 381 ORDER BY 382 o_totalprice DESC, 383 o_orderdate 384 LIMIT 100; 385 """, 386 """ 387 SELECT 388 sum(l_extendedprice* (1 - l_discount)) AS revenue 389 FROM 390 lineitem, 391 part 392 WHERE 393 ( 394 p_partkey = l_partkey 395 AND p_brand = 'Brand#12' 396 AND p_container IN ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG') 397 AND l_quantity >= $1::INT8 AND l_quantity <= $2::INT8 + $3::INT8 398 AND p_size BETWEEN $4::INT8 AND $5::INT8 399 AND l_shipmode IN ('AIR', 'AIR REG') 400 AND l_shipinstruct = 'DELIVER IN PERSON' 401 ) 402 OR 403 ( 404 p_partkey = l_partkey 405 AND p_brand = 'Brand#23' 406 AND p_container IN ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK') 407 AND l_quantity >= $6::INT8 AND l_quantity <= $7::INT8 + $8::INT8 408 AND p_size BETWEEN $9::INT8 AND $10::INT8 409 AND l_shipmode IN ('AIR', 'AIR REG') 410 AND l_shipinstruct = 'DELIVER IN PERSON' 411 ) 412 OR 413 ( 414 p_partkey = l_partkey 415 AND p_brand = 'Brand#34' 416 AND p_container IN ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG') 417 AND l_quantity >= $11::INT8 AND l_quantity <= $12::INT8 + $13::INT8 418 AND p_size BETWEEN $14::INT8 AND $15::INT8 419 AND l_shipmode IN ('AIR', 'AIR REG') 420 AND l_shipinstruct = 'DELIVER IN PERSON' 421 ); 422 """, 423 """ 424 SELECT 425 s_name, 426 s_address 427 FROM 428 supplier, 429 nation 430 WHERE 431 s_suppkey IN ( 432 SELECT 433 ps_suppkey 434 FROM 435 partsupp 436 WHERE 437 ps_partkey IN ( 438 SELECT 439 p_partkey 440 FROM 441 part 442 WHERE 443 p_name LIKE 'forest%' 444 ) 445 AND ps_availqty > ( 446 SELECT 447 $1::FLOAT8 * sum(l_quantity) 448 FROM 449 lineitem 450 WHERE 451 l_partkey = ps_partkey 452 AND l_suppkey = ps_suppkey 453 AND l_shipdate >= $2::DATE 454 AND l_shipdate < $3::DATE + $4::INTERVAL 455 ) 456 ) 457 AND s_nationkey = n_nationkey 458 AND n_name = 'CANADA' 459 ORDER BY 460 s_name; 461 """, 462 """ 463 SELECT 464 cntrycode, 465 count(*) AS numcust, 466 sum(c_acctbal) AS totacctbal 467 FROM 468 ( 469 SELECT 470 substring(c_phone FROM $1::INT4 FOR $2::INT4) AS cntrycode, 471 c_acctbal 472 FROM 473 customer 474 WHERE 475 substring(c_phone FROM $3::INT4 FOR $4::INT4) in 476 ('13', '31', '23', '29', '30', '18', '17') 477 AND c_acctbal > ( 478 SELECT 479 avg(c_acctbal) 480 FROM 481 customer 482 WHERE 483 c_acctbal > $5::FLOAT8 484 AND substring(c_phone FROM $6::INT4 FOR $7::INT4) in 485 ('13', '31', '23', '29', '30', '18', '17') 486 ) 487 AND NOT EXISTS ( 488 SELECT 489 * 490 FROM 491 orders 492 WHERE 493 o_custkey = c_custkey 494 ) 495 ) AS custsale 496 GROUP BY 497 cntrycode 498 ORDER BY 499 cntrycode; 500 """, 501 ] 502 503 # Missing: 9, 13, 15, 16, 17, 21 504 # These are missing either because 1) they use a CREATE VIEW, or 2) 505 # they don't have any parameters that make sense to randomize, and we'd 506 # thus be executing the same query each time. Queries that don't change 507 # should be tested in other places; smithcmp is for random testing. 508 509 [databases.vec-off] 510 addr = "postgresql://root@localhost:26257/tpch?sslmode=disable" 511 allowmutations = true 512 initsql = """ 513 set vectorize=off; 514 """ 515 516 [databases.vec-201auto] 517 addr = "postgresql://root@localhost:26257/tpch?sslmode=disable" 518 allowmutations = true 519 initsql = """ 520 set vectorize=201auto; 521 """ 522 523 [databases.vec-on] 524 addr = "postgresql://root@localhost:26257/tpch?sslmode=disable" 525 allowmutations = true 526 initsql = """ 527 set vectorize=on; 528 """ 529 530 [databases.postgres] 531 addr = "postgresql://postgres@localhost:5432/tpch?sslmode=disable"