aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2023-01-01 16:20:58 +0100
committerKim Alvefur <zash@zash.se>2023-01-01 16:20:58 +0100
commit91a064bd4985f7bf826faacb9faa680088f9a453 (patch)
treea7e5243c9817252c2a008bc7f0f269941e3f8fdf
parente853a1652b04b9bf467c075cd44e4ad295f92d29 (diff)
downloadprosody-91a064bd4985f7bf826faacb9faa680088f9a453.tar.gz
prosody-91a064bd4985f7bf826faacb9faa680088f9a453.zip
mod_storage_sql: Fix #1639
Patch by Peter Kieser
-rw-r--r--plugins/mod_storage_sql.lua26
1 files changed, 12 insertions, 14 deletions
diff --git a/plugins/mod_storage_sql.lua b/plugins/mod_storage_sql.lua
index 4bed7b5c..b3ed7638 100644
--- a/plugins/mod_storage_sql.lua
+++ b/plugins/mod_storage_sql.lua
@@ -469,12 +469,8 @@ function archive_store:find(username, query)
local ok, err = archive_where_id_range(query, args, where);
if not ok then return ok, err; end
- if query.limit then
- args[#args+1] = query.limit;
- end
-
sql_query = sql_query:format(t_concat(where, " AND "), query.reverse
- and "DESC" or "ASC", query.limit and " LIMIT ?" or "");
+ and "DESC" or "ASC", query.limit and " LIMIT " .. query.limit or "");
return engine:select(sql_query, unpack(args));
end);
if not ok then return ok, result; end
@@ -592,6 +588,17 @@ function archive_store:delete(username, query)
if not ok then return ok, err; end
if query.truncate == nil then
sql_query = sql_query:format(t_concat(where, " AND "));
+ elseif engine.params.driver == "MySQL" then
+ sql_query = [[
+ DELETE result FROM prosodyarchive AS result JOIN (
+ SELECT sort_id FROM prosodyarchive
+ WHERE %s
+ ORDER BY "sort_id" %s
+ LIMIT 18446744073709551615 OFFSET %s
+ ) AS limiter on result.sort_id = limiter.sort_id;]];
+
+ sql_query = string.format(sql_query, t_concat(where, " AND "),
+ query.reverse and "ASC" or "DESC", query.truncate);
else
args[#args+1] = query.truncate;
local unlimited = "ALL";
@@ -613,15 +620,6 @@ function archive_store:delete(username, query)
]];
end
unlimited = "-1";
- elseif engine.params.driver == "MySQL" then
- sql_query = [[
- DELETE result FROM prosodyarchive AS result JOIN (
- SELECT sort_id FROM prosodyarchive
- WHERE %s
- ORDER BY "sort_id" %s
- LIMIT %s OFFSET ?
- ) AS limiter on result.sort_id = limiter.sort_id;]];
- unlimited = "18446744073709551615";
end
sql_query = string.format(sql_query, t_concat(where, " AND "),
query.reverse and "ASC" or "DESC", unlimited);