List:Commits« Previous MessageNext Message »
From:Marc Alff Date:July 16 2010 12:50am
Subject:bzr commit into mysql-trunk-bugfixing branch (marc.alff:3116) Bug#52586
View as plain text  
#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#52586Marc Alff16 Jul