mirror of
https://github.com/bjc/prosody.git
synced 2025-04-06 22:57:38 +03:00
mod_storage_sql: Pass charset and collation names via variable binding
This commit is contained in:
parent
a03638bd16
commit
d938b42d8f
1 changed files with 3 additions and 4 deletions
|
@ -484,12 +484,11 @@ local function upgrade_table(engine, params, apply_changes) -- luacheck: ignore
|
|||
local check_encoding_query = [[
|
||||
SELECT "COLUMN_NAME","COLUMN_TYPE","TABLE_NAME"
|
||||
FROM "information_schema"."columns"
|
||||
WHERE "TABLE_NAME" LIKE 'prosody%%' AND ( "CHARACTER_SET_NAME"!='%s' OR "COLLATION_NAME"!='%s_bin' );
|
||||
WHERE "TABLE_NAME" LIKE 'prosody%%' AND ( "CHARACTER_SET_NAME"!=? OR "COLLATION_NAME"!=?);
|
||||
]];
|
||||
check_encoding_query = check_encoding_query:format(engine.charset, engine.charset);
|
||||
-- FIXME Is it ok to ignore the return values from this?
|
||||
engine:transaction(function()
|
||||
local result = assert(engine:execute(check_encoding_query));
|
||||
local result = assert(engine:execute(check_encoding_query, engine.charset, engine.charset.."_bin"));
|
||||
local n_bad_columns = result:rowcount();
|
||||
if n_bad_columns > 0 then
|
||||
changes = true;
|
||||
|
@ -507,7 +506,7 @@ local function upgrade_table(engine, params, apply_changes) -- luacheck: ignore
|
|||
end
|
||||
end
|
||||
end);
|
||||
success,err = engine:transaction(function() return engine:execute(check_encoding_query); end);
|
||||
success,err = engine:transaction(function() return engine:execute(check_encoding_query, engine.charset, engine.charset.."_bin"); end);
|
||||
if not success then
|
||||
module:log("error", "Failed to check/upgrade database encoding: %s", err or "unknown error");
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue