Software /
code /
prosody
Comparison
plugins/mod_storage_sql.lua @ 10017:994cccebb597
Merge 0.11->trunk
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 26 May 2019 19:41:58 +0200 |
parent | 10002:b6b5b9d7417d |
parent | 10012:acf4a7bfb6aa |
child | 10020:deb68066c7aa |
comparison
equal
deleted
inserted
replaced
10010:34bfefb39937 | 10017:994cccebb597 |
---|---|
470 if query.truncate == nil then | 470 if query.truncate == nil then |
471 sql_query = sql_query:format(t_concat(where, " AND ")); | 471 sql_query = sql_query:format(t_concat(where, " AND ")); |
472 else | 472 else |
473 args[#args+1] = query.truncate; | 473 args[#args+1] = query.truncate; |
474 local unlimited = "ALL"; | 474 local unlimited = "ALL"; |
475 if engine.params.driver == "SQLite3" then | 475 sql_query = [[ |
476 sql_query = [[ | 476 DELETE FROM "prosodyarchive" |
477 DELETE FROM "prosodyarchive" | 477 WHERE "sort_id" IN ( |
478 SELECT "sort_id" FROM "prosodyarchive" | |
478 WHERE %s | 479 WHERE %s |
479 ORDER BY "sort_id" %s | 480 ORDER BY "sort_id" %s |
480 LIMIT %s OFFSET ?; | 481 LIMIT %s OFFSET ? |
481 ]]; | 482 );]]; |
483 if engine.params.driver == "SQLite3" then | |
484 if engine._have_delete_limit then | |
485 sql_query = [[ | |
486 DELETE FROM "prosodyarchive" | |
487 WHERE %s | |
488 ORDER BY "sort_id" %s | |
489 LIMIT %s OFFSET ?; | |
490 ]]; | |
491 end | |
482 unlimited = "-1"; | 492 unlimited = "-1"; |
483 elseif engine.params.driver == "MySQL" then | 493 elseif engine.params.driver == "MySQL" then |
484 sql_query = [[ | 494 sql_query = [[ |
485 DELETE result FROM prosodyarchive AS result JOIN ( | 495 DELETE result FROM prosodyarchive AS result JOIN ( |
486 SELECT sort_id FROM prosodyarchive | 496 SELECT sort_id FROM prosodyarchive |
487 WHERE %s | 497 WHERE %s |
488 ORDER BY "sort_id" %s | 498 ORDER BY "sort_id" %s |
489 LIMIT %s OFFSET ? | 499 LIMIT %s OFFSET ? |
490 ) AS limiter on result.sort_id = limiter.sort_id;]]; | 500 ) AS limiter on result.sort_id = limiter.sort_id;]]; |
491 unlimited = "18446744073709551615"; | 501 unlimited = "18446744073709551615"; |
492 else | |
493 sql_query = [[ | |
494 DELETE FROM "prosodyarchive" | |
495 WHERE "sort_id" IN ( | |
496 SELECT "sort_id" FROM "prosodyarchive" | |
497 WHERE %s | |
498 ORDER BY "sort_id" %s | |
499 LIMIT %s OFFSET ? | |
500 );]]; | |
501 end | 502 end |
502 sql_query = string.format(sql_query, t_concat(where, " AND "), | 503 sql_query = string.format(sql_query, t_concat(where, " AND "), |
503 query.reverse and "ASC" or "DESC", unlimited); | 504 query.reverse and "ASC" or "DESC", unlimited); |
504 end | 505 end |
505 return engine:delete(sql_query, unpack(args)); | 506 return engine:delete(sql_query, unpack(args)); |
716 -- Check whether the table needs upgrading | 717 -- Check whether the table needs upgrading |
717 if upgrade_table(engine, params, false) then | 718 if upgrade_table(engine, params, false) then |
718 module:log("error", "Old database format detected. Please run: prosodyctl mod_%s upgrade", module.name); | 719 module:log("error", "Old database format detected. Please run: prosodyctl mod_%s upgrade", module.name); |
719 return false, "database upgrade needed"; | 720 return false, "database upgrade needed"; |
720 end | 721 end |
722 if engine.params.driver == "SQLite3" then | |
723 for row in engine:select("PRAGMA compile_options") do | |
724 if row[1] == "ENABLE_UPDATE_DELETE_LIMIT" then | |
725 engine._have_delete_limit = true; | |
726 end | |
727 end | |
728 end | |
721 end | 729 end |
722 end); | 730 end); |
723 engines[sql.db2uri(params)] = engine; | 731 engines[sql.db2uri(params)] = engine; |
724 end | 732 end |
725 | 733 |