List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:August 21 2009 2:58pm
Subject:bzr push into mysql-5.4 branch (joro:3544 to 3545)
View as plain text  
 3545 Georgi Kodinov	2009-08-21 [merge]
      automerge

    modified:
      mysql-test/r/view_grant.result
      mysql-test/t/view_grant.test
      sql/sql_acl.cc
      sql/sql_parse.cc
      sql/table.h
 3544 Ramil Kalimullin	2009-08-21 [merge]
      Manual merge.

    modified:
      mysql-test/r/handler_myisam.result
      mysql-test/t/handler_myisam.test
      sql/sql_delete.cc
=== modified file 'mysql-test/r/view_grant.result'
--- a/mysql-test/r/view_grant.result	2009-08-20 14:13:14 +0000
+++ b/mysql-test/r/view_grant.result	2009-08-21 14:47:56 +0000
@@ -938,30 +938,6 @@ DROP USER foo;
 DROP VIEW db1.v1;
 DROP TABLE db1.t1;
 DROP DATABASE db1;
-#
-# Bug #46019: ERROR 1356 When selecting from within another 
-#  view that has Group By
-#
-CREATE DATABASE db1;
-USE db1;
-CREATE TABLE t1 (a INT);
-CREATE SQL SECURITY INVOKER VIEW v1 AS 
-SELECT a FROM t1 GROUP BY a;
-CREATE SQL SECURITY INVOKER VIEW v2 AS
-SELECT a FROM v1;
-CREATE USER u1;
-GRANT SELECT ON TABLE t1 TO u1;
-GRANT SELECT, SHOW VIEW ON TABLE v1 TO u1;
-GRANT SELECT, SHOW VIEW ON TABLE v2 TO u1;
-SELECT a FROM v1;
-a
-SELECT a FROM v2;
-a
-DROP USER u1;
-DROP VIEW v1,v2;
-DROP TABLE t1;
-USE test;
-DROP DATABASE db1;
 End of 5.0 tests.
 DROP VIEW IF EXISTS v1;
 DROP TABLE IF EXISTS t1;

=== modified file 'mysql-test/t/view_grant.test'
--- a/mysql-test/t/view_grant.test	2009-08-20 14:13:14 +0000
+++ b/mysql-test/t/view_grant.test	2009-08-21 14:47:56 +0000
@@ -1234,41 +1234,6 @@ DROP VIEW db1.v1;
 DROP TABLE db1.t1;
 DROP DATABASE db1;
 
---echo #
---echo # Bug #46019: ERROR 1356 When selecting from within another 
---echo #  view that has Group By
---echo #
-
-CREATE DATABASE db1;
-USE db1;
-
-CREATE TABLE t1 (a INT);
-
-CREATE SQL SECURITY INVOKER VIEW v1 AS 
- SELECT a FROM t1 GROUP BY a;
-
-CREATE SQL SECURITY INVOKER VIEW v2 AS
- SELECT a FROM v1;
-
-CREATE USER u1;
-
-GRANT SELECT ON TABLE t1 TO u1;
-GRANT SELECT, SHOW VIEW ON TABLE v1 TO u1;
-GRANT SELECT, SHOW VIEW ON TABLE v2 TO u1;
-
-CONNECT (u1, localhost, u1,,db1);
-CONNECTION u1;
-
-SELECT a FROM v1;
-SELECT a FROM v2;
-
-CONNECTION default;
-DISCONNECT u1;
-DROP USER u1;
-DROP VIEW v1,v2;
-DROP TABLE t1;
-USE test;
-DROP DATABASE db1;
 --echo End of 5.0 tests.
 
 

=== modified file 'sql/sql_acl.cc'
--- a/sql/sql_acl.cc	2009-08-20 14:13:14 +0000
+++ b/sql/sql_acl.cc	2009-08-21 14:47:56 +0000
@@ -3948,15 +3948,11 @@ bool check_grant(THD *thd, ulong want_ac
       continue;                                 // ok
 
     if (!(~table->grant.privilege & want_access) ||
-        (table->is_anonymous_derived_table() &&
-        table->is_non_materialized_derived_table()) || table->schema_table)
+        table->is_anonymous_derived_table() || table->schema_table)
     {
       /*
         It is subquery in the FROM clause. VIEW set table->derived after
-        table opening, but this function is mostly called before table opening.
-        When it's called after table opening e.g. for nested views with 
-        materialization we shoud check the materialized table for access as 
-        any other table.
+        table opening, but this function always called before table opening.
       */
       if (!table->referencing_view)
       {
@@ -3969,7 +3965,6 @@ bool check_grant(THD *thd, ulong want_ac
       }
       continue;
     }
-
     if (!(grant_table= table_hash_search(sctx->host, sctx->ip,
                                          table->get_db_name(), sctx->priv_user,
                                          table->get_table_name(), FALSE)))

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2009-08-20 14:13:14 +0000
+++ b/sql/sql_parse.cc	2009-08-21 14:47:56 +0000
@@ -4974,8 +4974,7 @@ bool check_single_table_access(THD *thd,
   if (!(all_tables->belong_to_view &&
         (thd->lex->sql_command == SQLCOM_SHOW_FIELDS)) &&
       !(all_tables->view &&
-        all_tables->effective_algorithm == VIEW_ALGORITHM_TMPTABLE &&
-        all_tables->is_non_materialized_derived_table()) &&
+        all_tables->effective_algorithm == VIEW_ALGORITHM_TMPTABLE) &&
       check_grant(thd, privilege, all_tables, 0, 1, no_errors))
     goto deny;
 

=== modified file 'sql/table.h'
--- a/sql/table.h	2009-08-20 14:13:14 +0000
+++ b/sql/table.h	2009-08-21 14:47:56 +0000
@@ -1495,15 +1495,6 @@ struct TABLE_LIST
   bool is_anonymous_derived_table() const { return derived && !view; }
 
   /**
-     @brief True if this TABLE_LIST represents an not yet materialized 
-     derived table, i.e. the result of a subquery or view execution.
-  */
-  bool is_non_materialized_derived_table() const
-  {
-    return derived && !derived_result;
-  }
-
-  /**
      @brief Returns the name of the database that the referenced table belongs
      to.
   */


Attachment: [text/bzr-bundle] bzr/joro@sun.com-20090821144756-2981l28cdbyrcmtp.bundle
Thread
bzr push into mysql-5.4 branch (joro:3544 to 3545) Georgi Kodinov21 Aug