|
| 1 | +# frozen_string_literal: true |
| 2 | + |
| 3 | + |
| 4 | +NoSE::TimeDependWorkload.new do |
| 5 | + #Model 'tpch' |
| 6 | + Model 'tpch_card' |
| 7 | + |
| 8 | + def step_freq(start_ratio, end_ratio, timesteps) |
| 9 | + timesteps -= 1 |
| 10 | + middle_ts = timesteps / 2 |
| 11 | + (0..timesteps).map do |current_ts| |
| 12 | + current_ts <= middle_ts ? start_ratio : end_ratio |
| 13 | + end |
| 14 | + end |
| 15 | + |
| 16 | + step = step_freq(0.001, 0.999, 10) |
| 17 | + |
| 18 | + frequencies = step |
| 19 | + |
| 20 | + TimeSteps frequencies.size |
| 21 | + Interval 7200 # specify interval in minutes |
| 22 | + #Static true |
| 23 | + #FirstTs true |
| 24 | + #LastTs true |
| 25 | + |
| 26 | + Group 'Even', default: frequencies.reverse do |
| 27 | + |
| 28 | + Q 'SELECT ps_suppkey.s_acctbal, ps_suppkey.s_name, s_nationkey.n_name, part.p_partkey, part.p_mfgr, '\ |
| 29 | + 'ps_suppkey.s_address, ps_suppkey.s_phone, ps_suppkey.s_comment ' \ |
| 30 | + 'FROM part.from_partsupp.ps_suppkey.s_nationkey.n_regionkey ' \ |
| 31 | + 'WHERE part.p_size = ? AND part.p_type = ? AND n_regionkey.r_name = ? AND from_partsupp.ps_supplycost = ? '\ |
| 32 | + 'ORDER BY ps_suppkey.s_acctbal, s_nationkey.n_name, ps_suppkey.s_name -- Q2_outer' |
| 33 | + |
| 34 | + ## # TODO: this query originaly SELECTs min(partsupp.ps_supplycost). I need to add 'min' feature like 'max'. |
| 35 | + Q 'SELECT max(partsupp.ps_supplycost) FROM partsupp.ps_suppkey.s_nationkey.n_regionkey '\ |
| 36 | + 'WHERE n_regionkey.r_name = ? -- Q2_inner' |
| 37 | + |
| 38 | + Q 'SELECT l_orderkey.o_orderdate, sum(from_lineitem.l_extendedprice), sum(from_lineitem.l_discount) '\ |
| 39 | + 'FROM part.from_partsupp.from_lineitem.l_orderkey.o_custkey.c_nationkey.n_regionkey ' \ |
| 40 | + 'WHERE c_nationkey.n_name = ? AND n_regionkey.r_name = ? AND part.p_type = ? AND l_orderkey.o_orderdate < ? ' \ |
| 41 | + 'ORDER BY l_orderkey.o_orderdate ' \ |
| 42 | + 'GROUP BY l_orderkey.o_orderdate -- Q8' |
| 43 | + |
| 44 | + Q 'SELECT o_custkey.c_custkey, o_custkey.c_name, '\ |
| 45 | + 'sum(lineitem.l_extendedprice), sum(lineitem.l_discount), '\ |
| 46 | + 'o_custkey.c_acctbal, c_nationkey.n_name, '\ |
| 47 | + 'o_custkey.c_address, o_custkey.c_phone, o_custkey.c_comment '\ |
| 48 | + 'FROM lineitem.l_orderkey.o_custkey.c_nationkey '\ |
| 49 | + 'WHERE lineitem.l_returnflag = ? AND l_orderkey.o_orderdate < ? '\ |
| 50 | + 'ORDER BY lineitem.l_extendedprice, lineitem.l_discount ' \ |
| 51 | + 'GROUP BY o_custkey.c_custkey, o_custkey.c_name, o_custkey.c_acctbal, o_custkey.c_phone, c_nationkey.n_name, o_custkey.c_address, o_custkey.c_comment -- Q10' |
| 52 | + |
| 53 | + Q 'SELECT lineitem.l_shipmode, sum(l_orderkey.o_orderpriority) '\ |
| 54 | + 'FROM lineitem.l_orderkey '\ |
| 55 | + 'WHERE lineitem.l_shipmode = ? AND lineitem.l_receiptdate < ? ' \ |
| 56 | + 'ORDER BY lineitem.l_shipmode ' \ |
| 57 | + 'GROUP BY lineitem.l_shipmode -- Q12' |
| 58 | + |
| 59 | + Q 'SELECT sum(ps_partkey.p_type), sum(from_lineitem.l_extendedprice), sum(from_lineitem.l_discount) '\ |
| 60 | + 'FROM orders.from_lineitem.l_partkey.ps_partkey '\ |
| 61 | + 'WHERE orders.o_orderkey = ? AND from_lineitem.l_shipdate < ? -- Q14' |
| 62 | + |
| 63 | + Q 'SELECT supplier.s_suppkey FROM supplier WHERE supplier.s_comment = ? -- Q16_inner' |
| 64 | + Q 'SELECT ps_partkey.p_brand, ps_partkey.p_type, ps_partkey.p_size, count(supplier.s_suppkey) ' \ |
| 65 | + 'FROM supplier.from_partsupp.ps_partkey ' \ |
| 66 | + 'WHERE ps_partkey.p_brand = ? AND ps_partkey.p_type = ? AND ps_partkey.p_size = ? AND supplier.s_suppkey = ? ' \ |
| 67 | + 'ORDER BY ps_partkey.p_brand, ps_partkey.p_type, ps_partkey.p_size ' \ |
| 68 | + 'GROUP BY ps_partkey.p_brand, ps_partkey.p_type, ps_partkey.p_size -- Q16_outer' |
| 69 | + |
| 70 | + #Q 'SELECT lineitem.l_orderkey FROM lineitem ' \ |
| 71 | + # 'WHERE lineitem.dummy = ? AND lineitem.l_quantity > ? ' \ |
| 72 | + # 'GROUP BY lineitem.l_orderkey -- Q18_inner' |
| 73 | + Q 'SELECT o_custkey.c_name, o_custkey.c_custkey, l_orderkey.o_orderkey, ' \ |
| 74 | + 'l_orderkey.o_orderdate, l_orderkey.o_totalprice, sum(lineitem.l_quantity) ' \ |
| 75 | + 'FROM lineitem.l_orderkey.o_custkey ' \ |
| 76 | + 'WHERE l_orderkey.o_orderkey = ? ' \ |
| 77 | + 'ORDER BY l_orderkey.o_totalprice, l_orderkey.o_orderdate ' \ |
| 78 | + 'GROUP BY o_custkey.c_name, o_custkey.c_custkey, l_orderkey.o_orderkey, l_orderkey.o_orderdate, l_orderkey.o_totalprice -- Q18_outer' |
| 79 | + |
| 80 | + Q 'SELECT part.p_partkey FROM part WHERE part.p_name = ? -- Q20_inner_inner_1' |
| 81 | + #Q 'SELECT sum(lineitem.l_quantity) FROM lineitem WHERE lineitem.dummy = ? AND lineitem.l_shipdate > ? -- Q20_inner_inner_2' |
| 82 | + Q 'SELECT partsupp.ps_suppkey FROM partsupp WHERE partsupp.ps_partkey = ? AND partsupp.ps_availqty > ? -- Q20_inner' |
| 83 | + Q 'SELECT supplier.s_name, supplier.s_address ' \ |
| 84 | + 'FROM supplier.s_nationkey ' \ |
| 85 | + 'WHERE supplier.s_suppkey = ? AND s_nationkey.n_name = ? ' \ |
| 86 | + 'ORDER BY supplier.s_name -- Q20' |
| 87 | + |
| 88 | + Q 'SELECT avg(customer.c_acctbal) FROM customer ' \ |
| 89 | + 'WHERE customer.c_phone = ? AND customer.c_acctbal > ? -- Q22_inner_inner' |
| 90 | + Q 'SELECT customer.c_phone, sum(customer.c_acctbal), count(customer.c_custkey) ' \ |
| 91 | + 'FROM customer ' \ |
| 92 | + 'WHERE customer.c_phone = ? AND customer.c_custkey = ? AND customer.c_acctbal > ? ' \ |
| 93 | + 'ORDER BY customer.c_phone ' \ |
| 94 | + 'GROUP BY customer.c_phone -- Q22' |
| 95 | + end |
| 96 | + |
| 97 | + Group 'Odd', default: frequencies do |
| 98 | + Q 'SELECT l_orderkey.o_orderkey, sum(lineitem.l_extendedprice), sum(lineitem.l_discount), l_orderkey.o_orderdate, l_orderkey.o_shippriority '\ |
| 99 | + 'FROM lineitem.l_orderkey.o_custkey '\ |
| 100 | + 'WHERE o_custkey.c_mktsegment = ? AND lineitem.l_shipdate > ? '\ |
| 101 | + 'ORDER BY lineitem.l_extendedprice, lineitem.l_discount, l_orderkey.o_orderdate ' \ |
| 102 | + 'GROUP BY l_orderkey.o_orderkey, l_orderkey.o_orderdate, l_orderkey.o_shippriority -- Q3' |
| 103 | + |
| 104 | + Q 'SELECT c_nationkey.n_name, sum(lineitem.l_extendedprice), sum(lineitem.l_discount) ' \ |
| 105 | + 'FROM lineitem.l_orderkey.o_custkey.c_nationkey.n_regionkey ' \ |
| 106 | + 'WHERE n_regionkey.r_name = ? AND l_orderkey.o_orderdate < ? ' \ |
| 107 | + 'ORDER BY lineitem.l_extendedprice, lineitem.l_discount ' \ |
| 108 | + 'GROUP BY c_nationkey.n_name -- Q5' |
| 109 | + |
| 110 | + Q 'SELECT c_nationkey.n_name, lineitem.l_shipdate, '\ |
| 111 | + 'sum(lineitem.l_extendedprice), sum(lineitem.l_discount) ' \ |
| 112 | + 'FROM lineitem.l_orderkey.o_custkey.c_nationkey '\ |
| 113 | + 'WHERE c_nationkey.n_name = ? '\ |
| 114 | + 'AND lineitem.l_shipdate < ? ' \ |
| 115 | + 'ORDER BY c_nationkey.n_name, lineitem.l_shipdate ' \ |
| 116 | + 'GROUP BY c_nationkey.n_name, lineitem.l_shipdate -- Q7' |
| 117 | + |
| 118 | + Q 'SELECT c_nationkey.n_name, l_orderkey.o_orderdate, sum(from_lineitem.l_extendedprice), sum(from_lineitem.l_discount), ' \ |
| 119 | + 'sum(from_partsupp.ps_supplycost), sum(from_lineitem.l_quantity) ' \ |
| 120 | + 'FROM part.from_partsupp.from_lineitem.l_orderkey.o_custkey.c_nationkey ' \ |
| 121 | + 'WHERE part.p_name = ? AND l_orderkey.o_orderkey = ? ' \ |
| 122 | + 'ORDER BY c_nationkey.n_name, l_orderkey.o_orderdate ' \ |
| 123 | + 'GROUP BY c_nationkey.n_name, l_orderkey.o_orderdate -- Q9' |
| 124 | + |
| 125 | + Q 'SELECT sum(partsupp.ps_supplycost), sum(partsupp.ps_availqty) ' \ |
| 126 | + 'FROM partsupp.ps_suppkey.s_nationkey '\ |
| 127 | + 'WHERE s_nationkey.n_name = ? AND partsupp.ps_supplycost = ? AND partsupp.ps_availqty = ? '\ |
| 128 | + 'ORDER BY partsupp.ps_supplycost, partsupp.ps_availqty ' \ |
| 129 | + 'GROUP BY partsupp.ps_partkey -- Q11_outer' |
| 130 | + |
| 131 | + Q 'SELECT sum(partsupp.ps_supplycost), sum(partsupp.ps_availqty) '\ |
| 132 | + 'FROM partsupp.ps_suppkey.s_nationkey '\ |
| 133 | + 'WHERE s_nationkey.n_name = ? -- Q11_inner' |
| 134 | + |
| 135 | + Q 'SELECT o_custkey.c_custkey, count(orders.o_orderkey) ' \ |
| 136 | + 'FROM orders.o_custkey ' \ |
| 137 | + 'WHERE orders.o_comment = ? ' \ |
| 138 | + 'GROUP BY o_custkey.c_custkey, orders.o_orderkey -- Q13' |
| 139 | + |
| 140 | + Q 'SELECT sum(lineitem.l_extendedprice) ' \ |
| 141 | + 'FROM lineitem.l_partkey.ps_partkey ' \ |
| 142 | + 'WHERE ps_partkey.p_brand = ? AND ps_partkey.p_container = ? AND lineitem.l_quantity < ? -- Q17' |
| 143 | + |
| 144 | + Q 'SELECT sum(lineitem.l_extendedprice), sum(lineitem.l_discount) ' \ |
| 145 | + 'FROM lineitem.l_partkey.ps_partkey ' \ |
| 146 | + 'WHERE ps_partkey.p_brand = ? AND ps_partkey.p_container = ? AND lineitem.l_shipdate = ? AND lineitem.l_shipinstruct = ? ' \ |
| 147 | + 'AND ps_partkey.p_size > ? -- Q19' |
| 148 | + |
| 149 | + Q 'SELECT ps_suppkey.s_name, count(orders.o_orderkey) ' \ |
| 150 | + 'FROM orders.from_lineitem.l_partkey.ps_suppkey.s_nationkey ' \ |
| 151 | + 'WHERE orders.o_orderstatus = ? AND orders.o_orderkey = ? AND s_nationkey.n_name = ? '\ |
| 152 | + 'AND from_lineitem.l_receiptdate > ? ' \ |
| 153 | + 'ORDER BY ps_suppkey.s_name ' \ |
| 154 | + 'GROUP BY ps_suppkey.s_name -- Q21' |
| 155 | + end |
| 156 | +end |
0 commit comments