1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#
# Tests that the character set setting is properly picked up by the
# session that reads the rules table.
#
# Query rewrite plugin was installed.
DELETE FROM query_rewrite.rewrite_rules;
INSERT INTO query_rewrite.rewrite_rules ( pattern, replacement )
VALUES ( 'SELECT * FROM mydb.mytable WHERE mycol = ?', 'select "rule1"' );
CALL query_rewrite.flush_rewrite_rules();
CREATE DATABASE mydb;
CREATE TABLE mydb.mytable ( mycol char(3), mycol2 CHAR(100) );
INSERT INTO mydb.mytable VALUES ( 'xxx', 'Not supposed to be seeing this.' );
SELECT * FROM mydb.mytable WHERE mycol = 'xxx';
rule1
rule1
Warnings:
Note 1105 Query 'SELECT * FROM mydb.mytable WHERE mycol = 'xxx'' rewritten to 'select "rule1"' by a query rewrite plugin
DROP DATABASE mydb;
# We now set the global value of the variable, this should not affect
# the plugin. It should copy the session value from our session.
SET @@global.character_set_client = utf8mb4;
SELECT * FROM mydb.mytable WHERE mycol = 'xxx';
rule1
rule1
Warnings:
Note 1105 Query 'SELECT * FROM mydb.mytable WHERE mycol = 'xxx'' rewritten to 'select "rule1"' by a query rewrite plugin
# Regenerating the digests should still work.
CALL query_rewrite.flush_rewrite_rules();
SELECT * FROM mydb.mytable WHERE mycol = 'xxx';
rule1
rule1
Warnings:
Note 1105 Query 'SELECT * FROM mydb.mytable WHERE mycol = 'xxx'' rewritten to 'select "rule1"' by a query rewrite plugin
# We now repeat the above test with a character set where the digests
# are known to differ. If we were lucky the last time, it will show now.
# The global setting should still be ignored.
SET @@global.character_set_client = latin1;
SELECT * FROM mydb.mytable WHERE mycol = 'xxx';
rule1
rule1
Warnings:
Note 1105 Query 'SELECT * FROM mydb.mytable WHERE mycol = 'xxx'' rewritten to 'select "rule1"' by a query rewrite plugin
# Regenerating the digests should still work.
CALL query_rewrite.flush_rewrite_rules();
SELECT * FROM mydb.mytable WHERE mycol = 'xxx';
rule1
rule1
Warnings:
Note 1105 Query 'SELECT * FROM mydb.mytable WHERE mycol = 'xxx'' rewritten to 'select "rule1"' by a query rewrite plugin
SET @@global.character_set_client = DEFAULT;
#
# This is perhaps an unwanted result, but the rules table-reading
# session can't access our session's setting.
#
SET @@session.character_set_client = utf8mb4;
DELETE FROM query_rewrite.rewrite_rules;
INSERT INTO query_rewrite.rewrite_rules ( pattern, replacement )
VALUES ( 'SELECT * FROM mydb.mytable WHERE mycol = ?', 'select "rule1"' );
CALL query_rewrite.flush_rewrite_rules();
CREATE DATABASE mydb;
CREATE TABLE mydb.mytable ( mycol char(3), mycol2 CHAR(100) );
INSERT INTO mydb.mytable VALUES ( 'xxx', 'Not supposed to be seeing this.' );
SELECT * FROM mydb.mytable WHERE mycol = 'xxx';
rule1
rule1
Warnings:
Note 1105 Query 'SELECT * FROM mydb.mytable WHERE mycol = 'xxx'' rewritten to 'select "rule1"' by a query rewrite plugin
DROP DATABASE mydb;
SET @@session.character_set_client = DEFAULT;
Warnings:
Warning 1620 Plugin is busy and will be uninstalled on shutdown
# Query rewrite plugin was queued for uninstalling.
|