Software / code / prosody
Comparison
plugins/mod_storage_sql.lua @ 8395:fbb9a1c2120e
mod_storage_sql: Add support for truncating deletion
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 09 Nov 2017 16:50:36 +0100 |
| parent | 8294:90576b60f2d0 |
| child | 8410:54ff1f91e4db |
comparison
equal
deleted
inserted
replaced
| 8394:4892c22403d5 | 8395:fbb9a1c2120e |
|---|---|
| 372 table.remove(args, 2); | 372 table.remove(args, 2); |
| 373 table.remove(where, 2); | 373 table.remove(where, 2); |
| 374 end | 374 end |
| 375 archive_where(query, args, where); | 375 archive_where(query, args, where); |
| 376 archive_where_id_range(query, args, where); | 376 archive_where_id_range(query, args, where); |
| 377 sql_query = sql_query:format(t_concat(where, " AND ")); | 377 if query.truncate == nil then |
| 378 sql_query = sql_query:format(t_concat(where, " AND ")); | |
| 379 else | |
| 380 args[#args+1] = query.truncate; | |
| 381 local unlimited = "ALL"; | |
| 382 if engine.params.driver == "SQLite3" then | |
| 383 sql_query = [[ | |
| 384 DELETE FROM "prosodyarchive" | |
| 385 WHERE %s | |
| 386 ORDER BY "sort_id" %s | |
| 387 LIMIT %s OFFSET ?; | |
| 388 ]]; | |
| 389 unlimited = "-1"; | |
| 390 else | |
| 391 sql_query = [[ | |
| 392 DELETE FROM "prosodyarchive" | |
| 393 WHERE "sort_id" IN ( | |
| 394 SELECT "sort_id" FROM "prosodyarchive" | |
| 395 WHERE %s | |
| 396 ORDER BY "sort_id" %s | |
| 397 LIMIT %s OFFSET ? | |
| 398 );]]; | |
| 399 if engine.params.driver == "MySQL" then | |
| 400 unlimited = "18446744073709551615"; | |
| 401 end | |
| 402 end | |
| 403 sql_query = string.format(sql_query, t_concat(where, " AND "), | |
| 404 query.reverse and "ASC" or "DESC", unlimited); | |
| 405 end | |
| 378 return engine:delete(sql_query, unpack(args)); | 406 return engine:delete(sql_query, unpack(args)); |
| 379 end); | 407 end); |
| 380 return ok and stmt:affected(), stmt; | 408 return ok and stmt:affected(), stmt; |
| 381 end | 409 end |
| 382 | 410 |