From: Alexander Nozdrin Date: August 19 2010 5:38pm Subject: bzr commit into mysql-5.5-bugfixing branch (alik:3114) Bug#27480 List-Archive: http://lists.mysql.com/commits/116285 X-Bug: 27480 Message-Id: <20100819173834.D5D87408BF@quad> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_vZhLldz+7nl11ERG2qFQxQ)" --Boundary_(ID_vZhLldz+7nl11ERG2qFQxQ) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///mnt/raid/alik/MySQL/bzr/00/bug27480/mysql-5.5-runtime-bug27480.2/ based on revid:jon.hauglid@stripped 3114 Alexander Nozdrin 2010-08-19 Bug#27480 (Extend CREATE TEMPORARY TABLES privilege to allow temp table operations) -- prerequisite patch #1: move a piece of code that sets TABLE instance attributes after it was successfully opened into a separate function. This function will be reused in the following patches. modified: sql/sql_base.cc === modified file 'sql/sql_base.cc' --- a/sql/sql_base.cc 2010-08-19 09:33:37 +0000 +++ b/sql/sql_base.cc 2010-08-19 17:38:24 +0000 @@ -2173,6 +2173,56 @@ bool rename_temporary_table(THD* thd, TA DBUG_RETURN(0); } +static void set_table_attributes_after_opening(THD *thd, + TABLE_LIST *table_list, + TABLE *table) +{ + DBUG_ASSERT(table->s->ref_count > 0 || table->s->tmp_table != NO_TMP_TABLE); + + if (thd->lex->need_correct_ident()) + table->alias_name_used= my_strcasecmp(table_alias_charset, + table->s->table_name.str, + table_list->alias); + /* Fix alias if table name changes. */ + if (strcmp(table->alias, table_list->alias)) + { + uint length= (uint) strlen(table_list->alias)+1; + table->alias= (char*) my_realloc((char*) table->alias, length, + MYF(MY_WME)); + memcpy((char*) table->alias, table_list->alias, length); + } + + table->tablenr= thd->current_tablenr++; + table->used_fields= 0; + table->const_table= 0; + table->null_row= 0; + table->maybe_null= 0; + table->force_index= 0; + table->force_index_order= 0; + table->force_index_group= 0; + table->status= STATUS_NO_RECORD; + table->insert_values= 0; + table->fulltext_searched= 0; + table->file->ft_handler= 0; + table->reginfo.impossible_range= 0; + + /* Catch wrong handling of the auto_increment_field_not_null. */ + DBUG_ASSERT(!table->auto_increment_field_not_null); + table->auto_increment_field_not_null= FALSE; + + if (table->timestamp_field) + table->timestamp_field_type= table->timestamp_field->get_auto_set_type(); + + table->pos_in_table_list= table_list; + + table->clear_column_bitmaps(); + + DBUG_ASSERT(table->key_read == 0); + + /* Tables may be reused in a sub statement. */ + DBUG_ASSERT(! table->file->extra(HA_EXTRA_IS_ATTACHED_CHILDREN)); +} + /** Force all other threads to stop using the table by upgrading @@ -3016,41 +3066,11 @@ retry_share: table->reginfo.lock_type=TL_READ; /* Assume read */ reset: - DBUG_ASSERT(table->s->ref_count > 0 || table->s->tmp_table != NO_TMP_TABLE); - - if (thd->lex->need_correct_ident()) - table->alias_name_used= my_strcasecmp(table_alias_charset, - table->s->table_name.str, alias); - /* Fix alias if table name changes */ - if (strcmp(table->alias, alias)) - { - uint length=(uint) strlen(alias)+1; - table->alias= (char*) my_realloc((char*) table->alias, length, - MYF(MY_WME)); - memcpy((char*) table->alias, alias, length); - } - table->tablenr=thd->current_tablenr++; - table->used_fields=0; - table->const_table=0; - table->null_row= table->maybe_null= 0; - table->force_index= table->force_index_order= table->force_index_group= 0; - table->status=STATUS_NO_RECORD; - table->insert_values= 0; - table->fulltext_searched= 0; - table->file->ft_handler= 0; - table->reginfo.impossible_range= 0; - /* Catch wrong handling of the auto_increment_field_not_null. */ - DBUG_ASSERT(!table->auto_increment_field_not_null); - table->auto_increment_field_not_null= FALSE; - if (table->timestamp_field) - table->timestamp_field_type= table->timestamp_field->get_auto_set_type(); - table->pos_in_table_list= table_list; table_list->updatable= 1; // It is not derived table nor non-updatable VIEW - table->clear_column_bitmaps(); table_list->table= table; - DBUG_ASSERT(table->key_read == 0); - /* Tables may be reused in a sub statement. */ - DBUG_ASSERT(! table->file->extra(HA_EXTRA_IS_ATTACHED_CHILDREN)); + + set_table_attributes_after_opening(thd, table_list, table); + DBUG_RETURN(FALSE); err_lock: --Boundary_(ID_vZhLldz+7nl11ERG2qFQxQ) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/alik@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/alik@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: alik@stripped # target_branch: file:///mnt/raid/alik/MySQL/bzr/00/bug27480/mysql-\ # 5.5-runtime-bug27480.2/ # testament_sha1: 56aab3298672fcb6e311e3102ebcc00a10b2dc0f # timestamp: 2010-08-19 21:38:34 +0400 # base_revision_id: jon.hauglid@stripped\ # p5qnczzbw9rxdpde # # Begin bundle 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 --Boundary_(ID_vZhLldz+7nl11ERG2qFQxQ)--