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"