From d2788a00c6f2f5e4d3dcd445247ff73f8f4f7f2b Mon Sep 17 00:00:00 2001 From: Vadim Tkachenko Date: Wed, 27 Apr 2011 09:30:11 -0700 Subject: [PATCH] Make statistics available in case we use db_query instead of db_execute in scripts --- sysbench/db_driver.c | 6 ++++++ sysbench/scripting/script_lua.c | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sysbench/db_driver.c b/sysbench/db_driver.c index 6b336ff..807e387 100644 --- a/sysbench/db_driver.c +++ b/sysbench/db_driver.c @@ -454,6 +454,12 @@ db_result_set_t *db_query(db_conn_t *con, const char *query) rs->connection = con; con->db_errno = con->driver->ops.query(con, query, rs); + + if (con->db_errno == SB_DB_ERROR_DEADLOCK) + thread_stats[con->thread_id].deadlocks++; + + db_update_thread_stats(con->thread_id, db_get_query_type(query)); + if (con->db_errno != SB_DB_ERROR_NONE) return NULL; diff --git a/sysbench/scripting/script_lua.c b/sysbench/scripting/script_lua.c index 92d608d..93bd4a8 100644 --- a/sysbench/scripting/script_lua.c +++ b/sysbench/scripting/script_lua.c @@ -611,7 +611,11 @@ int sb_lua_db_query(lua_State *L) query = luaL_checkstring(L, 1); rs = db_query(ctxt->con, query); if (rs == NULL) - luaL_error(L, "Database query failed"); + { + if (ctxt->con->db_errno == SB_DB_ERROR_DEADLOCK) + lua_pushnumber(L, SB_DB_RESTART_TRANSACTION); + lua_error(L); + } db_store_results(rs); db_free_results(rs);