List:Commits« Previous MessageNext Message »
From:Chad MILLER Date:October 13 2006 8:31pm
Subject:bk commit into 5.0 tree (cmiller:1.2305) BUG#14262
View as plain text  
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 <L
   }
 
   VOID(pthread_mutex_unlock(&acl_cache->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 <LEX
   rebuild_check_host();
 
   VOID(pthread_mutex_unlock(&acl_cache->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 <L
   rebuild_check_host();
 
   VOID(pthread_mutex_unlock(&acl_cache->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 <L
   }
 
   VOID(pthread_mutex_unlock(&acl_cache->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 <LEX_USER> 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<LEX_STRING> 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<LEX_STRING> 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, &not_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;
 }
 
Thread
bk commit into 5.0 tree (cmiller:1.2305) BUG#14262Chad MILLER13 Oct