Comparison

plugins/mod_storage_sql.lua @ 10031:17c175ad65f9

mod_storage_sql: Correctly return item-not-found error `return ok, err` comes out as `transaction_ok, ok, err`
author Kim Alvefur <zash@zash.se>
date Tue, 28 May 2019 00:46:24 +0200
parent 10020:deb68066c7aa
child 10032:de5ab807e438
comparison
equal deleted inserted replaced
10030:98ef41a60fc3 10031:17c175ad65f9
365 local cache_key = jid_join(username, host, self.store); 365 local cache_key = jid_join(username, host, self.store);
366 local total = archive_item_count_cache:get(cache_key); 366 local total = archive_item_count_cache:get(cache_key);
367 if total ~= nil and query.limit == 0 and query.start == nil and query.with == nil and query["end"] == nil and query.key == nil then 367 if total ~= nil and query.limit == 0 and query.start == nil and query.with == nil and query["end"] == nil and query.key == nil then
368 return noop, total; 368 return noop, total;
369 end 369 end
370 local ok, result = engine:transaction(function() 370 local ok, result, err = engine:transaction(function()
371 local sql_query = [[ 371 local sql_query = [[
372 SELECT "key", "type", "value", "when", "with" 372 SELECT "key", "type", "value", "when", "with"
373 FROM "prosodyarchive" 373 FROM "prosodyarchive"
374 WHERE %s 374 WHERE %s
375 ORDER BY "sort_id" %s%s; 375 ORDER BY "sort_id" %s%s;
405 405
406 sql_query = sql_query:format(t_concat(where, " AND "), query.reverse 406 sql_query = sql_query:format(t_concat(where, " AND "), query.reverse
407 and "DESC" or "ASC", query.limit and " LIMIT ?" or ""); 407 and "DESC" or "ASC", query.limit and " LIMIT ?" or "");
408 return engine:select(sql_query, unpack(args)); 408 return engine:select(sql_query, unpack(args));
409 end); 409 end);
410 if not ok then return ok, result end 410 if not ok then return ok, result; end
411 if not result then return nil, err; end
411 return function() 412 return function()
412 local row = result(); 413 local row = result();
413 if row ~= nil then 414 if row ~= nil then
414 local value, err = deserialize(row[2], row[3]); 415 local value, err = deserialize(row[2], row[3]);
415 assert(value ~= nil, err); 416 assert(value ~= nil, err);