From aaa718741ec999e4bb2b09d1576d92afff29c0cf Mon Sep 17 00:00:00 2001 From: Pablo Polvorin Date: Wed, 13 Nov 2013 14:30:29 -0300 Subject: Use BLOB instead of TEXT on mysql in stanza storage Mysql 'utf8' do not support 4-bytes UTF8 chars. Characters like 'KISS MARK' (U+1F48B) causes mysql to cut the string at that point. There is utf8mb4 encoding available on newer mysql versions that do support 4-bytes utf8. But for storing stanzas, that doesn't need to be indexed or searched or inspected in any way, it was easier to use BLOB (the bytes stored are utf8 encoded anyway, like all XMPP), and avoids the need to redefine indexes (as allowed size is shorter on utf8mb4) or having mixed utf8 and utf8mb4 encodings on the same table. --- sql/mysql.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sql') diff --git a/sql/mysql.sql b/sql/mysql.sql index 21e7b9b52..eaa107788 100644 --- a/sql/mysql.sql +++ b/sql/mysql.sql @@ -77,7 +77,7 @@ CREATE INDEX i_sr_user_grp ON sr_user(grp); CREATE TABLE spool ( username varchar(250) NOT NULL, - xml text NOT NULL, + xml BLOB NOT NULL, seq BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE, created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB CHARACTER SET utf8; -- cgit v1.2.3