util.sql: Log errors in transaction to error level with traceback but return only error message (fixes #464)
authorKim Alvefur <zash@zash.se>
Fri, 25 Mar 2016 16:09:34 +0100
changeset 7320 a2dce746599b
parent 7318 4fd984d1e445
child 7321 1fa6052f3a07
child 7322 afa83f3ccaad
util.sql: Log errors in transaction to error level with traceback but return only error message (fixes #464)
util/sql.lua
--- a/util/sql.lua	Wed Mar 23 23:21:03 2016 +0100
+++ b/util/sql.lua	Fri Mar 25 16:09:34 2016 +0100
@@ -202,6 +202,10 @@
 		engine.update = engine.execute_update;
 	end
 end
+local function handleerr(err)
+	log("error", "Error in SQL transaction: %s", debug_traceback(err, 3));
+	return err;
+end
 function engine:_transaction(func, ...)
 	if not self.conn then
 		local ok, err = self:connect();
@@ -212,7 +216,7 @@
 	local function f() return func(unpack(args, 1, n_args)); end
 	log("debug", "SQL transaction begin [%s]", tostring(func));
 	self.__transaction = true;
-	local success, a, b, c = xpcall(f, debug_traceback);
+	local success, a, b, c = xpcall(f, handleerr);
 	self.__transaction = nil;
 	if success then
 		log("debug", "SQL transaction success [%s]", tostring(func));