List:Internals« Previous MessageNext Message »
From:Sasha Pachev Date:August 19 2005 5:40am
Subject:bk commit into 4.1 tree (sasha:1.2386) BUG#4680
View as plain text  
Below is the list of changes that have just been committed into a local
4.1 repository of sasha. When sasha 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.2386 05/08/18 21:40:14 sasha@stripped +7 -0
  updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication). 
  We binlog the DROP TABLE for each table that was actually dropped. Per Sergei's 
  suggestion a fixed buffer for the DROP TABLE query is pre-allocated from THD pool, and 
  logging now is done in batches - new batch is started if the buffer becomes full.
  Reduced memory usage by reusing the table list instead of accumulating a list of 
  dropped table names. Also fixed the problem if the table was not actually dropped, eg
  due to permissions. Extended the test case to make sure batched query 
  logging does work.  

  sql/table.h
    1.73 05/08/18 21:40:11 sasha@stripped +3 -0
    updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)

  sql/sql_table.cc
    1.298 05/08/18 21:40:11 sasha@stripped +4 -19
    updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)

  sql/sql_db.cc
    1.128 05/08/18 21:40:11 sasha@stripped +58 -29
    updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)

  BitKeeper/etc/ignore
    1.231 05/08/18 21:40:11 sasha@stripped +2 -0
    Added support-files/MacOSX/postflight support-files/MacOSX/preflight to the ignore
list

  sql/mysql_priv.h
    1.364 05/08/18 21:40:10 sasha@stripped +1 -1
    updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication)

  mysql-test/t/rpl_drop_db.test
    1.2 05/08/18 21:40:10 sasha@stripped +13 -0
    test for query buffer overrun

  mysql-test/r/rpl_drop_db.result
    1.2 05/08/18 21:40:10 sasha@stripped +1005 -0
    test for query buffer overrun

# 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:	sasha
# Host:	mysql.sashanet.com
# Root:	/reiser-data/mysql-dev/mysql-4.1

--- 1.363/sql/mysql_priv.h	2005-08-17 12:39:25 -06:00
+++ 1.364/sql/mysql_priv.h	2005-08-18 21:40:10 -06:00
@@ -447,7 +447,7 @@
 			 bool drop_temporary, bool log_query);
 int mysql_rm_table_part2_with_lock(THD *thd, TABLE_LIST *tables,
 				   bool if_exists, bool drop_temporary,
-				   bool log_query, List<String> *dropped_tables);
+				   bool log_query);
 int quick_rm_table(enum db_type base,const char *db,
 		   const char *table_name);
 bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list);

--- 1.127/sql/sql_db.cc	2005-08-03 18:08:16 -06:00
+++ 1.128/sql/sql_db.cc	2005-08-18 21:40:11 -06:00
@@ -25,14 +25,20 @@
 #include <direct.h>
 #endif
 
+#define MAX_DROP_TABLE_Q_LEN      1024
+
 const char *del_exts[]= {".frm", ".BAK", ".TMD",".opt", NullS};
 static TYPELIB deletable_extentions=
 {array_elements(del_exts)-1,"del_exts", del_exts, NULL};
 
 static long mysql_rm_known_files(THD *thd, MY_DIR *dirp,
-				 const char *db, const char *path,
-				 uint level, List<String> *dropped_tables);
-
+				 const char *db, const char *path, uint level, 
+         TABLE_LIST** dropped_tables);
+         
+
+static inline void write_to_binlog(THD* thd, char* query, uint q_len,
+  char* db, uint db_len);
+          
 /* Database options hash */
 static HASH dboptions;
 static my_bool dboptions_init= 0;
@@ -57,6 +63,19 @@
   return (byte*) opt->name;
 }
 
+/*
+   Helper function to write a query to binlog used by mysql_rm_db()
+ */
+static inline void write_to_binlog(THD* thd, char* query, uint q_len,
+  char* db, uint db_len)
+{
+   Query_log_event qinfo(thd, query, q_len, 0, 0);
+   qinfo.error_code= 0;
+   qinfo.db= db;
+   qinfo.db_len= db_len;
+   mysql_bin_log.write(&qinfo);
+}  
+
 
 /*
   Function to free dboptions hash element
@@ -584,8 +603,8 @@
   int error= 0;
   char	path[FN_REFLEN+16], tmp_db[NAME_LEN+1];
   MY_DIR *dirp;
-  List<String> dropped_tables;
   uint length;
+  TABLE_LIST* dropped_tables= 0;
   DBUG_ENTER("mysql_rm_db");
 
   VOID(pthread_mutex_lock(&LOCK_mysql_create_db));
@@ -625,7 +644,7 @@
     
     error= -1;
     if ((deleted= mysql_rm_known_files(thd, dirp, db, path, 0,
-          &dropped_tables)) >= 0)
+         &dropped_tables)) >= 0)
     {
       ha_drop_database(path);
       query_cache_invalidate1(db);
@@ -675,36 +694,44 @@
     send_ok(thd, (ulong) deleted);
     thd->server_status&= ~SERVER_STATUS_DB_DROPPED;
   }
-  else if (!dropped_tables.is_empty() && mysql_bin_log.is_open())
+  else if (mysql_bin_log.is_open())
   {
-     List_iterator<String> it(dropped_tables);
-     String* dropped_table;
-     int q_len= 11; /* drop table */ 
-     int db_len= strlen(db);
+     char* query= thd->alloc(MAX_DROP_TABLE_Q_LEN);
      
