Skip to content

Commit 11db9ad

Browse files
authored
Merge pull request #4 from alexey2k/fixes.n1
Fixes: compatibility, core, tpcc scenario
2 parents 2359a12 + e3a20ea commit 11db9ad

File tree

4 files changed

+413
-369
lines changed

4 files changed

+413
-369
lines changed

tpcc.lua

+11-5
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,15 @@ require("tpcc_run")
2323
require("tpcc_check")
2424

2525
function thread_init()
26+
2627
drv = sysbench.sql.driver()
2728
con = drv:connect()
2829

2930
set_isolation_level(drv,con)
30-
con:query("SET autocommit=0")
31+
32+
if drv:name() == "mysql" then
33+
con:query("SET autocommit=0")
34+
end
3135

3236
end
3337

@@ -46,11 +50,13 @@ function event()
4650
trx="stocklevel"
4751
end
4852

49-
-- Repeat transaction execution until success
50-
while not pcall(function () _G[trx]() end ) do
51-
con:query("ROLLBACK")
52-
end
53+
-- Execute transaction
54+
_G[trx]()
55+
56+
end
5357

58+
function sysbench.hooks.before_restart_event(err)
59+
con:query("ROLLBACK")
5460
end
5561

5662
function sysbench.hooks.report_intermediate(stat)

tpcc_check.lua

+38-4
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,17 @@ require("tpcc_common")
2424

2525
function check_tables(drv, con, warehouse_num)
2626

27+
straight_join_hint=","
28+
29+
if drv:name() == "mysql" then
30+
straight_join_hint = "STRAIGHT_JOIN"
31+
end
32+
33+
2734
local pass1 = 1
2835
for table_num = 1, sysbench.opt.tables do
2936
-- print(string.format("Checking tables: %d for warehouse: %d\n", table_num, warehouse_num))
30-
rs = con:query("SELECT d_w_id,sum(d_ytd)-w_ytd diff FROM district"..table_num..",warehouse"..table_num.." where d_w_id=w_id AND w_id="..warehouse_num.." group by d_w_id")
37+
rs = con:query("SELECT d_w_id,sum(d_ytd)-max(w_ytd) diff FROM district"..table_num..",warehouse"..table_num.." WHERE d_w_id=w_id AND w_id="..warehouse_num.." group by d_w_id")
3138

3239
for i = 1, rs.nrows do
3340
row = rs:fetch_row()
@@ -41,6 +48,8 @@ function check_tables(drv, con, warehouse_num)
4148

4249
if pass1 ~= 1 then
4350
print(string.format("Check 1, warehouse: %d FAILED!!!", warehouse_num))
51+
else
52+
print(string.format("Check 1, warehouse: %d PASSED", warehouse_num))
4453
end
4554

4655
-- CHECK 2
@@ -96,7 +105,13 @@ function check_tables(drv, con, warehouse_num)
96105
local pass4 = 1
97106
for table_num = 1, sysbench.opt.tables do
98107
-- print(string.format("Checking tables: %d for warehouse: %d\n", table_num, warehouse_num))
99-
rs = con:query(string.format("SELECT count(*) FROM (SELECT o_d_id, SUM(o_ol_cnt) sm1, cn FROM orders%d,(SELECT ol_d_id, COUNT(*) cn FROM order_line%d WHERE ol_w_id=%d GROUP BY ol_d_id) ol WHERE O_w_id=%d AND ol_d_id=o_d_id GROUP BY o_d_id) t1 WHERE sm1<>cn",table_num, table_num, warehouse_num, warehouse_num))
108+
rs = con:query(string.format([[SELECT count(*)
109+
FROM (SELECT o_d_id, SUM(o_ol_cnt) sm1, MAX(cn) as cn
110+
FROM orders%d,(SELECT ol_d_id, COUNT(*) cn
111+
FROM order_line%d
112+
WHERE ol_w_id=%d GROUP BY ol_d_id) ol
113+
WHERE o_w_id=%d AND ol_d_id=o_d_id GROUP BY o_d_id) t1
114+
WHERE sm1<>cn]],table_num, table_num, warehouse_num, warehouse_num))
100115

