util.sql: Log errors in transaction to error level with traceback but return only...
authorKim Alvefur <zash@zash.se>
Fri, 25 Mar 2016 15:09:34 +0000 (16:09 +0100)
committerKim Alvefur <zash@zash.se>
Fri, 25 Mar 2016 15:09:34 +0000 (16:09 +0100)
util/sql.lua

index 657acb79d0dd72d0f431b2300e545f5f2b41d555..acdf9c6390ceffea97c37b6cb08b315313ae9125 100644 (file)
@@ -202,6 +202,10 @@ function engine:debug(enable)
                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 @@ function engine:_transaction(func, ...)
        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));