Skip to content

Commit 5d8b9a5

Browse files
committed
Error handling
1 parent 162c265 commit 5d8b9a5

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

tpcc.lua

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ function thread_init()
2727
con = drv:connect()
2828

2929
set_isolation_level(drv,con)
30+
con:query("SET autocommit=0")
3031

3132
end
3233

@@ -60,4 +61,17 @@ function sysbench.hooks.report_intermediate(stat)
6061
sysbench.report_csv(stat)
6162
end
6263

64+
function sysbench.hooks.sql_error_ignorable(err)
65+
if err.sql_errno == 1205 then
66+
print("Lock timeout detected. Rollback")
67+
con:query("ROLLBACK")
68+
return true
69+
end
70+
if err.sql_errno == 1213 then
71+
print("Deadlock detected. Rollback")
72+
con:query("ROLLBACK")
73+
return true
74+
end
75+
end
76+
6377
-- vim:ts=4 ss=4 sw=4 expandtab

tpcc_check.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ function check_tables(drv, con, warehouse_num)
196196
local pass10 = 1
197197
for table_num = 1, sysbench.opt.tables do
198198
-- 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, order_line%d WHERE OL_W_ID=O_W_ID AND OL_D_ID = O_D_ID+0 AND OL_O_ID = O_ID+0 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))
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))
200200

201201
for i = 1, rs.nrows do
202202
row = rs:fetch_row()
@@ -216,7 +216,7 @@ function check_tables(drv, con, warehouse_num)
216216
local pass12 = 1
217217
for table_num = 1, sysbench.opt.tables do
218218
-- 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, order_line%d WHERE OL_W_ID=O_W_ID AND OL_D_ID = O_D_ID+0 AND OL_O_ID = O_ID+0 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))
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))
220220

221221
for i = 1, rs.nrows do
222222
row = rs:fetch_row()

0 commit comments

Comments
 (0)