101116
for i = 1, rs.nrows do
102117
row = rs:fetch_row()
@@ -196,7 +211,22 @@ function check_tables(drv, con, warehouse_num)
196211
local pass10 = 1
197212
for table_num = 1, sysbench.opt.tables do
198213
-- print(string.format("Checking tables: %d for warehouse: %d\n", table_num, warehouse_num))
199-
rs = con:query(string.format("SELECT count(*) FROM ( SELECT c.c_id, c.c_d_id, c.c_w_id, c.c_balance c1, (SELECT sum(ol_amount) FROM orders%d STRAIGHT_JOIN order_line%d WHERE OL_W_ID=O_W_ID AND OL_D_ID = O_D_ID AND OL_O_ID = O_ID AND OL_DELIVERY_D IS NOT NULL AND O_W_ID=c.c_w_id AND O_D_ID=c.C_D_ID AND O_C_ID=c.C_ID) sm, (SELECT sum(h_amount) from history%d WHERE H_C_W_ID=c.C_W_ID AND H_C_D_ID=c.C_D_ID AND H_C_ID=c.C_ID) smh FROM customer%d c WHERE c.c_w_id=%d ) t where c1<>sm-smh",table_num, table_num, table_num, table_num, warehouse_num))
214+
rs = con:query(string.format([[SELECT count(*)
215+
FROM ( SELECT c.c_id, c.c_d_id, c.c_w_id, c.c_balance c1,
216+
(SELECT sum(ol_amount) FROM orders%d ]] .. straight_join_hint .. [[ order_line%d
217+
WHERE OL_W_ID=O_W_ID
218+
AND OL_D_ID = O_D_ID
219+
AND OL_O_ID = O_ID
220+
AND OL_DELIVERY_D IS NOT NULL
221+
AND O_W_ID=c.c_w_id
222+
AND O_D_ID=c.C_D_ID
223+
AND O_C_ID=c.C_ID) sm, (SELECT sum(h_amount) from history%d
224+
WHERE H_C_W_ID=c.C_W_ID
225+
AND H_C_D_ID=c.C_D_ID
226+
AND H_C_ID=c.C_ID) smh
227+
FROM customer%d c
228+
WHERE c.c_w_id=%d ) t
229+
WHERE c1<>sm-smh]],table_num, table_num, table_num, table_num, warehouse_num))
200230

201231
for i = 1, rs.nrows do
202232
row = rs:fetch_row()
@@ -216,7 +246,11 @@ function check_tables(drv, con, warehouse_num)
216246
local pass12 = 1
217247
for table_num = 1, sysbench.opt.tables do
218248
-- print(string.format("Checking tables: %d for warehouse: %d\n", table_num, warehouse_num))
219-
rs = con:query(string.format("SELECT count(*) FROM (SELECT c.c_id, c.c_d_id, c.c_balance c1, c_ytd_payment, (SELECT sum(ol_amount) FROM orders%d STRAIGHT_JOIN order_line%d WHERE OL_W_ID=O_W_ID AND OL_D_ID = O_D_ID AND OL_O_ID = O_ID AND OL_DELIVERY_D IS NOT NULL AND O_W_ID=c.c_w_id AND O_D_ID=c.C_D_ID AND O_C_ID=c.C_ID) sm FROM customer%d c WHERE c.c_w_id=%d) t1 WHERE c1+c_ytd_payment <> sm " ,table_num, table_num, table_num, warehouse_num))
249+
rs = con:query(string.format([[SELECT count(*) FROM (SELECT c.c_id, c.c_d_id, c.c_balance c1, c_ytd_payment,
250+
(SELECT sum(ol_amount) FROM orders%d ]] .. straight_join_hint .. [[ order_line%d
251+
WHERE OL_W_ID=O_W_ID AND OL_D_ID = O_D_ID AND OL_O_ID = O_ID AND OL_DELIVERY_D IS NOT NULL AND
252+
O_W_ID=c.c_w_id AND O_D_ID=c.C_D_ID AND O_C_ID=c.C_ID) sm FROM customer%d c WHERE c.c_w_id=%d) t1
253+
WHERE c1+c_ytd_payment <> sm ]] ,table_num, table_num, table_num, warehouse_num))
220254

221255
for i = 1, rs.nrows do
222256
row = rs:fetch_row()

0 commit comments

Comments
 (0)