Merge branch '2.3' into develop

This commit is contained in:
Johan Wikman
2019-05-03 13:48:57 +03:00
19 changed files with 517 additions and 21 deletions

View File

@ -23,6 +23,7 @@ module=masking
rules=/home/vagrant/masking_auto_firewall.json
warn_type_mismatch=always
large_payload=ignore
treat_string_arg_as_field=false
[RWS]
type=service

View File

@ -0,0 +1,2 @@
SELECT CONCAT(x1) FROM t1;
SELECT CONCAT("x1") FROM t1;

View File

@ -1,3 +1,4 @@
update t1 set x1=1 where fl=0;
SELECT x1 FROM t1;
select t1.x1 as 'something' from t1 as t1 limit 1;
select t1.x1 as 'something' from t1 as t1 limit 1;
SELECT "x1" FROM t1;

View File

@ -0,0 +1,6 @@
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (x1 TEXT, x2 TEXT);
select sleep(5);
SELECT x1 FROM t1;
SELECT x2 FROM t1;
SELECT CONCAT(x2) FROM t1;

View File

@ -0,0 +1,2 @@
rule test19 match function concat columns x1
users %@% match any rules test19

View File

@ -44,7 +44,7 @@ int main(int argc, char* argv[])
Test->maxscales->access_homedir[0]);
sprintf(rules_dir, "%s/fw/", test_dir);
int N = 18;
int N = 19;
int i;
for (i = 1; i < N + 1; i++)

View File

@ -74,8 +74,6 @@ void test_one_ps(TestConnections& test, const char* zQuery, Expect expect)
void run(TestConnections& test)
{
init(test);
MYSQL* pMysql = test.maxscales->conn_rwsplit[0];
int rv;
@ -130,6 +128,38 @@ void run(TestConnections& test)
test_one(test, "select * FROM (select * from masking_auto_firewall) tbl", Expect::FAILURE);
}
void run_ansi_quotes(TestConnections& test)
{
// This SHOULD go through as we have 'treat_string_arg_as_field=false"
test_one(test, "select concat(\"a\") from masking_auto_firewall", Expect::SUCCESS);
Connection c = test.maxscales->rwsplit();
c.connect();
test.expect(c.query("SET @@SQL_MODE = CONCAT(@@SQL_MODE, ',ANSI_QUOTES')"),
"Could not turn on 'ANSI_QUOTES'");
// This SHOULD still go through as we still have 'treat_string_arg_as_field=false"
test_one(test, "select concat(\"a\") from masking_auto_firewall", Expect::SUCCESS);
// Let's turn on 'treat_string_arg_as_field=true'
test.maxscales->ssh_node(0,
"sed -i -e "
"'s/treat_string_arg_as_field=false/treat_string_arg_as_field=true/' "
"/etc/maxscale.cnf",
true);
// and restart MaxScale
test.maxscales->restart();
// This should NOT go through as we have 'treat_string_arg_as_field=true" and ANSI_QUOTES.
test_one(test, "select concat(\"a\") from masking_auto_firewall", Expect::FAILURE);
// Have to reconnect as we restarted MaxScale.
c.connect();
test.expect(c.query("SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'ANSI_QUOTES', '')"),
"Could not turn off 'ANSI_QUOTES'");
}
}
int main(int argc, char* argv[])
@ -151,7 +181,9 @@ int main(int argc, char* argv[])
if (test.maxscales->connect_rwsplit() == 0)
{
init(test);
run(test);
run_ansi_quotes(test);
}
else
{