diff options
author | Kim Alvefur <zash@zash.se> | 2017-04-12 21:53:21 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-04-12 21:53:21 +0200 |
commit | 460b03bec9d118e2718ee4e9edc22c79fb68fd91 (patch) | |
tree | fa721151446290fa6423710d27dc2eaef890ac8d | |
parent | 44116c253fd528c81a1169a2b835eae063e9303b (diff) | |
download | prosody-460b03bec9d118e2718ee4e9edc22c79fb68fd91.tar.gz prosody-460b03bec9d118e2718ee4e9edc22c79fb68fd91.zip |
mod_storage_sql: Pass charset and collation names via variable binding
-rw-r--r-- | plugins/mod_storage_sql.lua | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/plugins/mod_storage_sql.lua b/plugins/mod_storage_sql.lua index d9e45781..9f33d987 100644 --- a/plugins/mod_storage_sql.lua +++ b/plugins/mod_storage_sql.lua @@ -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; |