From d938b42d8f9f4d2108383167c3b8139ad5157816 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Wed, 12 Apr 2017 21:53:21 +0200
Subject: mod_storage_sql: Pass charset and collation names via variable
 binding

---
 plugins/mod_storage_sql.lua | 7 +++----
 1 file 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;
-- 
cgit v1.2.3