Merge branch '2.3' into develop
This commit is contained in:
@ -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
|
||||
|
||||
2
maxscale-system-test/fw/deny19
Normal file
2
maxscale-system-test/fw/deny19
Normal file
@ -0,0 +1,2 @@
|
||||
SELECT CONCAT(x1) FROM t1;
|
||||
SELECT CONCAT("x1") FROM t1;
|
||||
@ -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;
|
||||
|
||||
6
maxscale-system-test/fw/pass19
Normal file
6
maxscale-system-test/fw/pass19
Normal 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;
|
||||
2
maxscale-system-test/fw/rules19
Normal file
2
maxscale-system-test/fw/rules19
Normal file
@ -0,0 +1,2 @@
|
||||
rule test19 match function concat columns x1
|
||||
users %@% match any rules test19
|
||||
@ -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++)
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user