List:Internals« Previous MessageNext Message »
From:gluh Date:April 26 2005 2:22pm
Subject:bk commit into 5.0 tree (gluh:1.1859) BUG#9838
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of gluh. When gluh does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1859 05/04/26 17:22:35 gluh@stripped +4 -0
  Fix for bug #9838: INFORMATION_SCHEMA.COLUMNS columns of granted views missing(2nd
version)

  sql/sql_show.cc
    1.238 05/04/26 17:22:30 gluh@stripped +2 -2
    Fix for bug #9838: INFORMATION_SCHEMA.COLUMNS columns of granted views missing
           use 'base_name', 'file_name' because 'tables->db', 'tables->tables' could
be invalid in
            case of view(derived tables).

  sql/sql_acl.cc
    1.148 05/04/26 17:22:30 gluh@stripped +5 -5
    Fix for bug #9838: INFORMATION_SCHEMA.COLUMNS columns of granted views missing
           increase grant_version in acl_init, mysql_table_grant
           table privileges should be taken into account when we calculate column
           grants

  mysql-test/t/information_schema.test
    1.34 05/04/26 17:22:30 gluh@stripped +5 -1
    Fix for bug #9838: INFORMATION_SCHEMA.COLUMNS columns of granted views missing

  mysql-test/r/information_schema.result
    1.47 05/04/26 17:22:30 gluh@stripped +7 -1
    Fix for bug #9838: INFORMATION_SCHEMA.COLUMNS columns of granted views missing

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	gluh
# Host:	eagle.intranet.mysql.r18.ru
# Root:	/home/gluh/MySQL/Bugs/mysql-5.0.9838

--- 1.147/sql/sql_acl.cc	Tue Mar 29 14:58:30 2005
+++ 1.148/sql/sql_acl.cc	Tue Apr 26 17:22:30 2005
@@ -63,8 +63,7 @@
 static HASH acl_check_hosts, column_priv_hash, proc_priv_hash;
 static DYNAMIC_ARRAY acl_wild_hosts;
 static hash_filo *acl_cache;
-static uint grant_version=0;
-static uint priv_version=0; /* Version of priv tables. incremented by acl_init */
+static uint grant_version=0; /* Version of priv tables. incremented by acl_init */
 static ulong get_access(TABLE *form,uint fieldnr, uint *next_field=0);
 static int acl_compare(ACL_ACCESS *a,ACL_ACCESS *b);
 static ulong get_sort(uint count,...);
@@ -153,7 +152,7 @@
     DBUG_RETURN(0); /* purecov: tested */
   }
 
-  priv_version++; /* Privileges updated */
+  grant_version++; /* Privileges updated */
   mysql_proc_table_exists= 1;			// Assume mysql.proc exists
 
   /*
@@ -2716,6 +2715,7 @@
   rw_wrlock(&LOCK_grant);
   MEM_ROOT *old_root= thd->mem_root;
   thd->mem_root= &memex;
+  grant_version++;
 
   while ((Str = str_list++))
   {
@@ -3684,9 +3684,9 @@
     grant_column= column_hash_search(grant_table, field_name,
                                      (uint) strlen(field_name));
     if (!grant_column)
-      priv= grant->privilege;
+      priv= (grant->privilege | grant_table->privs);
     else
-      priv= grant->privilege | grant_column->rights;
+      priv= (grant->privilege | grant_table->privs | grant_column->rights);
   }
   rw_unlock(&LOCK_grant);
   return priv;

--- 1.237/sql/sql_show.cc	Sun Apr 17 21:54:27 2005
+++ 1.238/sql/sql_show.cc	Tue Apr 26 17:22:30 2005
@@ -2300,8 +2300,8 @@
       uint col_access;
       check_access(thd,SELECT_ACL | EXTRA_ACL, base_name,
                    &tables->grant.privilege, 0, 0);
-      col_access= get_column_grant(thd, &tables->grant, tables->db,
-                                   tables->table_name,
+      col_access= get_column_grant(thd, &tables->grant, 
+                                   base_name, file_name,
                                    field->field_name) & COL_ACLS;
       if (lex->orig_sql_command != SQLCOM_SHOW_FIELDS  && !col_access)
         continue;

--- 1.46/mysql-test/r/information_schema.result	Thu Apr 14 11:04:11 2005
+++ 1.47/mysql-test/r/information_schema.result	Tue Apr 26 17:22:30 2005
@@ -154,16 +154,22 @@
 show columns from mysqltest.t1 where field like "%a%";
 Field	Type	Null	Key	Default	Extra
 a	int(11)	YES		NULL	
+create view mysqltest.v1 (c) as select a from mysqltest.t1;
 grant select (a) on mysqltest.t1 to mysqltest_2@localhost;
+grant select on mysqltest.v1 to mysqltest_2@localhost;
 select table_name, column_name, privileges from information_schema.columns 
 where table_schema = 'mysqltest' and table_name = 't1';
 table_name	column_name	privileges
 t1	a	select
+select table_name, column_name, privileges from information_schema.columns
+where table_schema = 'mysqltest' and table_name = 'v1';
+table_name	column_name	privileges
+v1	c	select
 show columns from mysqltest.t1;
 Field	Type	Null	Key	Default	Extra
 a	int(11)	YES		NULL	
 b	varchar(30)	YES	MUL	NULL	
-drop view v1;
+drop view v1, mysqltest.v1;
 drop tables mysqltest.t4, mysqltest.t1, t2, t3;
 drop database mysqltest;
 select * from information_schema.CHARACTER_SETS

--- 1.33/mysql-test/t/information_schema.test	Thu Apr 14 11:03:09 2005
+++ 1.34/mysql-test/t/information_schema.test	Tue Apr 26 17:22:30 2005
@@ -53,15 +53,19 @@
 and column_name= "a";
 show columns from mysqltest.t1 where field like "%a%";
 
+create view mysqltest.v1 (c) as select a from mysqltest.t1;
 grant select (a) on mysqltest.t1 to mysqltest_2@localhost;
+grant select on mysqltest.v1 to mysqltest_2@localhost;
 connect (user3,localhost,mysqltest_2,,);
 connection user3;
 select table_name, column_name, privileges from information_schema.columns 
 where table_schema = 'mysqltest' and table_name = 't1';
+select table_name, column_name, privileges from information_schema.columns
+where table_schema = 'mysqltest' and table_name = 'v1';
 show columns from mysqltest.t1;
 connection default;
 
-drop view v1;
+drop view v1, mysqltest.v1;
 drop tables mysqltest.t4, mysqltest.t1, t2, t3;
 drop database mysqltest;
 
Thread
bk commit into 5.0 tree (gluh:1.1859) BUG#9838gluh26 Apr