Merge 0.12->trunk
authorKim Alvefur <zash@zash.se>
Fri, 06 Jan 2023 23:53:50 +0100
changeset 12834 0c3184378032
parent 12832 f33887f925e1 (current diff)
parent 12833 fba795dd99c8 (diff)
child 12836 19365e0c0ddd
Merge 0.12->trunk
plugins/mod_storage_sql.lua
--- a/plugins/mod_storage_sql.lua	Fri Jan 06 04:38:39 2023 +0100
+++ b/plugins/mod_storage_sql.lua	Fri Jan 06 23:53:50 2023 +0100
@@ -469,12 +469,8 @@
 		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 @@
 		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 @@
 					]];
 				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);