diff options
-rw-r--r-- | mysql-test/r/symlink.result | 11 | ||||
-rw-r--r-- | mysql-test/t/symlink.test | 16 | ||||
-rw-r--r-- | sql/sql_parse.cc | 6 |
3 files changed, 30 insertions, 3 deletions
diff --git a/mysql-test/r/symlink.result b/mysql-test/r/symlink.result index 20736aec47f..22b64cc346c 100644 --- a/mysql-test/r/symlink.result +++ b/mysql-test/r/symlink.result @@ -213,3 +213,14 @@ t2 CREATE TABLE `t2` ( PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop tables t1, t2; +# +# Test for bug #25514146 DB_NAME IS IGNORED WHEN CREATING TABLE +# WITH DATA DIRECTORY +# +# Make sure we have no current database +CREATE DATABASE x; +USE x; +DROP DATABASE x; +CREATE TABLE test.t1(id INT(11)) ENGINE MYISAM +DATA DIRECTORY "MYSQLTEST_VARDIR/tmp"; +DROP TABLE test.t1; diff --git a/mysql-test/t/symlink.test b/mysql-test/t/symlink.test index 5109137e564..5916d04875b 100644 --- a/mysql-test/t/symlink.test +++ b/mysql-test/t/symlink.test @@ -298,3 +298,19 @@ show create table t1; create table t2 like t1; show create table t2; drop tables t1, t2; + +--echo # +--echo # Test for bug #25514146 DB_NAME IS IGNORED WHEN CREATING TABLE +--echo # WITH DATA DIRECTORY +--echo # + +--echo # Make sure we have no current database +CREATE DATABASE x; +USE x; +DROP DATABASE x; + +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval CREATE TABLE test.t1(id INT(11)) ENGINE MYISAM +DATA DIRECTORY "$MYSQLTEST_VARDIR/tmp"; + +DROP TABLE test.t1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 18cb758c9b5..86763b6e3de 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2425,7 +2425,7 @@ case SQLCOM_PREPARE: if (((lex->create_info.used_fields & HA_CREATE_USED_DATADIR) != 0 || (lex->create_info.used_fields & HA_CREATE_USED_INDEXDIR) != 0) && - check_access(thd, FILE_ACL, NULL, NULL, NULL, FALSE, FALSE)) + check_access(thd, FILE_ACL, any_db, NULL, NULL, FALSE, FALSE)) { res= 1; my_error(ER_SPECIFIC_ACCESS_DENIED_ERROR, MYF(0), "FILE"); @@ -2470,7 +2470,7 @@ case SQLCOM_PREPARE: { partition_info *part_info= thd->lex->part_info; if (part_info != NULL && has_external_data_or_index_dir(*part_info) && - check_access(thd, FILE_ACL, NULL, NULL, NULL, FALSE, FALSE)) + check_access(thd, FILE_ACL, any_db, NULL, NULL, FALSE, FALSE)) { res= -1; goto end_with_restore_list; |