mirror of
https://github.com/MariaDB/server.git
synced 2025-06-26 17:42:13 +03:00
merged
mysys/my_alloc.c: Auto merged sql/sql_table.cc: Auto merged
This commit is contained in:
@ -4,29 +4,29 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
drop database if exists mysqltest;
|
drop database if exists mysqltest1;
|
||||||
create database mysqltest;
|
create database mysqltest1;
|
||||||
create table mysqltest.t1 (n int);
|
create table mysqltest1.t1 (n int);
|
||||||
insert into mysqltest.t1 values (1);
|
insert into mysqltest1.t1 values (1);
|
||||||
select * from mysqltest.t1 into outfile 'mysqltest/f1.txt';
|
select * from mysqltest1.t1 into outfile 'mysqltest1/f1.txt';
|
||||||
create table mysqltest.t2 (n int);
|
create table mysqltest1.t2 (n int);
|
||||||
create table mysqltest.t3 (n int);
|
create table mysqltest1.t3 (n int);
|
||||||
drop database mysqltest;
|
drop database mysqltest1;
|
||||||
ERROR HY000: Error dropping database (can't rmdir './mysqltest/', errno: 17)
|
ERROR HY000: Error dropping database (can't rmdir './mysqltest1/', errno: 17)
|
||||||
use mysqltest;
|
use mysqltest1;
|
||||||
show tables;
|
show tables;
|
||||||
Tables_in_mysqltest
|
Tables_in_mysqltest1
|
||||||
drop database mysqltest;
|
drop database mysqltest1;
|
||||||
ERROR HY000: Error dropping database (can't rmdir './mysqltest/', errno: 17)
|
ERROR HY000: Error dropping database (can't rmdir './mysqltest1/', errno: 17)
|
||||||
use mysqltest;
|
use mysqltest1;
|
||||||
show tables;
|
show tables;
|
||||||
Tables_in_mysqltest
|
Tables_in_mysqltest1
|
||||||
use test;
|
use test;
|
||||||
create table t1 (n int);
|
create table t1 (n int);
|
||||||
insert into t1 values (1234);
|
insert into t1 values (1234);
|
||||||
use mysqltest;
|
use mysqltest1;
|
||||||
show tables;
|
show tables;
|
||||||
Tables_in_mysqltest
|
Tables_in_mysqltest1
|
||||||
use test;
|
use test;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
n
|
n
|
||||||
|
@ -5,32 +5,33 @@
|
|||||||
connection master;
|
connection master;
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop database if exists mysqltest;
|
drop database if exists mysqltest1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
create database mysqltest;
|
create database mysqltest1;
|
||||||
create table mysqltest.t1 (n int);
|
create table mysqltest1.t1 (n int);
|
||||||
insert into mysqltest.t1 values (1);
|
insert into mysqltest1.t1 values (1);
|
||||||
select * from mysqltest.t1 into outfile 'mysqltest/f1.txt';
|
select * from mysqltest1.t1 into outfile 'mysqltest1/f1.txt';
|
||||||
create table mysqltest.t2 (n int);
|
create table mysqltest1.t2 (n int);
|
||||||
create table mysqltest.t3 (n int);
|
create table mysqltest1.t3 (n int);
|
||||||
--error 1010
|
--error 1010
|
||||||
drop database mysqltest;
|
drop database mysqltest1;
|
||||||
use mysqltest;
|
use mysqltest1;
|
||||||
show tables;
|
show tables;
|
||||||
|
|
||||||
# test the branch of the code that deals with the query buffer overflow
|
# test the branch of the code that deals with the query buffer overflow
|
||||||
|
|
||||||
disable_query_log;
|
--disable_query_log
|
||||||
let $1=50;
|
let $1=1000;
|
||||||
while ($1)
|
while ($1)
|
||||||
{
|
{
|
||||||
eval create table mysqltest.mysql_test_long_table_name$1 (n int);
|
eval create table mysqltest1.t$1(n int);
|
||||||
dec $1;
|
dec $1;
|
||||||
}
|
}
|
||||||
enable_query_log;
|
--enable_query_log
|
||||||
|
|
||||||
--error 1010
|
--error 1010
|
||||||
drop database mysqltest;
|
drop database mysqltest1;
|
||||||
use mysqltest;
|
use mysqltest1;
|
||||||
show tables;
|
show tables;
|
||||||
use test;
|
use test;
|
||||||
create table t1 (n int);
|
create table t1 (n int);
|
||||||
@ -38,7 +39,7 @@ insert into t1 values (1234);
|
|||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
use mysqltest;
|
use mysqltest1;
|
||||||
show tables;
|
show tables;
|
||||||
use test;
|
use test;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -50,7 +51,5 @@ sync_slave_with_master;
|
|||||||
#cleanup
|
#cleanup
|
||||||
connection slave;
|
connection slave;
|
||||||
stop slave;
|
stop slave;
|
||||||
system rm -rf var/master-data/mysqltest;
|
system rm -rf var/master-data/mysqltest1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
||||||
|
|
||||||
|
@ -221,6 +221,12 @@ gptr alloc_root(MEM_ROOT *mem_root,unsigned int Size)
|
|||||||
#endif
|
#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 */
|
/* Mark all data in blocks free for reusage */
|
||||||
|
|
||||||
static inline void mark_blocks_free(MEM_ROOT* root)
|
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 */
|
/* iterate through (partially) free blocks, mark them free */
|
||||||
last= &root->free;
|
last= &root->free;
|
||||||
for (next= root->free; next; next= *(last= &next->next))
|
for (next= root->free; next; next= *(last= &next->next))
|
||||||
|
{
|
||||||
next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM));
|
next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM));
|
||||||
|
TRASH(next);
|
||||||
|
}
|
||||||
|
|
||||||
/* Combine the free and the used list */
|
/* Combine the free and the used list */
|
||||||
*last= next=root->used;
|
*last= next=root->used;
|
||||||
|
|
||||||
/* now go through the used blocks and mark them free */
|
/* now go through the used blocks and mark them free */
|
||||||
for (; next; next= next->next)
|
for (; next; next= next->next)
|
||||||
|
{
|
||||||
next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM));
|
next->left= next->size - ALIGN_SIZE(sizeof(USED_MEM));
|
||||||
|
TRASH(next);
|
||||||
|
}
|
||||||
|
|
||||||
/* Now everything is set; Indicate that nothing is used anymore */
|
/* Now everything is set; Indicate that nothing is used anymore */
|
||||||
root->used= 0;
|
root->used= 0;
|
||||||
@ -298,6 +310,7 @@ void free_root(MEM_ROOT *root, myf MyFlags)
|
|||||||
{
|
{
|
||||||
root->free=root->pre_alloc;
|
root->free=root->pre_alloc;
|
||||||
root->free->left=root->pre_alloc->size-ALIGN_SIZE(sizeof(USED_MEM));
|
root->free->left=root->pre_alloc->size-ALIGN_SIZE(sizeof(USED_MEM));
|
||||||
|
TRASH(root->pre_alloc);
|
||||||
root->free->next=0;
|
root->free->next=0;
|
||||||
}
|
}
|
||||||
root->block_num= 4;
|
root->block_num= 4;
|
||||||
|
@ -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)
|
for (tbl= dropped_tables; tbl; tbl= tbl->next_local)
|
||||||
{
|
{
|
||||||
uint tbl_name_len;
|
uint tbl_name_len;
|
||||||
if (!tbl->was_dropped)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* 3 for the quotes and the comma*/
|
/* 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)
|
if (query_pos + tbl_name_len + 1 >= query_end)
|
||||||
{
|
{
|
||||||
write_to_binlog(thd, query, query_pos -1 - query, db, db_len);
|
write_to_binlog(thd, query, query_pos -1 - query, db, db_len);
|
||||||
|
@ -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)
|
for (table= tables; table; table= table->next_local)
|
||||||
{
|
{
|
||||||
char *db=table->db;
|
char *db=table->db;
|
||||||
table->was_dropped= 0;
|
|
||||||
mysql_ha_flush(thd, table, MYSQL_HA_CLOSE_FINAL);
|
mysql_ha_flush(thd, table, MYSQL_HA_CLOSE_FINAL);
|
||||||
if (!close_temporary_table(thd, db, table->table_name))
|
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(',');
|
||||||
wrong_tables.append(String(table->table_name,system_charset_info));
|
wrong_tables.append(String(table->table_name,system_charset_info));
|
||||||
}
|
}
|
||||||
else
|
|
||||||
table->was_dropped= 1;
|
|
||||||
}
|
}
|
||||||
thd->tmp_table_used= tmp_table_deleted;
|
thd->tmp_table_used= tmp_table_deleted;
|
||||||
error= 0;
|
error= 0;
|
||||||
|
@ -570,9 +570,6 @@ typedef struct st_table_list
|
|||||||
st_table_list *embedding; /* nested join containing the table */
|
st_table_list *embedding; /* nested join containing the table */
|
||||||
List<struct st_table_list> *join_list;/* join list the table belongs to */
|
List<struct st_table_list> *join_list;/* join list the table belongs to */
|
||||||
bool cacheable_table; /* stop PS caching */
|
bool cacheable_table; /* stop PS caching */
|
||||||
|
|
||||||
/* used for proper partially successful DROP DATABASE binlogging */
|
|
||||||
bool was_dropped;
|
|
||||||
/* used in multi-upd/views privilege check */
|
/* used in multi-upd/views privilege check */
|
||||||
bool table_in_first_from_clause;
|
bool table_in_first_from_clause;
|
||||||
bool skip_temporary; /* this table shouldn't be temporary */
|
bool skip_temporary; /* this table shouldn't be temporary */
|
||||||
|
Reference in New Issue
Block a user