summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <gluh@eagle.intranet.mysql.r18.ru>2005-10-07 14:16:44 +0500
committerunknown <gluh@eagle.intranet.mysql.r18.ru>2005-10-07 14:16:44 +0500
commit9ea8ce72ff73614191ab770812087e5f9629ac85 (patch)
treea805b676320dd81004ea2eae71ee99289c9c5360
parenta9363ce9c3d7569ea00384a71829a21ecebadff0 (diff)
downloadmariadb-git-9ea8ce72ff73614191ab770812087e5f9629ac85.tar.gz
Fix for bug#13202 SELECT * INTO OUTFILE ... FROM information_schema.schemata now fails
allow select into outfile from I_S tables it is enough to add FILE_ACL for I_S tables only to 'check_table_access' function as we use 'any_db' for 'check_access' function in places where FILE_ACL is required mysql-test/t/outfile.test: Fix for bug#13202 SELECT * INTO OUTFILE ... FROM information_schema.schemata now fails test case
-rw-r--r--mysql-test/t/outfile.test18
-rw-r--r--sql/sql_parse.cc2
2 files changed, 19 insertions, 1 deletions
diff --git a/mysql-test/t/outfile.test b/mysql-test/t/outfile.test
index a74bebe1460..37e96d9d38d 100644
--- a/mysql-test/t/outfile.test
+++ b/mysql-test/t/outfile.test
@@ -65,3 +65,21 @@ EXPLAIN
DROP TABLE t1;
# End of 4.1 tests
+
+#
+# Bug#13202 SELECT * INTO OUTFILE ... FROM information_schema.schemata now fails
+#
+disable_query_log;
+eval SELECT * INTO OUTFILE "$MYSQL_TEST_DIR/var/tmp/outfile-test.4"
+FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
+FROM information_schema.schemata LIMIT 0, 5;
+# enable_query_log;
+--exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.4
+
+use information_schema;
+# disable_query_log;
+eval SELECT * INTO OUTFILE "$MYSQL_TEST_DIR/var/tmp/outfile-test.4"
+FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
+FROM schemata LIMIT 0, 5;
+enable_query_log;
+--exec rm $MYSQL_TEST_DIR/var/tmp/outfile-test.4
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 57b7c387ac9..b70409704a2 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -5002,7 +5002,7 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables,
for (; tables; tables= tables->next_global)
{
if (tables->schema_table &&
- (want_access & ~(SELECT_ACL | EXTRA_ACL)))
+ (want_access & ~(SELECT_ACL | EXTRA_ACL | FILE_ACL)))
{
if (!no_errors)
my_error(ER_DBACCESS_DENIED_ERROR, MYF(0),