List:Commits« Previous MessageNext Message »
From:Martin Hansson Date:October 16 2009 11:21am
Subject:bzr commit into mysql-pe branch (martin.hansson:3665) Bug#46019
View as plain text  
#At file:///data0/martin/bzr/bug46019/6.0bt/ based on revid:joro@stripped

 3665 Martin Hansson	2009-10-16 [merge]
      Merge 5.1 -> pe
      - Bug#46019
      - Upmerge a merge changeset - no contents change.

    modified:
      mysql-test/r/view_grant.result
      mysql-test/t/view_grant.test
      sql/sql_parse.cc
=== modified file 'mysql-test/r/view_grant.result'
--- a/mysql-test/r/view_grant.result	2009-09-29 11:50:14 +0000
+++ b/mysql-test/r/view_grant.result	2009-10-16 11:20:54 +0000
@@ -1209,3 +1209,22 @@ Warnings:
 Note	1449	The user specified as a definer ('no_such_user'@'no_such_host') does not exist
 DROP TABLE t1;
 DROP VIEW v1;
+#
+# Bug #46019: ERROR 1356 When selecting from within another 
+#  view that has Group By
+#
+CREATE DATABASE mysqltest1;
+USE mysqltest1;
+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 mysqluser1;
+GRANT SELECT ON TABLE t1 TO mysqluser1;
+GRANT SELECT, SHOW VIEW ON TABLE v1 TO mysqluser1;
+GRANT SELECT, SHOW VIEW ON TABLE v2 TO mysqluser1;
+SELECT a FROM v1;
+a
+SELECT a FROM v2;
+a
+DROP USER mysqluser1;
+DROP DATABASE mysqltest1;

=== modified file 'mysql-test/t/view_grant.test'
--- a/mysql-test/t/view_grant.test	2009-09-29 11:50:14 +0000
+++ b/mysql-test/t/view_grant.test	2009-10-16 11:20:54 +0000
@@ -1503,3 +1503,29 @@ DROP VIEW v1;
 # Wait till we reached the initial number of concurrent sessions
 --source include/wait_until_count_sessions.inc
 
+--echo #
+--echo # Bug #46019: ERROR 1356 When selecting from within another 
+--echo #  view that has Group By
+--echo #
+CREATE DATABASE mysqltest1;
+USE mysqltest1;
+
+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 mysqluser1;
+
+GRANT SELECT ON TABLE t1 TO mysqluser1;
+GRANT SELECT, SHOW VIEW ON TABLE v1 TO mysqluser1;
+GRANT SELECT, SHOW VIEW ON TABLE v2 TO mysqluser1;
+
+--connect (mysqluser1, localhost, mysqluser1,,mysqltest1)
+SELECT a FROM v1;
+SELECT a FROM v2;
+
+--connection default
+--disconnect mysqluser1
+DROP USER mysqluser1;
+DROP DATABASE mysqltest1;

=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc	2009-10-08 13:16:06 +0000
+++ b/sql/sql_parse.cc	2009-10-16 11:20:54 +0000
@@ -5043,8 +5043,6 @@ bool check_single_table_access(THD *thd,
   /* Show only 1 table for check_grant */
   if (!(all_tables->belong_to_view &&
         (thd->lex->sql_command == SQLCOM_SHOW_FIELDS)) &&
-      !(all_tables->view &&
-        all_tables->effective_algorithm == VIEW_ALGORITHM_TMPTABLE) &&
       check_grant(thd, privilege, all_tables, 0, 1, no_errors))
     goto deny;
 


Attachment: [text/bzr-bundle] bzr/martin.hansson@sun.com-20091016112054-xivfenip3i6xpumc.bundle
Thread
bzr commit into mysql-pe branch (martin.hansson:3665) Bug#46019Martin Hansson16 Oct