Software / code / prosody
Comparison
plugins/mod_storage_sql.lua @ 13833:497efa2cbf2c 13.0
mod_storage_sql: Add shell command to create tables and indices (again)
This is meant as a way to diagnose e.g. issues creating indices.
It would have been nice to capture e.g. PostgreSQL notices, but LuaDBI
would need support for this first, see https://github.com/mwild1/luadbi/issues/62
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 09 Apr 2025 15:06:48 +0200 |
| parent | 13832:5973a5d22ab5 |
| child | 13836:c600794cafb6 |
comparison
equal
deleted
inserted
replaced
| 13832:5973a5d22ab5 | 13833:497efa2cbf2c |
|---|---|
| 894 end); | 894 end); |
| 895 if not success then | 895 if not success then |
| 896 module:log("error", "Failed to delete obsolete index \"prosody_index\""); | 896 module:log("error", "Failed to delete obsolete index \"prosody_index\""); |
| 897 return false; | 897 return false; |
| 898 end | 898 end |
| 899 end | |
| 900 if not indices["prosody_unique_index"] then | |
| 901 module:log("error", "New index \"prosody_unique_index\" does not exist!"); | |
| 902 return false; | |
| 899 end | 903 end |
| 900 end | 904 end |
| 901 return changes; | 905 return changes; |
| 902 end | 906 end |
| 903 | 907 |
| 1042 else | 1046 else |
| 1043 print("Available commands:"); | 1047 print("Available commands:"); |
| 1044 print("","upgrade - Perform database upgrade"); | 1048 print("","upgrade - Perform database upgrade"); |
| 1045 end | 1049 end |
| 1046 end | 1050 end |
| 1051 | |
| 1052 module:add_item("shell-command", { | |
| 1053 section = "sql"; | |
| 1054 section_desc = "SQL management commands"; | |
| 1055 name = "create"; | |
| 1056 desc = "Create the tables and indices used by Prosody (again)"; | |
| 1057 args = { { name = "host"; type = "string" } }; | |
| 1058 host_selector = "host"; | |
| 1059 handler = function(shell, _host) | |
| 1060 local logger = require "prosody.util.logger"; | |
| 1061 local writing = false; | |
| 1062 local sink = logger.add_simple_sink(function (source, level, message) | |
| 1063 local print = shell.session.print; | |
| 1064 if writing or source ~= "sql" then return; end | |
| 1065 writing = true; | |
| 1066 print(message); | |
| 1067 writing = false; | |
| 1068 end); | |
| 1069 | |
| 1070 local debug_enabled = engine._debug; | |
| 1071 engine:debug(true); | |
| 1072 create_table(engine); | |
| 1073 engine:debug(debug_enabled); | |
| 1074 | |
| 1075 if not logger.remove_sink(sink) then | |
| 1076 module:log("warn", "Unable to remove log sink"); | |
| 1077 end | |
| 1078 end; | |
| 1079 }) |