Loading Docs/manual.texi +6 −0 Original line number Diff line number Diff line Loading @@ -51252,10 +51252,16 @@ not yet 100% confident in this code. @item Fixed core dump bug when using the @code{BINARY} cast on a @code{NULL} value. @item Fixed race condition when someone did a @code{GRANT} at the same time a new user logged in or did a @code{USE DATABASE}. @item Fixed bug in @code{ALTER TABLE} and @code{RENAME TABLE} when running with @code{-O lower_case_table_names=1} (typically on windows) when giving the table name in uppercase. @item Fixed that @code{-O lower_case_table_names=1} also converts database names to lower case. @item Fixed unlikely core dump with @code{SELECT ... ORDER BY ... LIMIT}. @item Changed @code{AND/OR} to report that they can return NULL. This fixes a sql/sql_acl.cc +15 −5 Original line number Diff line number Diff line Loading @@ -2033,6 +2033,7 @@ int mysql_table_grant (THD *thd, TABLE_LIST *table_list, while ((Str = str_list++)) { int error; GRANT_TABLE *grant_table; if (!Str->host.str) { Loading @@ -2047,8 +2048,11 @@ int mysql_table_grant (THD *thd, TABLE_LIST *table_list, continue; } /* Create user if needed */ if (replace_user_table(thd, tables[0].table, *Str, 0, revoke_grant, create_new_users)) pthread_mutex_lock(&acl_cache->lock); error=replace_user_table(thd, tables[0].table, *Str, 0, revoke_grant, create_new_users); pthread_mutex_unlock(&acl_cache->lock); if (error) { result= -1; // Remember error continue; // Add next user Loading @@ -2064,7 +2068,7 @@ int mysql_table_grant (THD *thd, TABLE_LIST *table_list, { my_printf_error(ER_NONEXISTING_TABLE_GRANT, ER(ER_NONEXISTING_TABLE_GRANT),MYF(0), Str->user.str, Str->host.str, table_list->alias); Str->user.str, Str->host.str, table_list->real_name); result= -1; continue; } Loading Loading @@ -2593,6 +2597,7 @@ bool check_grant_db(THD *thd,const char *db) ulong get_table_grant(THD *thd, TABLE_LIST *table) { uint privilege; char *user = thd->priv_user; const char *db = table->db ? table->db : thd->db; GRANT_TABLE *grant_table; Loading @@ -2604,8 +2609,9 @@ ulong get_table_grant(THD *thd, TABLE_LIST *table) table->grant.version=grant_version; if (grant_table) table->grant.privilege|= grant_table->privs; privilege= table->grant.privilege; pthread_mutex_unlock(&LOCK_grant); return table->grant.privilege; return privilege; } Loading Loading @@ -2716,6 +2722,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) if (send_fields(thd,field_list,1)) DBUG_RETURN(-1); pthread_mutex_lock(&LOCK_grant); VOID(pthread_mutex_lock(&acl_cache->lock)); /* Add first global access grants */ Loading Loading @@ -2971,13 +2978,16 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) thd->packet.length())) { error=-1; goto end; break; } } } } end: VOID(pthread_mutex_unlock(&acl_cache->lock)); pthread_mutex_unlock(&LOCK_grant); send_eof(&thd->net); DBUG_RETURN(error); } Loading sql/sql_show.cc +1 −1 Original line number Diff line number Diff line Loading @@ -424,7 +424,7 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild) /*************************************************************************** ** List all columns in a table ** List all columns in a table_list->real_name ***************************************************************************/ int Loading tests/grant.pl +1 −1 Original line number Diff line number Diff line Loading @@ -304,7 +304,7 @@ safe_query("revoke GRANT OPTION on $opt_database.test from $user",1); # safe_query("grant select(a) on $opt_database.test to $user"); user_query("show columns from test"); user_query("show full columns from test"); safe_query("grant insert (b), update (b) on $opt_database.test to $user"); user_query("select count(a) from test"); Loading sql/sql_udf.cc +1 −1 File changed.Contains only whitespace changes. Show changes Loading
Docs/manual.texi +6 −0 Original line number Diff line number Diff line Loading @@ -51252,10 +51252,16 @@ not yet 100% confident in this code. @item Fixed core dump bug when using the @code{BINARY} cast on a @code{NULL} value. @item Fixed race condition when someone did a @code{GRANT} at the same time a new user logged in or did a @code{USE DATABASE}. @item Fixed bug in @code{ALTER TABLE} and @code{RENAME TABLE} when running with @code{-O lower_case_table_names=1} (typically on windows) when giving the table name in uppercase. @item Fixed that @code{-O lower_case_table_names=1} also converts database names to lower case. @item Fixed unlikely core dump with @code{SELECT ... ORDER BY ... LIMIT}. @item Changed @code{AND/OR} to report that they can return NULL. This fixes a
sql/sql_acl.cc +15 −5 Original line number Diff line number Diff line Loading @@ -2033,6 +2033,7 @@ int mysql_table_grant (THD *thd, TABLE_LIST *table_list, while ((Str = str_list++)) { int error; GRANT_TABLE *grant_table; if (!Str->host.str) { Loading @@ -2047,8 +2048,11 @@ int mysql_table_grant (THD *thd, TABLE_LIST *table_list, continue; } /* Create user if needed */ if (replace_user_table(thd, tables[0].table, *Str, 0, revoke_grant, create_new_users)) pthread_mutex_lock(&acl_cache->lock); error=replace_user_table(thd, tables[0].table, *Str, 0, revoke_grant, create_new_users); pthread_mutex_unlock(&acl_cache->lock); if (error) { result= -1; // Remember error continue; // Add next user Loading @@ -2064,7 +2068,7 @@ int mysql_table_grant (THD *thd, TABLE_LIST *table_list, { my_printf_error(ER_NONEXISTING_TABLE_GRANT, ER(ER_NONEXISTING_TABLE_GRANT),MYF(0), Str->user.str, Str->host.str, table_list->alias); Str->user.str, Str->host.str, table_list->real_name); result= -1; continue; } Loading Loading @@ -2593,6 +2597,7 @@ bool check_grant_db(THD *thd,const char *db) ulong get_table_grant(THD *thd, TABLE_LIST *table) { uint privilege; char *user = thd->priv_user; const char *db = table->db ? table->db : thd->db; GRANT_TABLE *grant_table; Loading @@ -2604,8 +2609,9 @@ ulong get_table_grant(THD *thd, TABLE_LIST *table) table->grant.version=grant_version; if (grant_table) table->grant.privilege|= grant_table->privs; privilege= table->grant.privilege; pthread_mutex_unlock(&LOCK_grant); return table->grant.privilege; return privilege; } Loading Loading @@ -2716,6 +2722,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) if (send_fields(thd,field_list,1)) DBUG_RETURN(-1); pthread_mutex_lock(&LOCK_grant); VOID(pthread_mutex_lock(&acl_cache->lock)); /* Add first global access grants */ Loading Loading @@ -2971,13 +2978,16 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) thd->packet.length())) { error=-1; goto end; break; } } } } end: VOID(pthread_mutex_unlock(&acl_cache->lock)); pthread_mutex_unlock(&LOCK_grant); send_eof(&thd->net); DBUG_RETURN(error); } Loading
sql/sql_show.cc +1 −1 Original line number Diff line number Diff line Loading @@ -424,7 +424,7 @@ int mysqld_extend_show_tables(THD *thd,const char *db,const char *wild) /*************************************************************************** ** List all columns in a table ** List all columns in a table_list->real_name ***************************************************************************/ int Loading
tests/grant.pl +1 −1 Original line number Diff line number Diff line Loading @@ -304,7 +304,7 @@ safe_query("revoke GRANT OPTION on $opt_database.test from $user",1); # safe_query("grant select(a) on $opt_database.test to $user"); user_query("show columns from test"); user_query("show full columns from test"); safe_query("grant insert (b), update (b) on $opt_database.test to $user"); user_query("select count(a) from test"); Loading