From: Date: October 13 2006 10:31pm Subject: bk commit into 5.0 tree (cmiller:1.2305) BUG#14262 List-Archive: http://lists.mysql.com/commits/13684 X-Bug: 14262 Message-Id: <20061013203141.7444E83049@zippy> Below is the list of changes that have just been committed into a local 5.0 repository of cmiller. When cmiller 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@stripped, 2006-10-13 16:31:36-04:00, cmiller@stripped +8 -0 Revert patch for Bug#14262 . sql/sp.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +0 -23 Revert patch for Bug#14262 . sql/sql_acl.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +1 -66 Revert patch for Bug#14262 . sql/sql_db.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +0 -5 Revert patch for Bug#14262 . sql/sql_parse.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +105 -24 Revert patch for Bug#14262 . sql/sql_table.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +7 -8 Revert patch for Bug#14262 . sql/sql_trigger.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +3 -5 Revert patch for Bug#14262 . sql/sql_view.cc@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +4 -56 Revert patch for Bug#14262 . sql/sql_view.h@stripped, 2006-10-13 16:31:34-04:00, cmiller@stripped +1 -1 Revert patch for Bug#14262 . # 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: cmiller # Host: zippy.cornsilk.net # Root: /home/cmiller/work/mysql/bug14262/my50-bug14262 --- 1.212/sql/sql_acl.cc 2006-10-13 16:31:40 -04:00 +++ 1.213/sql/sql_acl.cc 2006-10-13 16:31:40 -04:00 @@ -2999,22 +2999,9 @@ bool mysql_table_grant(THD *thd, TABLE_L grant_option=TRUE; thd->mem_root= old_root; pthread_mutex_unlock(&acl_cache->lock); - - if (!result) /* success */ - { - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - } - rw_unlock(&LOCK_grant); - - if (!result) /* success */ + if (!result) send_ok(thd); - /* Tables are automatically closed */ DBUG_RETURN(result); } @@ -3166,21 +3153,9 @@ bool mysql_routine_grant(THD *thd, TABLE grant_option=TRUE; thd->mem_root= old_root; pthread_mutex_unlock(&acl_cache->lock); - if (!result && !no_error) - { - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - } - rw_unlock(&LOCK_grant); - if (!result && !no_error) send_ok(thd); - /* Tables are automatically closed */ DBUG_RETURN(result); } @@ -3278,23 +3253,11 @@ bool mysql_grant(THD *thd, const char *d } } VOID(pthread_mutex_unlock(&acl_cache->lock)); - - if (!result) - { - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - } - rw_unlock(&LOCK_grant); close_thread_tables(thd); if (!result) send_ok(thd); - DBUG_RETURN(result); } @@ -5288,13 +5251,6 @@ bool mysql_create_user(THD *thd, List lock)); - - if (mysql_bin_log.is_open()) - { - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - rw_unlock(&LOCK_grant); close_thread_tables(thd); if (result) @@ -5351,13 +5307,6 @@ bool mysql_drop_user(THD *thd, List lock)); - - if (mysql_bin_log.is_open()) - { - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - rw_unlock(&LOCK_grant); close_thread_tables(thd); if (result) @@ -5427,13 +5376,6 @@ bool mysql_rename_user(THD *thd, List lock)); - - if (mysql_bin_log.is_open()) - { - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - rw_unlock(&LOCK_grant); close_thread_tables(thd); if (result) @@ -5607,13 +5549,6 @@ bool mysql_revoke_all(THD *thd, List lock)); - - if (mysql_bin_log.is_open()) - { - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - rw_unlock(&LOCK_grant); close_thread_tables(thd); --- 1.132/sql/sql_db.cc 2006-10-13 16:31:40 -04:00 +++ 1.133/sql/sql_db.cc 2006-10-13 16:31:40 -04:00 @@ -585,7 +585,6 @@ bool mysql_create_db(THD *thd, char *db, qinfo.db = db; qinfo.db_len = strlen(db); - /* These DDL methods and logging protected with LOCK_mysql_create_db */ mysql_bin_log.write(&qinfo); } send_ok(thd, result); @@ -657,7 +656,6 @@ bool mysql_alter_db(THD *thd, const char qinfo.db_len = strlen(db); thd->clear_error(); - /* These DDL methods and logging protected with LOCK_mysql_create_db */ mysql_bin_log.write(&qinfo); } send_ok(thd, result); @@ -781,7 +779,6 @@ bool mysql_rm_db(THD *thd,char *db,bool qinfo.db_len = strlen(db); thd->clear_error(); - /* These DDL methods and logging protected with LOCK_mysql_create_db */ mysql_bin_log.write(&qinfo); } thd->server_status|= SERVER_STATUS_DB_DROPPED; @@ -808,7 +805,6 @@ bool mysql_rm_db(THD *thd,char *db,bool tbl_name_len= strlen(tbl->table_name) + 3; if (query_pos + tbl_name_len + 1 >= query_end) { - /* These DDL methods and logging protected with LOCK_mysql_create_db */ write_to_binlog(thd, query, query_pos -1 - query, db, db_len); query_pos= query_data_start; } @@ -821,7 +817,6 @@ bool mysql_rm_db(THD *thd,char *db,bool if (query_pos != query_data_start) { - /* These DDL methods and logging protected with LOCK_mysql_create_db */ write_to_binlog(thd, query, query_pos -1 - query, db, db_len); } } --- 1.584/sql/sql_parse.cc 2006-10-13 16:31:40 -04:00 +++ 1.585/sql/sql_parse.cc 2006-10-13 16:31:41 -04:00 @@ -3209,7 +3209,6 @@ end_with_restore_list: /* ! we write after unlocking the table */ if (!res && !lex->no_write_to_binlog) { - /* Presumably, REPAIR and binlog writing doesn't require synchronization */ if (mysql_bin_log.is_open()) { thd->clear_error(); // No binlog error generated @@ -3244,7 +3243,6 @@ end_with_restore_list: /* ! we write after unlocking the table */ if (!res && !lex->no_write_to_binlog) { - /* Presumably, ANALYZE and binlog writing doesn't require synchronization */ if (mysql_bin_log.is_open()) { thd->clear_error(); // No binlog error generated @@ -3270,7 +3268,6 @@ end_with_restore_list: /* ! we write after unlocking the table */ if (!res && !lex->no_write_to_binlog) { - /* Presumably, OPTIMIZE and binlog writing doesn't require synchronization */ if (mysql_bin_log.is_open()) { thd->clear_error(); // No binlog error generated @@ -3557,7 +3554,6 @@ end_with_restore_list: /* So that DROP TEMPORARY TABLE gets to binlog at commit/rollback */ thd->options|= OPTION_STATUS_NO_TRANS_UPDATE; } - /* DDL and binlog write order protected by LOCK_open */ res= mysql_rm_table(thd, first_table, lex->drop_if_exists, lex->drop_temporary); } @@ -3846,9 +3842,15 @@ end_with_restore_list: break; if (end_active_trans(thd)) goto error; - /* Conditionally writes to binlog */ if (!(res= mysql_create_user(thd, lex->users_list))) + { + if (mysql_bin_log.is_open()) + { + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); + } break; } case SQLCOM_DROP_USER: @@ -3858,9 +3860,15 @@ end_with_restore_list: break; if (end_active_trans(thd)) goto error; - /* Conditionally writes to binlog */ if (!(res= mysql_drop_user(thd, lex->users_list))) + { + if (mysql_bin_log.is_open()) + { + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); + } break; } case SQLCOM_RENAME_USER: @@ -3870,9 +3878,15 @@ end_with_restore_list: break; if (end_active_trans(thd)) goto error; - /* Conditionally writes to binlog */ if (!(res= mysql_rename_user(thd, lex->users_list))) + { + if (mysql_bin_log.is_open()) + { + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); + } break; } case SQLCOM_REVOKE_ALL: @@ -3880,9 +3894,15 @@ end_with_restore_list: if (check_access(thd, UPDATE_ACL, "mysql", 0, 1, 1, 0) && check_global_access(thd,CREATE_USER_ACL)) break; - /* Conditionally writes to binlog */ if (!(res = mysql_revoke_all(thd, lex->users_list))) + { + if (mysql_bin_log.is_open()) + { + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); + } break; } case SQLCOM_REVOKE: @@ -3941,7 +3961,6 @@ end_with_restore_list: check_grant_routine(thd, grants | GRANT_ACL, all_tables, lex->type == TYPE_ENUM_PROCEDURE, 0)) goto error; - /* Conditionally writes to binlog */ res= mysql_routine_grant(thd, all_tables, lex->type == TYPE_ENUM_PROCEDURE, lex->users_list, grants, @@ -3954,11 +3973,16 @@ end_with_restore_list: GRANT_ACL), all_tables, 0, UINT_MAX, 0)) goto error; - /* Conditionally writes to binlog */ res= mysql_table_grant(thd, all_tables, lex->users_list, lex->columns, lex->grant, lex->sql_command == SQLCOM_REVOKE); } + if (!res && mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } } else { @@ -3969,11 +3993,16 @@ end_with_restore_list: goto error; } else - /* Conditionally writes to binlog */ res = mysql_grant(thd, select_lex->db, lex->users_list, lex->grant, lex->sql_command == SQLCOM_REVOKE); if (!res) { + if (mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } if (lex->sql_command == SQLCOM_GRANT) { List_iterator str_list(lex->users_list); @@ -4011,7 +4040,6 @@ end_with_restore_list: We WANT to write and we CAN write. ! we write after unlocking the table. */ - /* Presumably, RESET and binlog writing doesn't require synchronization */ if (!lex->no_write_to_binlog && write_to_binlog) { if (mysql_bin_log.is_open()) @@ -4532,16 +4560,20 @@ end_with_restore_list: already puts on CREATE FUNCTION. */ if (lex->sql_command == SQLCOM_ALTER_PROCEDURE) - /* Conditionally writes to binlog */ result= sp_update_procedure(thd, lex->spname, &lex->sp_chistics); else - /* Conditionally writes to binlog */ result= sp_update_function(thd, lex->spname, &lex->sp_chistics); } } switch (result) { case SP_OK: + if (mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); break; case SP_KEY_NOT_FOUND: @@ -4586,11 +4618,9 @@ end_with_restore_list: } #endif if (lex->sql_command == SQLCOM_DROP_PROCEDURE) - /* Conditionally writes to binlog */ - result= sp_drop_procedure(thd, lex->spname); /* Conditionally writes to binlog */ + result= sp_drop_procedure(thd, lex->spname); else - /* Conditionally writes to binlog */ - result= sp_drop_function(thd, lex->spname); /* Conditionally writes to binlog */ + result= sp_drop_function(thd, lex->spname); } else { @@ -4603,8 +4633,6 @@ end_with_restore_list: { if (check_access(thd, DELETE_ACL, "mysql", 0, 1, 0, 0)) goto error; - - /* Does NOT write to binlog */ if (!(res = mysql_drop_function(thd, &lex->spname->m_name))) { send_ok(thd); @@ -4625,6 +4653,12 @@ end_with_restore_list: switch (result) { case SP_OK: + if (mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } send_ok(thd); break; case SP_KEY_NOT_FOUND: @@ -4720,6 +4754,50 @@ end_with_restore_list: { if (end_active_trans(thd)) goto error; + + if (!(res= mysql_create_view(thd, thd->lex->create_view_mode)) && + mysql_bin_log.is_open()) + { + String buff; + const LEX_STRING command[3]= + {{(char *)STRING_WITH_LEN("CREATE ")}, + {(char *)STRING_WITH_LEN("ALTER ")}, + {(char *)STRING_WITH_LEN("CREATE OR REPLACE ")}}; + thd->clear_error(); + + buff.append(command[thd->lex->create_view_mode].str, + command[thd->lex->create_view_mode].length); + view_store_options(thd, first_table, &buff); + buff.append(STRING_WITH_LEN("VIEW ")); + /* Test if user supplied a db (ie: we did not use thd->db) */ + if (first_table->db && first_table->db[0] && + (thd->db == NULL || strcmp(first_table->db, thd->db))) + { + append_identifier(thd, &buff, first_table->db, + first_table->db_length); + buff.append('.'); + } + append_identifier(thd, &buff, first_table->table_name, + first_table->table_name_length); + if (lex->view_list.elements) + { + List_iterator_fast names(lex->view_list); + LEX_STRING *name; + int i; + + for (i= 0; name= names++; i++) + { + buff.append(i ? ", " : "("); + append_identifier(thd, &buff, name->str, name->length); + } + buff.append(')'); + } + buff.append(STRING_WITH_LEN(" AS ")); + buff.append(first_table->source.str, first_table->source.length); + + Query_log_event qinfo(thd, buff.ptr(), buff.length(), 0, FALSE); + mysql_bin_log.write(&qinfo); + } break; } case SQLCOM_DROP_VIEW: @@ -4727,8 +4805,13 @@ end_with_restore_list: if (check_table_access(thd, DROP_ACL, all_tables, 0) || end_active_trans(thd)) goto error; - /* Conditionally writes to binlog. */ - res= mysql_drop_view(thd, first_table, thd->lex->drop_mode); + if (!(res= mysql_drop_view(thd, first_table, thd->lex->drop_mode)) && + mysql_bin_log.is_open()) + { + thd->clear_error(); + Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); + mysql_bin_log.write(&qinfo); + } break; } case SQLCOM_CREATE_TRIGGER: @@ -4736,7 +4819,6 @@ end_with_restore_list: if (end_active_trans(thd)) goto error; - /* Conditionally writes to binlog. */ res= mysql_create_or_drop_trigger(thd, all_tables, 1); /* We don't care about trigger body after this point */ @@ -4749,7 +4831,6 @@ end_with_restore_list: if (end_active_trans(thd)) goto error; - /* Conditionally writes to binlog. */ res= mysql_create_or_drop_trigger(thd, all_tables, 0); break; } --- 1.323/sql/sql_table.cc 2006-10-13 16:31:41 -04:00 +++ 1.324/sql/sql_table.cc 2006-10-13 16:31:41 -04:00 @@ -3173,7 +3173,6 @@ bool mysql_alter_table(THD *thd,char *ne /* DISCARD/IMPORT TABLESPACE is always alone in an ALTER TABLE */ if (alter_info->tablespace_op != NO_TABLESPACE_OP) - /* Conditionally writes to binlog. */ DBUG_RETURN(mysql_discard_or_import_tablespace(thd,table_list, alter_info->tablespace_op)); if (!(table=open_ltable(thd,table_list,TL_WRITE_ALLOW_READ))) @@ -3255,10 +3254,10 @@ bool mysql_alter_table(THD *thd,char *ne !table->s->tmp_table) // no need to touch frm { error=0; - VOID(pthread_mutex_lock(&LOCK_open)); if (new_name != table_name || new_db != db) { thd->proc_info="rename"; + VOID(pthread_mutex_lock(&LOCK_open)); /* Then do a 'simple' rename of the table */ error=0; if (!access(new_name_buff,F_OK)) @@ -3280,6 +3279,7 @@ bool mysql_alter_table(THD *thd,char *ne error= -1; } } + VOID(pthread_mutex_unlock(&LOCK_open)); } if (!error) @@ -3288,12 +3288,16 @@ bool mysql_alter_table(THD *thd,char *ne case LEAVE_AS_IS: break; case ENABLE: + VOID(pthread_mutex_lock(&LOCK_open)); wait_while_table_is_used(thd, table, HA_EXTRA_FORCE_REOPEN); + VOID(pthread_mutex_unlock(&LOCK_open)); error= table->file->enable_indexes(HA_KEY_SWITCH_NONUNIQ_SAVE); /* COND_refresh will be signaled in close_thread_tables() */ break; case DISABLE: + VOID(pthread_mutex_lock(&LOCK_open)); wait_while_table_is_used(thd, table, HA_EXTRA_FORCE_REOPEN); + VOID(pthread_mutex_unlock(&LOCK_open)); error=table->file->disable_indexes(HA_KEY_SWITCH_NONUNIQ_SAVE); /* COND_refresh will be signaled in close_thread_tables() */ break; @@ -3323,7 +3327,6 @@ bool mysql_alter_table(THD *thd,char *ne table->file->print_error(error, MYF(0)); error= -1; } - VOID(pthread_mutex_unlock(&LOCK_open)); table_list->table=0; // For query cache query_cache_invalidate3(thd, table_list, 0); DBUG_RETURN(error); @@ -3770,10 +3773,6 @@ bool mysql_alter_table(THD *thd,char *ne my_free((gptr) new_table,MYF(0)); goto err; } - /* - Writing to the binlog does not need to be synchronized for temporary tables, - which are thread-specific. - */ if (mysql_bin_log.is_open()) { thd->clear_error(); --- 1.97/sql/sql_view.cc 2006-10-13 16:31:41 -04:00 +++ 1.98/sql/sql_view.cc 2006-10-13 16:31:41 -04:00 @@ -212,7 +212,6 @@ fill_defined_view_parts (THD *thd, TABLE SYNOPSIS mysql_create_view() thd - thread handler - views - views to create mode - VIEW_CREATE_NEW, VIEW_ALTER, VIEW_CREATE_OR_REPLACE RETURN VALUE @@ -220,7 +219,7 @@ fill_defined_view_parts (THD *thd, TABLE TRUE Error */ -bool mysql_create_view(THD *thd, TABLE_LIST *views, +bool mysql_create_view(THD *thd, enum_view_create_mode mode) { LEX *lex= thd->lex; @@ -549,50 +548,6 @@ bool mysql_create_view(THD *thd, TABLE_L } VOID(pthread_mutex_lock(&LOCK_open)); res= mysql_register_view(thd, view, mode); - - if (mysql_bin_log.is_open()) - { - String buff; - const LEX_STRING command[3]= - {{(char *)STRING_WITH_LEN("CREATE ")}, - {(char *)STRING_WITH_LEN("ALTER ")}, - {(char *)STRING_WITH_LEN("CREATE OR REPLACE ")}}; - - buff.append(command[thd->lex->create_view_mode].str, - command[thd->lex->create_view_mode].length); - view_store_options(thd, views, &buff); - buff.append(STRING_WITH_LEN("VIEW ")); - - /* Test if user supplied a db (ie: we did not use thd->db) */ - if (views->db && views->db[0] && - (thd->db == NULL || strcmp(views->db, thd->db))) - { - append_identifier(thd, &buff, views->db, - views->db_length); - buff.append('.'); - } - append_identifier(thd, &buff, views->table_name, - views->table_name_length); - if (lex->view_list.elements) - { - List_iterator_fast names(lex->view_list); - LEX_STRING *name; - int i; - - for (i= 0; name= names++; i++) - { - buff.append(i ? ", " : "("); - append_identifier(thd, &buff, name->str, name->length); - } - buff.append(')'); - } - buff.append(STRING_WITH_LEN(" AS ")); - buff.append(views->source.str, views->source.length); - - Query_log_event qinfo(thd, buff.ptr(), buff.length(), 0, FALSE); - mysql_bin_log.write(&qinfo); - } - VOID(pthread_mutex_unlock(&LOCK_open)); if (view->revision != 1) query_cache_invalidate3(thd, view, 0); @@ -1351,12 +1306,12 @@ bool mysql_drop_view(THD *thd, TABLE_LIS char *wrong_object_db= NULL, *wrong_object_name= NULL; bool error= FALSE; - VOID(pthread_mutex_lock(&LOCK_open)); for (view= views; view; view= view->next_local) { strxnmov(path, FN_REFLEN, mysql_data_home, "/", view->db, "/", view->table_name, reg_ext, NullS); (void) unpack_filename(path, path); + VOID(pthread_mutex_lock(&LOCK_open)); type= FRMTYPE_ERROR; if (access(path, F_OK) || FRMTYPE_VIEW != (type= mysql_frm_type(thd, path, ¬_used))) @@ -1368,6 +1323,7 @@ bool mysql_drop_view(THD *thd, TABLE_LIS push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, ER_BAD_TABLE_ERROR, ER(ER_BAD_TABLE_ERROR), name); + VOID(pthread_mutex_unlock(&LOCK_open)); continue; } if (type == FRMTYPE_TABLE) @@ -1391,16 +1347,8 @@ bool mysql_drop_view(THD *thd, TABLE_LIS error= TRUE; query_cache_invalidate3(thd, view, 0); sp_cache_invalidate(); - } - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - VOID(pthread_mutex_unlock(&LOCK_open)); - + } if (error) { DBUG_RETURN(TRUE); --- 1.13/sql/sql_view.h 2006-10-13 16:31:41 -04:00 +++ 1.14/sql/sql_view.h 2006-10-13 16:31:41 -04:00 @@ -16,7 +16,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -bool mysql_create_view(THD *thd, TABLE_LIST *view, +bool mysql_create_view(THD *thd, enum_view_create_mode mode); bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table, --- 1.57/sql/sql_trigger.cc 2006-10-13 16:31:41 -04:00 +++ 1.58/sql/sql_trigger.cc 2006-10-13 16:31:41 -04:00 @@ -270,6 +270,8 @@ bool mysql_create_or_drop_trigger(THD *t table->triggers->drop_trigger(thd, tables, &stmt_query)); end: + VOID(pthread_mutex_unlock(&LOCK_open)); + start_waiting_global_read_lock(thd); if (!result) { @@ -282,13 +284,9 @@ end: FALSE); mysql_bin_log.write(&qinfo); } - } - - VOID(pthread_mutex_unlock(&LOCK_open)); - start_waiting_global_read_lock(thd); - if (!result) send_ok(thd); + } DBUG_RETURN(result); } --- 1.121/sql/sp.cc 2006-10-13 16:31:41 -04:00 +++ 1.122/sql/sp.cc 2006-10-13 16:31:41 -04:00 @@ -651,17 +651,6 @@ db_drop_routine(THD *thd, int type, sp_n if (table->file->delete_row(table->record[0])) ret= SP_DELETE_ROW_FAILED; } - - if (ret == SP_OK) - { - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - } - close_thread_tables(thd); DBUG_RETURN(ret); } @@ -697,17 +686,6 @@ db_update_routine(THD *thd, int type, sp if ((table->file->update_row(table->record[1],table->record[0]))) ret= SP_WRITE_ROW_FAILED; } - - if (ret == SP_OK) - { - if (mysql_bin_log.is_open()) - { - thd->clear_error(); - Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE); - mysql_bin_log.write(&qinfo); - } - } - close_thread_tables(thd); DBUG_RETURN(ret); } @@ -786,7 +764,6 @@ print_field_values(THD *thd, TABLE *tabl return SP_INTERNAL_ERROR; } } - return SP_OK; }