-     for (;(dropped_table= it++);)
-     {
-       q_len += dropped_table->length() + 2 + db_len;
-     }
-     q_len--; /* no last comma */
-     
-     char* query= thd->alloc(q_len);
      if (!query)
        goto exit; /* not much else we can do */
      char* p= strmov(query,"drop table ");  
-     it.rewind();
+     char* p_end= query + MAX_DROP_TABLE_Q_LEN;
+     TABLE_LIST* tbl;
+     bool last_query_needs_write= 0;
+     uint db_len= strlen(db);
      
-     for (;(dropped_table= it++);)
+     for (tbl= dropped_tables;tbl;tbl= tbl->next)
      {
-       p= strmov(p,db);
-       *p++ = '.';
-       p= strnmov(p,dropped_table->ptr(),dropped_table->length());
+       if (!tbl->was_dropped)
+         continue;
+         
+       /* 3 for the quotes and the comma*/  
+       uint tbl_name_len= strlen(tbl->real_name) + 3; 
+       if (p + tbl_name_len + 1 >= p_end)
+       {
+          *--p= 0; /* kill , */
+          write_to_binlog(thd, query, p - query, db, db_len);
+          p= query + 11; /* reuse the initial "drop table" */
+       }    
+       
+       *p++ = '`';
+       p= strmov(p,tbl->real_name);
+       *p++ = '`';
        *p++ = ',';
+       last_query_needs_write= 1;
      }
-     *--p= 0;
-     Query_log_event qinfo(thd, query, q_len, 0, 0);
-     qinfo.error_code= 0;
-     mysql_bin_log.write(&qinfo);
+     
+     if (last_query_needs_write)
+     {
+       *--p= 0;
+       write_to_binlog(thd, query, p - query, db, db_len);
+     }  
   }
 
 exit:
@@ -750,7 +777,7 @@
 */
 
 static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
-				 const char *org_path, uint level, List<String> *dropped_tables)
+				 const char *org_path, uint level, TABLE_LIST** dropped_tables)
 {
   long deleted=0;
   ulong found_other_files=0;
@@ -839,8 +866,7 @@
     }
   }
   if (thd->killed ||
-      (tot_list && mysql_rm_table_part2_with_lock(thd, tot_list, 1, 0, 
-           1,dropped_tables)))
+      (tot_list && mysql_rm_table_part2_with_lock(thd, tot_list, 1, 0, 1)))
     goto err;
 
   /* Remove RAID directories */
@@ -852,6 +878,9 @@
 	found_other_files++;
   }
   my_dirend(dirp);  
+  
+  if (dropped_tables)
+    *dropped_tables= tot_list;
   
   /*
     If the directory is a symbolic link, remove the link first, then

--- 1.297/sql/sql_table.cc	2005-08-03 18:08:16 -06:00
+++ 1.298/sql/sql_table.cc	2005-08-18 21:40:11 -06:00
@@ -156,8 +156,7 @@
 
 int mysql_rm_table_part2_with_lock(THD *thd,
 				   TABLE_LIST *tables, bool if_exists,
-				   bool drop_temporary, bool dont_log_query,
-           List<String>* dropped_tables)
+				   bool drop_temporary, bool dont_log_query)
 {
   int error;
   thd->mysys_var->current_mutex= &LOCK_open;
@@ -166,23 +165,6 @@
 
   error=mysql_rm_table_part2(thd,tables, if_exists, drop_temporary,
 			     dont_log_query);
-  /*
-    For now we assume that if we got success all the tables in the list 
-    were actually dropped, otherwise, assume none were dropped.
-    TODO: fix it to work with a partial drop - extremely rare case, but
-    can happen.
-  */         
-  if (!error && dropped_tables)
-  {         
-    TABLE_LIST* tbl;
-    
-    for (tbl= tables; tbl; tbl= tbl->next)
-    {
-      String *dropped_table= new (thd->mem_root) 
-         String(tbl->real_name,&my_charset_latin1);
-      dropped_tables->push_back(dropped_table); 
-    } 
-  }        
 
   pthread_mutex_unlock(&LOCK_open);
 
@@ -238,6 +220,7 @@
   for (table=tables ; table ; table=table->next)
   {
     char *db=table->db;
+    table->was_dropped= 0;
     mysql_ha_flush(thd, table, MYSQL_HA_CLOSE_FINAL);
     if (!close_temporary_table(thd, db, table->real_name))
     {
@@ -298,6 +281,8 @@
 	wrong_tables.append(',');
       wrong_tables.append(String(table->real_name,system_charset_info));
     }
+    else
+      table->was_dropped= 1;
   }
   thd->tmp_table_used= tmp_table_deleted;
   error= 0;

--- 1.72/sql/table.h	2005-04-22 04:27:09 -06:00
+++ 1.73/sql/table.h	2005-08-18 21:40:11 -06:00
@@ -235,6 +235,9 @@
   bool		cacheable_table;	/* stop PS caching */
   /* used in multi-upd privelege check */
   bool		table_in_update_from_clause;
+  
+  /* used for proper partially successful DROP DATABASE binlogging */
+  bool    was_dropped; 
 } TABLE_LIST;
 
 typedef struct st_changed_table_list

--- 1.1/mysql-test/r/rpl_drop_db.result	2005-08-03 18:08:16 -06:00
+++ 1.2/mysql-test/r/rpl_drop_db.result	2005-08-18 21:40:10 -06:00
@@ -16,6 +16,1011 @@
 use d1;
 show tables;
 Tables_in_d1
