#At file:///home/malff/BZR_TREE/mysql-trunk-bugfixing-cleanup/ based on revid:marc.alff@stripped
3116 Marc Alff 2010-07-15
Bug#52586 Misleading error message on attempt to access a P_S table using a wrong name
Backport from mysql-next-mr (5.6) to mysql-trunk (5.5)
modified:
mysql-test/suite/perfschema/r/misc.result
mysql-test/suite/perfschema/t/misc.test
storage/perfschema/pfs_engine_table.cc
=== modified file 'mysql-test/suite/perfschema/r/misc.result'
--- a/mysql-test/suite/perfschema/r/misc.result 2010-02-26 17:39:57 +0000
+++ b/mysql-test/suite/perfschema/r/misc.result 2010-07-16 00:50:39 +0000
@@ -25,3 +25,5 @@ drop table test.ghost;
select * from performance_schema.FILE_INSTANCES
where file_name like "%ghost%";
FILE_NAME EVENT_NAME OPEN_COUNT
+select * from performance_schema.no_such_table;
+ERROR 42S02: Table 'performance_schema.no_such_table' doesn't exist
=== modified file 'mysql-test/suite/perfschema/t/misc.test'
--- a/mysql-test/suite/perfschema/t/misc.test 2010-03-16 14:19:45 +0000
+++ b/mysql-test/suite/perfschema/t/misc.test 2010-07-16 00:50:39 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2009 Sun Microsystems, Inc
+# Copyright (c) 2009, 2010, 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
@@ -10,15 +10,14 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
# Tests for PERFORMANCE_SCHEMA
# Miscelaneous
--source include/not_embedded.inc
--source include/have_perfschema.inc
---source include/not_var_link.inc
#
# Bug#45496 Performance schema: assertion fails in
@@ -77,3 +76,10 @@ drop table test.ghost;
select * from performance_schema.FILE_INSTANCES
where file_name like "%ghost%";
+#
+# Bug#52586 Misleading error message on attempt to access
+# a P_S table using a wrong name
+
+--error ER_NO_SUCH_TABLE
+select * from performance_schema.no_such_table;
+
=== modified file 'storage/perfschema/pfs_engine_table.cc'
--- a/storage/perfschema/pfs_engine_table.cc 2010-07-16 00:28:52 +0000
+++ b/storage/perfschema/pfs_engine_table.cc 2010-07-16 00:50:39 +0000
@@ -466,7 +466,22 @@ PFS_unknown_acl pfs_unknown_acl;
ACL_internal_access_result
PFS_unknown_acl::check(ulong want_access, ulong *save_priv) const
{
- return ACL_INTERNAL_ACCESS_DENIED;
+ const ulong always_forbidden= INSERT_ACL | UPDATE_ACL | DELETE_ACL
+ | CREATE_ACL | REFERENCES_ACL | INDEX_ACL | ALTER_ACL
+ | CREATE_VIEW_ACL | TRIGGER_ACL | LOCK_TABLES_ACL;
+
+ if (unlikely(want_access & always_forbidden))
+ return ACL_INTERNAL_ACCESS_DENIED;
+
+ /*
+ There is no point in hidding (by enforcing ACCESS_DENIED for SELECT_ACL
+ on performance_schema.*) tables that do not exist anyway.
+ When SELECT_ACL is granted on performance_schema.* or *.*,
+ SELECT * from performance_schema.wrong_table
+ will fail with a more understandable ER_NO_SUCH_TABLE error,
+ instead of ER_TABLEACCESS_DENIED_ERROR.
+ */
+ return ACL_INTERNAL_ACCESS_CHECK_GRANT;
}
/**
Attachment: [text/bzr-bundle] bzr/marc.alff@oracle.com-20100716005039-xq2skix202jenslo.bundle
| Thread |
|---|
| • bzr commit into mysql-trunk-bugfixing branch (marc.alff:3116) Bug#52586 | Marc Alff | 16 Jul |