1
0
mirror of https://github.com/MariaDB/server.git synced 2025-10-27 05:56:07 +03:00

Merge mysql.com:/home/mydev/mysql-5.0

into  mysql.com:/home/mydev/mysql-5.0-5000
This commit is contained in:
unknown
2005-09-13 14:40:45 +02:00
2 changed files with 19 additions and 15 deletions

View File

@@ -1030,23 +1030,23 @@ TABLE *reopen_name_locked_table(THD* thd, TABLE_LIST* table_list)
SYNOPSIS SYNOPSIS
open_table() open_table()
thd Thread context thd Thread context.
table_list Open first table in list table_list Open first table in list.
refresh Pointer to memory that will be set to 1 if refresh INOUT Pointer to memory that will be set to 1 if
we need to close all tables and reopen them we need to close all tables and reopen them.
If this is a NULL pointer, then the is no version If this is a NULL pointer, then the table is not
number checking and the table is not put in the put in the thread-open-list.
thread-open-list
flags Bitmap of flags to modify how open works: flags Bitmap of flags to modify how open works:
MYSQL_LOCK_IGNORE_FLUSH - Open table even if someone MYSQL_LOCK_IGNORE_FLUSH - Open table even if
has done a flush or namelock on it. someone has done a flush or namelock on it.
No version number checking is done.
IMPLEMENTATION IMPLEMENTATION
Uses a cache of open tables to find a table not in use. Uses a cache of open tables to find a table not in use.
RETURN RETURN
NULL Open failed. If refresh is set then one should close NULL Open failed. If refresh is set then one should close
all other tables and retry the open all other tables and retry the open.
# Success. Pointer to TABLE object for open table. # Success. Pointer to TABLE object for open table.
*/ */
@@ -1201,9 +1201,11 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
if (!thd->open_tables) if (!thd->open_tables)
thd->version=refresh_version; thd->version=refresh_version;
else if (thd->version != refresh_version && refresh) else if ((thd->version != refresh_version) &&
! (flags & MYSQL_LOCK_IGNORE_FLUSH))
{ {
/* Someone did a refresh while thread was opening tables */ /* Someone did a refresh while thread was opening tables */
if (refresh)
*refresh=1; *refresh=1;
VOID(pthread_mutex_unlock(&LOCK_open)); VOID(pthread_mutex_unlock(&LOCK_open));
DBUG_RETURN(0); DBUG_RETURN(0);

View File

@@ -1756,7 +1756,8 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
create_info, *extra_fields, *keys, 0, create_info, *extra_fields, *keys, 0,
select_field_count)) select_field_count))
{ {
if (!(table= open_table(thd, create_table, thd->mem_root, (bool*)0, 0))) if (! (table= open_table(thd, create_table, thd->mem_root, (bool*) 0,
MYSQL_LOCK_IGNORE_FLUSH)))
quick_rm_table(create_info->db_type, create_table->db, quick_rm_table(create_info->db_type, create_table->db,
table_case_name(create_info, create_table->table_name)); table_case_name(create_info, create_table->table_name));
} }
@@ -3579,7 +3580,8 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
bzero((void*) &tbl, sizeof(tbl)); bzero((void*) &tbl, sizeof(tbl));
tbl.db= new_db; tbl.db= new_db;
tbl.table_name= tbl.alias= tmp_name; tbl.table_name= tbl.alias= tmp_name;
new_table= open_table(thd, &tbl, thd->mem_root, 0, 0); new_table= open_table(thd, &tbl, thd->mem_root, (bool*) 0,
MYSQL_LOCK_IGNORE_FLUSH);
} }
else else
{ {