+create table d1.t1000(n int);
+create table d1.t999(n int);
+create table d1.t998(n int);
+create table d1.t997(n int);
+create table d1.t996(n int);
+create table d1.t995(n int);
+create table d1.t994(n int);
+create table d1.t993(n int);
+create table d1.t992(n int);
+create table d1.t991(n int);
+create table d1.t990(n int);
+create table d1.t989(n int);
+create table d1.t988(n int);
+create table d1.t987(n int);
+create table d1.t986(n int);
+create table d1.t985(n int);
+create table d1.t984(n int);
+create table d1.t983(n int);
+create table d1.t982(n int);
+create table d1.t981(n int);
+create table d1.t980(n int);
+create table d1.t979(n int);
+create table d1.t978(n int);
+create table d1.t977(n int);
+create table d1.t976(n int);
+create table d1.t975(n int);
+create table d1.t974(n int);
+create table d1.t973(n int);
+create table d1.t972(n int);
+create table d1.t971(n int);
+create table d1.t970(n int);
+create table d1.t969(n int);
+create table d1.t968(n int);
+create table d1.t967(n int);
+create table d1.t966(n int);
+create table d1.t965(n int);
+create table d1.t964(n int);
+create table d1.t963(n int);
+create table d1.t962(n int);
+create table d1.t961(n int);
+create table d1.t960(n int);
+create table d1.t959(n int);
+create table d1.t958(n int);
+create table d1.t957(n int);
+create table d1.t956(n int);
+create table d1.t955(n int);
+create table d1.t954(n int);
+create table d1.t953(n int);
+create table d1.t952(n int);
+create table d1.t951(n int);
+create table d1.t950(n int);
+create table d1.t949(n int);
+create table d1.t948(n int);
+create table d1.t947(n int);
+create table d1.t946(n int);
+create table d1.t945(n int);
+create table d1.t944(n int);
+create table d1.t943(n int);
+create table d1.t942(n int);
+create table d1.t941(n int);
+create table d1.t940(n int);
+create table d1.t939(n int);
+create table d1.t938(n int);
+create table d1.t937(n int);
+create table d1.t936(n int);
+create table d1.t935(n int);
+create table d1.t934(n int);
+create table d1.t933(n int);
+create table d1.t932(n int);
+create table d1.t931(n int);
+create table d1.t930(n int);
+create table d1.t929(n int);
+create table d1.t928(n int);
+create table d1.t927(n int);
+create table d1.t926(n int);
+create table d1.t925(n int);
+create table d1.t924(n int);
+create table d1.t923(n int);
+create table d1.t922(n int);
+create table d1.t921(n int);
+create table d1.t920(n int);
+create table d1.t919(n int);
+create table d1.t918(n int);
+create table d1.t917(n int);
+create table d1.t916(n int);
+create table d1.t915(n int);
+create table d1.t914(n int);
+create table d1.t913(n int);
+create table d1.t912(n int);
+create table d1.t911(n int);
+create table d1.t910(n int);
+create table d1.t909(n int);
+create table d1.t908(n int);
+create table d1.t907(n int);
+create table d1.t906(n int);
+create table d1.t905(n int);
+create table d1.t904(n int);
+create table d1.t903(n int);
+create table d1.t902(n int);
+create table d1.t901(n int);
+create table d1.t900(n int);
+create table d1.t899(n int);
+create table d1.t898(n int);
+create table d1.t897(n int);
+create table d1.t896(n int);
+create table d1.t895(n int);
+create table d1.t894(n int);
+create table d1.t893(n int);
+create table d1.t892(n int);
+create table d1.t891(n int);
+create table d1.t890(n int);
+create table d1.t889(n int);
+create table d1.t888(n int);
+create table d1.t887(n int);
+create table d1.t886(n int);
+create table d1.t885(n int);
+create table d1.t884(n int);
+create table d1.t883(n int);
+create table d1.t882(n int);
+create table d1.t881(n int);
+create table d1.t880(n int);
+create table d1.t879(n int);
+create table d1.t878(n int);
+create table d1.t877(n int);
+create table d1.t876(n int);
+create table d1.t875(n int);
+create table d1.t874(n int);
+create table d1.t873(n int);
+create table d1.t872(n int);
+create table d1.t871(n int);
+create table d1.t870(n int);
+create table d1.t869(n int);
+create table d1.t868(n int);
+create table d1.t867(n int);
+create table d1.t866(n int);
+create table d1.t865(n int);
+create table d1.t864(n int);
+create table d1.t863(n int);
+create table d1.t862(n int);
+create table d1.t861(n int);
+create table d1.t860(n int);
+create table d1.t859(n int);
+create table d1.t858(n int);
+create table d1.t857(n int);
+create table d1.t856(n int);
+create table d1.t855(n int);
+create table d1.t854(n int);
+create table d1.t853(n int);
+create table d1.t852(n int);
+create table d1.t851(n int);
+create table d1.t850(n int);
+create table d1.t849(n int);
+create table d1.t848(n int);
+create table d1.t847(n int);
+create table d1.t846(n int);
+create table d1.t845(n int);
+create table d1.t844(n int);
+create table d1.t843(n int);
+create table d1.t842(n int);
+create table d1.t841(n int);
+create table d1.t840(n int);
+create table d1.t839(n int);
+create table d1.t838(n int);
+create table d1.t837(n int);
+create table d1.t836(n int);
+create table d1.t835(n int);
+create table d1.t834(n int);
+create table d1.t833(n int);
+create table d1.t832(n int);
+create table d1.t831(n int);
+create table d1.t830(n int);
+create table d1.t829(n int);
+create table d1.t828(n int);
+create table d1.t827(n int);
+create table d1.t826(n int);
+create table d1.t825(n int);
+create table d1.t824(n int);
+create table d1.t823(n int);
+create table d1.t822(n int);
+create table d1.t821(n int);
+create table d1.t820(n int);
+create table d1.t819(n int);
+create table d1.t818(n int);
+create table d1.t817(n int);
+create table d1.t816(n int);
+create table d1.t815(n int);
+create table d1.t814(n int);
+create table d1.t813(n int);
+create table d1.t812(n int);
+create table d1.t811(n int);
+create table d1.t810(n int);
+create table d1.t809(n int);
+create table d1.t808(n int);
+create table d1.t807(n int);
+create table d1.t806(n int);
+create table d1.t805(n int);
+create table d1.t804(n int);
+create table d1.t803(n int);
+create table d1.t802(n int);
+create table d1.t801(n int);
+create table d1.t800(n int);
+create table d1.t799(n int);
+create table d1.t798(n int);
+create table d1.t797(n int);
+create table d1.t796(n int);
+create table d1.t795(n int);
+create table d1.t794(n int);
+create table d1.t793(n int);
+create table d1.t792(n int);
+create table d1.t791(n int);
+create table d1.t790(n int);
+create table d1.t789(n int);
+create table d1.t788(n int);
+create table d1.t787(n int);
+create table d1.t786(n int);
+create table d1.t785(n int);
+create table d1.t784(n int);
+create table d1.t783(n int);
+create table d1.t782(n int);
+create table d1.t781(n int);
+create table d1.t780(n int);
+create table d1.t779(n int);
+create table d1.t778(n int);
+create table d1.t777(n int);
+create table d1.t776(n int);
+create table d1.t775(n int);
+create table d1.t774(n int);
+create table d1.t773(n int);
+create table d1.t772(n int);
+create table d1.t771(n int);
+create table d1.t770(n int);
+create table d1.t769(n int);
+create table d1.t768(n int);
+create table d1.t767(n int);
+create table d1.t766(n int);
+create table d1.t765(n int);
+create table d1.t764(n int);
+create table d1.t763(n int);
+create table d1.t762(n int);
+create table d1.t761(n int);
+create table d1.t760(n int);
+create table d1.t759(n int);
+create table d1.t758(n int);
+create table d1.t757(n int);
+create table d1.t756(n int);
+create table d1.t755(n int);
+create table d1.t754(n int);
+create table d1.t753(n int);
+create table d1.t752(n int);
+create table d1.t751(n int);
+create table d1.t750(n int);
+create table d1.t749(n int);
+create table d1.t748(n int);
+create table d1.t747(n int);
+create table d1.t746(n int);
+create table d1.t745(n int);
+create table d1.t744(n int);
+create table d1.t743(n int);
+create table d1.t742(n int);
+create table d1.t741(n int);
+create table d1.t740(n int);
+create table d1.t739(n int);
+create table d1.t738(n int);
+create table d1.t737(n int);
+create table d1.t736(n int);
+create table d1.t735(n int);
+create table d1.t734(n int);
+create table d1.t733(n int);
+create table d1.t732(n int);
+create table d1.t731(n int);
+create table d1.t730(n int);
+create table d1.t729(n int);
+create table d1.t728(n int);
+create table d1.t727(n int);
+create table d1.t726(n int);
+create table d1.t725(n int);
+create table d1.t724(n int);
+create table d1.t723(n int);
+create table d1.t722(n int);
+create table d1.t721(n int);
+create table d1.t720(n int);
+create table d1.t719(n int);
+create table d1.t718(n int);
+create table d1.t717(n int);
+create table d1.t716(n int);
+create table d1.t715(n int);
+create table d1.t714(n int);
+create table d1.t713(n int);
+create table d1.t712(n int);
+create table d1.t711(n int);
+create table d1.t710(n int);
+create table d1.t709(n int);
+create table d1.t708(n int);
+create table d1.t707(n int);
+create table d1.t706(n int);
+create table d1.t705(n int);
+create table d1.t704(n int);
+create table d1.t703(n int);
+create table d1.t702(n int);
+create table d1.t701(n int);
+create table d1.t700(n int);
+create table d1.t699(n int);
+create table d1.t698(n int);
+create table d1.t697(n int);
+create table d1.t696(n int);
+create table d1.t695(n int);
+create table d1.t694(n int);
+create table d1.t693(n int);
+create table d1.t692(n int);
+create table d1.t691(n int);
+create table d1.t690(n int);
+create table d1.t689(n int);
+create table d1.t688(n int);
+create table d1.t687(n int);
+create table d1.t686(n int);
+create table d1.t685(n int);
+create table d1.t684(n int);
+create table d1.t683(n int);
+create table d1.t682(n int);
+create table d1.t681(n int);
+create table d1.t680(n int);
+create table d1.t679(n int);
+create table d1.t678(n int);
+create table d1.t677(n int);
+create table d1.t676(n int);
+create table d1.t675(n int);
+create table d1.t674(n int);
+create table d1.t673(n int);
+create table d1.t672(n int);
+create table d1.t671(n int);
+create table d1.t670(n int);
+create table d1.t669(n int);
+create table d1.t668(n int);
+create table d1.t667(n int);
+create table d1.t666(n int);
+create table d1.t665(n int);
+create table d1.t664(n int);
+create table d1.t663(n int);
+create table d1.t662(n int);
+create table d1.t661(n int);
+create table d1.t660(n int);
+create table d1.t659(n int);
+create table d1.t658(n int);
+create table d1.t657(n int);
+create table d1.t656(n int);
+create table d1.t655(n int);
+create table d1.t654(n int);
+create table d1.t653(n int);
+create table d1.t652(n int);
+create table d1.t651(n int);
+create table d1.t650(n int);
+create table d1.t649(n int);
+create table d1.t648(n int);
+create table d1.t647(n int);
+create table d1.t646(n int);
+create table d1.t645(n int);
+create table d1.t644(n int);
+create table d1.t643(n int);
+create table d1.t642(n int);
+create table d1.t641(n int);
+create table d1.t640(n int);
+create table d1.t639(n int);
+create table d1.t638(n int);
+create table d1.t637(n int);
+create table d1.t636(n int);
+create table d1.t635(n int);
+create table d1.t634(n int);
+create table d1.t633(n int);
+create table d1.t632(n int);
+create table d1.t631(n int);
+create table d1.t630(n int);
+create table d1.t629(n int);
+create table d1.t628(n int);
+create table d1.t627(n int);
+create table d1.t626(n int);
+create table d1.t625(n int);
+create table d1.t624(n int);
+create table d1.t623(n int);
+create table d1.t622(n int);
+create table d1.t621(n int);
+create table d1.t620(n int);
+create table d1.t619(n int);
+create table d1.t618(n int);
+create table d1.t617(n int);
+create table d1.t616(n int);
+create table d1.t615(n int);
+create table d1.t614(n int);
+create table d1.t613(n int);
+create table d1.t612(n int);
+create table d1.t611(n int);
+create table d1.t610(n int);
+create table d1.t609(n int);
+create table d1.t608(n int);
+create table d1.t607(n int);
+create table d1.t606(n int);
+create table d1.t605(n int);
+create table d1.t604(n int);
+create table d1.t603(n int);
+create table d1.t602(n int);
+create table d1.t601(n int);
+create table d1.t600(n int);
+create table d1.t599(n int);
+create table d1.t598(n int);
+create table d1.t597(n int);
+create table d1.t596(n int);
+create table d1.t595(n int);
+create table d1.t594(n int);
+create table d1.t593(n int);
+create table d1.t592(n int);
+create table d1.t591(n int);
+create table d1.t590(n int);
+create table d1.t589(n int);
+create table d1.t588(n int);
+create table d1.t587(n int);
+create table d1.t586(n int);
+create table d1.t585(n int);
+create table d1.t584(n int);
+create table d1.t583(n int);
+create table d1.t582(n int);
+create table d1.t581(n int);
+create table d1.t580(n int);
+create table d1.t579(n int);
+create table d1.t578(n int);
+create table d1.t577(n int);
+create table d1.t576(n int);
+create table d1.t575(n int);
+create table d1.t574(n int);
+create table d1.t573(n int);
+create table d1.t572(n int);
+create table d1.t571(n int);
+create table d1.t570(n int);
+create table d1.t569(n int);
+create table d1.t568(n int);
+create table d1.t567(n int);
+create table d1.t566(n int);
+create table d1.t565(n int);
+create table d1.t564(n int);
+create table d1.t563(n int);
+create table d1.t562(n int);
+create table d1.t561(n int);
+create table d1.t560(n int);
+create table d1.t559(n int);
+create table d1.t558(n int);
+create table d1.t557(n int);
+create table d1.t556(n int);
+create table d1.t555(n int);
+create table d1.t554(n int);
+create table d1.t553(n int);
+create table d1.t552(n int);
+create table d1.t551(n int);
+create table d1.t550(n int);
+create table d1.t549(n int);
+create table d1.t548(n int);
+create table d1.t547(n int);
+create table d1.t546(n int);
+create table d1.t545(n int);
+create table d1.t544(n int);
+create table d1.t543(n int);
+create table d1.t542(n int);
+create table d1.t541(n int);
+create table d1.t540(n int);
+create table d1.t539(n int);
+create table d1.t538(n int);
+create table d1.t537(n int);
+create table d1.t536(n int);
+create table d1.t535(n int);
+create table d1.t534(n int);
+create table d1.t533(n int);
+create table d1.t532(n int);
+create table d1.t531(n int);
+create table d1.t530(n int);
+create table d1.t529(n int);
+create table d1.t528(n int);
+create table d1.t527(n int);
+create table d1.t526(n int);
+create table d1.t525(n int);
+create table d1.t524(n int);
+create table d1.t523(n int);
+create table d1.t522(n int);
+create table d1.t521(n int);
+create table d1.t520(n int);
+create table d1.t519(n int);
+create table d1.t518(n int);
+create table d1.t517(n int);
+create table d1.t516(n int);
+create table d1.t515(n int);
+create table d1.t514(n int);
+create table d1.t513(n int);
+create table d1.t512(n int);
+create table d1.t511(n int);
+create table d1.t510(n int);
+create table d1.t509(n int);
+create table d1.t508(n int);
+create table d1.t507(n int);
+create table d1.t506(n int);
+create table d1.t505(n int);
+create table d1.t504(n int);
+create table d1.t503(n int);
+create table d1.t502(n int);
+create table d1.t501(n int);
+create table d1.t500(n int);
+create table d1.t499(n int);
+create table d1.t498(n int);
+create table d1.t497(n int);
+create table d1.t496(n int);
+create table d1.t495(n int);
+create table d1.t494(n int);
+create table d1.t493(n int);
+create table d1.t492(n int);
+create table d1.t491(n int);
+create table d1.t490(n int);
+create table d1.t489(n int);
+create table d1.t488(n int);
+create table d1.t487(n int);
+create table d1.t486(n int);
+create table d1.t485(n int);
+create table d1.t484(n int);
+create table d1.t483(n int);
+create table d1.t482(n int);
+create table d1.t481(n int);
+create table d1.t480(n int);
+create table d1.t479(n int);
+create table d1.t478(n int);
+create table d1.t477(n int);
+create table d1.t476(n int);
+create table d1.t475(n int);
+create table d1.t474(n int);
+create table d1.t473(n int);
+create table d1.t472(n int);
+create table d1.t471(n int);
+create table d1.t470(n int);
+create table d1.t469(n int);
+create table d1.t468(n int);
+create table d1.t467(n int);
+create table d1.t466(n int);
+create table d1.t465(n int);
+create table d1.t464(n int);
+create table d1.t463(n int);
+create table d1.t462(n int);
+create table d1.t461(n int);
+create table d1.t460(n int);
+create table d1.t459(n int);
+create table d1.t458(n int);
+create table d1.t457(n int);
+create table d1.t456(n int);
+create table d1.t455(n int);
+create table d1.t454(n int);
+create table d1.t453(n int);
+create table d1.t452(n int);
+create table d1.t451(n int);
+create table d1.t450(n int);
+create table d1.t449(n int);
+create table d1.t448(n int);
+create table d1.t447(n int);
+create table d1.t446(n int);
+create table d1.t445(n int);
+create table d1.t444(n int);
+create table d1.t443(n int);
+create table d1.t442(n int);
+create table d1.t441(n int);
+create table d1.t440(n int);
+create table d1.t439(n int);
+create table d1.t438(n int);
+create table d1.t437(n int);
+create table d1.t436(n int);
+create table d1.t435(n int);
+create table d1.t434(n int);
+create table d1.t433(n int);
+create table d1.t432(n int);
+create table d1.t431(n int);
+create table d1.t430(n int);
+create table d1.t429(n int);
+create table d1.t428(n int);
+create table d1.t427(n int);
+create table d1.t426(n int);
+create table d1.t425(n int);
+create table d1.t424(n int);
+create table d1.t423(n int);
+create table d1.t422(n int);
+create table d1.t421(n int);
+create table d1.t420(n int);
+create table d1.t419(n int);
+create table d1.t418(n int);
+create table d1.t417(n int);
+create table d1.t416(n int);
+create table d1.t415(n int);
+create table d1.t414(n int);
+create table d1.t413(n int);
+create table d1.t412(n int);
+create table d1.t411(n int);
+create table d1.t410(n int);
+create table d1.t409(n int);
+create table d1.t408(n int);
+create table d1.t407(n int);
+create table d1.t406(n int);
+create table d1.t405(n int);
+create table d1.t404(n int);
+create table d1.t403(n int);
+create table d1.t402(n int);
+create table d1.t401(n int);
+create table d1.t400(n int);
+create table d1.t399(n int);
+create table d1.t398(n int);
+create table d1.t397(n int);
+create table d1.t396(n int);
+create table d1.t395(n int);
+create table d1.t394(n int);
+create table d1.t393(n int);
+create table d1.t392(n int);
+create table d1.t391(n int);
+create table d1.t390(n int);
+create table d1.t389(n int);
+create table d1.t388(n int);
+create table d1.t387(n int);
+create table d1.t386(n int);
+create table d1.t385(n int);
+create table d1.t384(n int);
+create table d1.t383(n int);
+create table d1.t382(n int);
+create table d1.t381(n int);
+create table d1.t380(n int);
+create table d1.t379(n int);
+create table d1.t378(n int);
+create table d1.t377(n int);
+create table d1.t376(n int);
+create table d1.t375(n int);
+create table d1.t374(n int);
+create table d1.t373(n int);
+create table d1.t372(n int);
+create table d1.t371(n int);
+create table d1.t370(n int);
+create table d1.t369(n int);
+create table d1.t368(n int);
+create table d1.t367(n int);
+create table d1.t366(n int);
+create table d1.t365(n int);
+create table d1.t364(n int);
+create table d1.t363(n int);
+create table d1.t362(n int);
+create table d1.t361(n int);
+create table d1.t360(n int);
+create table d1.t359(n int);
+create table d1.t358(n int);
+create table d1.t357(n int);
+create table d1.t356(n int);
+create table d1.t355(n int);
+create table d1.t354(n int);
+create table d1.t353(n int);
+create table d1.t352(n int);
+create table d1.t351(n int);
+create table d1.t350(n int);
+create table d1.t349(n int);
+create table d1.t348(n int);
+create table d1.t347(n int);
+create table d1.t346(n int);
+create table d1.t345(n int);
+create table d1.t344(n int);
+create table d1.t343(n int);
+create table d1.t342(n int);
+create table d1.t341(n int);
+create table d1.t340(n int);
+create table d1.t339(n int);
+create table d1.t338(n int);
+create table d1.t337(n int);
+create table d1.t336(n int);
+create table d1.t335(n int);
+create table d1.t334(n int);
+create table d1.t333(n int);
+create table d1.t332(n int);
+create table d1.t331(n int);
+create table d1.t330(n int);
+create table d1.t329(n int);
+create table d1.t328(n int);
+create table d1.t327(n int);
+create table d1.t326(n int);
+create table d1.t325(n int);
+create table d1.t324(n int);
+create table d1.t323(n int);
+create table d1.t322(n int);
+create table d1.t321(n int);
+create table d1.t320(n int);
+create table d1.t319(n int);
+create table d1.t318(n int);
+create table d1.t317(n int);
+create table d1.t316(n int);
+create table d1.t315(n int);
+create table d1.t314(n int);
+create table d1.t313(n int);
+create table d1.t312(n int);
+create table d1.t311(n int);
+create table d1.t310(n int);
+create table d1.t309(n int);
+create table d1.t308(n int);
+create table d1.t307(n int);
+create table d1.t306(n int);
+create table d1.t305(n int);
+create table d1.t304(n int);
+create table d1.t303(n int);
+create table d1.t302(n int);
+create table d1.t301(n int);
+create table d1.t300(n int);
+create table d1.t299(n int);
+create table d1.t298(n int);
+create table d1.t297(n int);
+create table d1.t296(n int);
+create table d1.t295(n int);
+create table d1.t294(n int);
+create table d1.t293(n int);
+create table d1.t292(n int);
+create table d1.t291(n int);
+create table d1.t290(n int);
+create table d1.t289(n int);
+create table d1.t288(n int);
+create table d1.t287(n int);
+create table d1.t286(n int);
+create table d1.t285(n int);
+create table d1.t284(n int);
+create table d1.t283(n int);
+create table d1.t282(n int);
+create table d1.t281(n int);
+create table d1.t280(n int);
+create table d1.t279(n int);
+create table d1.t278(n int);
+create table d1.t277(n int);
+create table d1.t276(n int);
+create table d1.t275(n int);
+create table d1.t274(n int);
+create table d1.t273(n int);
+create table d1.t272(n int);
+create table d1.t271(n int);
+create table d1.t270(n int);
+create table d1.t269(n int);
+create table d1.t268(n int);
+create table d1.t267(n int);
+create table d1.t266(n int);
+create table d1.t265(n int);
+create table d1.t264(n int);
+create table d1.t263(n int);
+create table d1.t262(n int);
+create table d1.t261(n int);
+create table d1.t260(n int);
+create table d1.t259(n int);
+create table d1.t258(n int);
+create table d1.t257(n int);
+create table d1.t256(n int);
+create table d1.t255(n int);
+create table d1.t254(n int);
+create table d1.t253(n int);
+create table d1.t252(n int);
+create table d1.t251(n int);
+create table d1.t250(n int);
+create table d1.t249(n int);
+create table d1.t248(n int);
+create table d1.t247(n int);
+create table d1.t246(n int);
+create table d1.t245(n int);
+create table d1.t244(n int);
+create table d1.t243(n int);
+create table d1.t242(n int);
+create table d1.t241(n int);
+create table d1.t240(n int);
+create table d1.t239(n int);
+create table d1.t238(n int);
+create table d1.t237(n int);
+create table d1.t236(n int);
+create table d1.t235(n int);
+create table d1.t234(n int);
+create table d1.t233(n int);
+create table d1.t232(n int);
+create table d1.t231(n int);
+create table d1.t230(n int);
+create table d1.t229(n int);
+create table d1.t228(n int);
+create table d1.t227(n int);
+create table d1.t226(n int);
+create table d1.t225(n int);
+create table d1.t224(n int);
+create table d1.t223(n int);
+create table d1.t222(n int);
+create table d1.t221(n int);
+create table d1.t220(n int);
+create table d1.t219(n int);
+create table d1.t218(n int);
+create table d1.t217(n int);
+create table d1.t216(n int);
+create table d1.t215(n int);
+create table d1.t214(n int);
+create table d1.t213(n int);
+create table d1.t212(n int);
+create table d1.t211(n int);
+create table d1.t210(n int);
+create table d1.t209(n int);
+create table d1.t208(n int);
+create table d1.t207(n int);
+create table d1.t206(n int);
+create table d1.t205(n int);
+create table d1.t204(n int);
+create table d1.t203(n int);
+create table d1.t202(n int);
+create table d1.t201(n int);
+create table d1.t200(n int);
+create table d1.t199(n int);
+create table d1.t198(n int);
+create table d1.t197(n int);
+create table d1.t196(n int);
+create table d1.t195(n int);
+create table d1.t194(n int);
+create table d1.t193(n int);
+create table d1.t192(n int);
+create table d1.t191(n int);
+create table d1.t190(n int);
+create table d1.t189(n int);
+create table d1.t188(n int);
+create table d1.t187(n int);
+create table d1.t186(n int);
+create table d1.t185(n int);
+create table d1.t184(n int);
+create table d1.t183(n int);
+create table d1.t182(n int);
+create table d1.t181(n int);
+create table d1.t180(n int);
+create table d1.t179(n int);
+create table d1.t178(n int);
+create table d1.t177(n int);
+create table d1.t176(n int);
+create table d1.t175(n int);
+create table d1.t174(n int);
+create table d1.t173(n int);
+create table d1.t172(n int);
+create table d1.t171(n int);
+create table d1.t170(n int);
+create table d1.t169(n int);
+create table d1.t168(n int);
+create table d1.t167(n int);
+create table d1.t166(n int);
+create table d1.t165(n int);
+create table d1.t164(n int);
+create table d1.t163(n int);
+create table d1.t162(n int);
+create table d1.t161(n int);
+create table d1.t160(n int);
+create table d1.t159(n int);
+create table d1.t158(n int);
+create table d1.t157(n int);
+create table d1.t156(n int);
+create table d1.t155(n int);
+create table d1.t154(n int);
+create table d1.t153(n int);
+create table d1.t152(n int);
+create table d1.t151(n int);
+create table d1.t150(n int);
+create table d1.t149(n int);
+create table d1.t148(n int);
+create table d1.t147(n int);
+create table d1.t146(n int);
+create table d1.t145(n int);
+create table d1.t144(n int);
+create table d1.t143(n int);
+create table d1.t142(n int);
+create table d1.t141(n int);
+create table d1.t140(n int);
+create table d1.t139(n int);
+create table d1.t138(n int);
+create table d1.t137(n int);
+create table d1.t136(n int);
+create table d1.t135(n int);
+create table d1.t134(n int);
+create table d1.t133(n int);
+create table d1.t132(n int);
+create table d1.t131(n int);
+create table d1.t130(n int);
+create table d1.t129(n int);
+create table d1.t128(n int);
+create table d1.t127(n int);
+create table d1.t126(n int);
+create table d1.t125(n int);
+create table d1.t124(n int);
+create table d1.t123(n int);
+create table d1.t122(n int);
+create table d1.t121(n int);
+create table d1.t120(n int);
+create table d1.t119(n int);
+create table d1.t118(n int);
+create table d1.t117(n int);
+create table d1.t116(n int);
+create table d1.t115(n int);
+create table d1.t114(n int);
+create table d1.t113(n int);
+create table d1.t112(n int);
+create table d1.t111(n int);
+create table d1.t110(n int);
+create table d1.t109(n int);
+create table d1.t108(n int);
+create table d1.t107(n int);
+create table d1.t106(n int);
+create table d1.t105(n int);
+create table d1.t104(n int);
+create table d1.t103(n int);
+create table d1.t102(n int);
+create table d1.t101(n int);
+create table d1.t100(n int);
+create table d1.t99(n int);
+create table d1.t98(n int);
+create table d1.t97(n int);
+create table d1.t96(n int);
+create table d1.t95(n int);
+create table d1.t94(n int);
+create table d1.t93(n int);
+create table d1.t92(n int);
+create table d1.t91(n int);
+create table d1.t90(n int);
+create table d1.t89(n int);
+create table d1.t88(n int);
+create table d1.t87(n int);
+create table d1.t86(n int);
+create table d1.t85(n int);
+create table d1.t84(n int);
+create table d1.t83(n int);
+create table d1.t82(n int);
+create table d1.t81(n int);
+create table d1.t80(n int);
+create table d1.t79(n int);
+create table d1.t78(n int);
+create table d1.t77(n int);
+create table d1.t76(n int);
+create table d1.t75(n int);
+create table d1.t74(n int);
+create table d1.t73(n int);
+create table d1.t72(n int);
+create table d1.t71(n int);
+create table d1.t70(n int);
+create table d1.t69(n int);
+create table d1.t68(n int);
+create table d1.t67(n int);
+create table d1.t66(n int);
+create table d1.t65(n int);
+create table d1.t64(n int);
+create table d1.t63(n int);
+create table d1.t62(n int);
+create table d1.t61(n int);
+create table d1.t60(n int);
+create table d1.t59(n int);
+create table d1.t58(n int);
+create table d1.t57(n int);
+create table d1.t56(n int);
+create table d1.t55(n int);
+create table d1.t54(n int);
+create table d1.t53(n int);
+create table d1.t52(n int);
+create table d1.t51(n int);
+create table d1.t50(n int);
+create table d1.t49(n int);
+create table d1.t48(n int);
+create table d1.t47(n int);
+create table d1.t46(n int);
+create table d1.t45(n int);
+create table d1.t44(n int);
+create table d1.t43(n int);
+create table d1.t42(n int);
+create table d1.t41(n int);
+create table d1.t40(n int);
+create table d1.t39(n int);
+create table d1.t38(n int);
+create table d1.t37(n int);
+create table d1.t36(n int);
+create table d1.t35(n int);
+create table d1.t34(n int);
+create table d1.t33(n int);
+create table d1.t32(n int);
+create table d1.t31(n int);
+create table d1.t30(n int);
+create table d1.t29(n int);
+create table d1.t28(n int);
+create table d1.t27(n int);
+create table d1.t26(n int);
+create table d1.t25(n int);
+create table d1.t24(n int);
+create table d1.t23(n int);
+create table d1.t22(n int);
+create table d1.t21(n int);
+create table d1.t20(n int);
+create table d1.t19(n int);
+create table d1.t18(n int);
+create table d1.t17(n int);
+create table d1.t16(n int);
+create table d1.t15(n int);
+create table d1.t14(n int);
+create table d1.t13(n int);
+create table d1.t12(n int);
+create table d1.t11(n int);
+create table d1.t10(n int);
+create table d1.t9(n int);
+create table d1.t8(n int);
+create table d1.t7(n int);
+create table d1.t6(n int);
+create table d1.t5(n int);
+create table d1.t4(n int);
+create table d1.t3(n int);
+create table d1.t2(n int);
+create table d1.t1(n int);
+drop database d1;
+ERROR HY000: Error dropping database (can't rmdir './d1/', errno: 17)
+use d1;
+show tables;
+Tables_in_d1
 use test;
 create table t1 (n int);
 insert into t1 values (1234);

--- 1.1/mysql-test/t/rpl_drop_db.test	2005-08-03 18:08:16 -06:00
+++ 1.2/mysql-test/t/rpl_drop_db.test	2005-08-18 21:40:10 -06:00
@@ -17,6 +17,19 @@
 drop database d1;
 use d1;
 show tables;
+
+# test the branch of the code that deals with the query buffer overflow
+
+let $1=1000;
+while ($1)
+{
+  eval create table d1.t$1(n int);
+  dec $1;
+}
+--error 1010
+drop database d1;
+use d1;
+show tables;
 use test;
 create table t1 (n int);
 insert into t1 values (1234);

--- 1.230/BitKeeper/etc/ignore	2005-07-27 04:44:08 -06:00
+++ 1.231/BitKeeper/etc/ignore	2005-08-18 21:40:11 -06:00
@@ -1054,3 +1054,5 @@
 vio/test-sslserver
 vio/viotest-ssl
 ndb/tools/ndb_config
+support-files/MacOSX/postflight
+support-files/MacOSX/preflight
Thread
bk commit into 4.1 tree (sasha:1.2386) BUG#4680Sasha Pachev19 Aug