Commit ad594de4 authored by unknown's avatar unknown
Browse files

merged


mysys/my_alloc.c:
  Auto merged
sql/sql_table.cc:
  Auto merged
parents 9f23fa95 9e796abb
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -4,29 +4,29 @@ reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
drop database if exists mysqltest;
create database mysqltest;
create table mysqltest.t1 (n int);
insert into mysqltest.t1 values (1);
select * from mysqltest.t1 into outfile 'mysqltest/f1.txt';
create table mysqltest.t2 (n int);
create table mysqltest.t3 (n int);
drop database mysqltest;
ERROR HY000: Error dropping database (can't rmdir './mysqltest/', errno: 17)
use mysqltest;
drop database if exists mysqltest1;
create database mysqltest1;
create table mysqltest1.t1 (n int);
insert into mysqltest1.t1 values (1);
select * from mysqltest1.t1 into outfile 'mysqltest1/f1.txt';
create table mysqltest1.t2 (n int);
create table mysqltest1.t3 (n int);
drop database mysqltest1;
ERROR HY000: Error dropping database (can't rmdir './mysqltest1/', errno: 17)
use mysqltest1;
show tables;
Tables_in_mysqltest
drop database mysqltest;
ERROR HY000: Error dropping database (can't rmdir './mysqltest/', errno: 17)
use mysqltest;
Tables_in_mysqltest1
drop database mysqltest1;
ERROR HY000: Error dropping database (can't rmdir './mysqltest1/', errno: 17)
use mysqltest1;
show tables;
Tables_in_mysqltest
Tables_in_mysqltest1
use test;
create table t1 (n int);
insert into t1 values (1234);
use mysqltest;
use mysqltest1;
show tables;
Tables_in_mysqltest
Tables_in_mysqltest1
use test;
select * from t1;
n
+18 −19
Original line number Diff line number Diff line
@@ -5,32 +5,33 @@
connection master;

--disable_warnings
drop database if exists mysqltest;
drop database if exists mysqltest1;
--enable_warnings
create database mysqltest;
create table mysqltest.t1 (n int);
insert into mysqltest.t1 values (1);
select * from mysqltest.t1 into outfile 'mysqltest/f1.txt';
create table mysqltest.t2 (n int);
create table mysqltest.t3 (n int);
create database mysqltest1;
create table mysqltest1.t1 (n int);
insert into mysqltest1.t1 values (1);
select * from mysqltest1.t1 into outfile 'mysqltest1/f1.txt';
create table mysqltest1.t2 (n int);
create table mysqltest1.t3 (n int);
--error 1010
drop database mysqltest;
use mysqltest;
drop database mysqltest1;
use mysqltest1;
show tables;

# test the branch of the code that deals with the query buffer overflow

disable_query_log;
let $1=50;
--disable_query_log
let $1=1000;
while ($1)
{
  eval create table mysqltest.mysql_test_long_table_name$1 (n int);
  eval create table mysqltest1.t$1(n int);
  dec $1;
}
enable_query_log;
--enable_query_log

--error 1010
drop database mysqltest;
use mysqltest;
drop database mysqltest1;
use mysqltest1;
show tables;
use test;
create table t1 (n int);
@@ -38,7 +39,7 @@ insert into t1 values (1234);
sync_slave_with_master;

connection slave;
use mysqltest;
use mysqltest1;
show tables;
use test;
select * from t1;
@@ -50,7 +51,5 @@ sync_slave_with_master;
#cleanup
connection slave;
stop slave;
system rm -rf var/master-data/mysqltest;

# End of 4.1 tests
system rm -rf var/master-data/mysqltest1;
+14 −1
Original line number Diff line number Diff line
@@ -221,6 +221,12 @@ gptr alloc_root(MEM_ROOT *mem_root,unsigned int Size)
#endif
}

#ifdef SAFEMALLOC
#define TRASH(X) bfill(((char*)(X) + ((X)->size-(X)->left)), (X)->left, 0xa5)
#else
#define TRASH /* no-op */
#endif

/* Mark all data in blocks free for reusage */

static inline void mark_blocks_free(MEM_ROOT* root)
@@ -231,14 +237,20 @@ static inline void mark_blocks_free(MEM_ROOT* root)
  /* iterate through (partially) free blocks, mark them free */
  last= &root->free;
  for (next= root->free; next; next= *(last= &next->next))
  {
    next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM));
    TRASH(next);
  }

  /* Combine the free and the used list */
  *last= next=root->used;

  /* now go through the used blocks and mark them free */
  for (; next; next= next->next)
  {
    next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM));
    TRASH(next);
  }

  /* Now everything is set; Indicate that nothing is used anymore */
  root->used= 0;
@@ -298,6 +310,7 @@ void free_root(MEM_ROOT *root, myf MyFlags)
  {
    root->free=root->pre_alloc;
    root->free->left=root->pre_alloc->size-ALIGN_SIZE(sizeof(USED_MEM));
    TRASH(root->pre_alloc);
    root->free->next=0;
  }
  root->block_num= 4;
+8 −10
Original line number Diff line number Diff line
@@ -709,11 +709,9 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
    for (tbl= dropped_tables; tbl; tbl= tbl->next_local)
    {
      uint tbl_name_len;
      if (!tbl->was_dropped)
        continue;

      /* 3 for the quotes and the comma*/
      tbl_name_len= strlen(tbl->table_name) + 3; 
      tbl_name_len= strlen(tbl->real_name) + 3;
      if (query_pos + tbl_name_len + 1 >= query_end)
      {
        write_to_binlog(thd, query, query_pos -1 - query, db, db_len);
+0 −3
Original line number Diff line number Diff line
@@ -229,7 +229,6 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
  for (table= tables; table; table= table->next_local)
  {
    char *db=table->db;
    table->was_dropped= 0;
    mysql_ha_flush(thd, table, MYSQL_HA_CLOSE_FINAL);
    if (!close_temporary_table(thd, db, table->table_name))
    {
@@ -301,8 +300,6 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
	wrong_tables.append(',');
      wrong_tables.append(String(table->table_name,system_charset_info));
    }
    else
      table->was_dropped= 1;
  }
  thd->tmp_table_used= tmp_table_deleted;
  error= 0;
Loading