From ee972a4d9fc276a6f47fdb540a7ca88532f018aa Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 4 Nov 2000 13:58:07 -0700 Subject: fix for FLUSH TABLES WITH READ LOCK --- sql/sql_delete.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'sql/sql_delete.cc') diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 9cd3c2f0e9b..2e6bea7239e 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -33,6 +33,25 @@ int generate_table(THD *thd, TABLE_LIST *table_list, DBUG_ENTER("generate_table"); thd->proc_info="generate_table"; + + if(global_read_lock) + { + if(thd->global_read_lock) + { + my_error(ER_TABLE_NOT_LOCKED_FOR_WRITE,MYF(0), + table_list->real_name); + DBUG_RETURN(-1); + } + pthread_mutex_lock(&LOCK_open); + while (global_read_lock && ! thd->killed || + thd->version != refresh_version) + { + (void) pthread_cond_wait(&COND_refresh,&LOCK_open); + } + pthread_mutex_unlock(&LOCK_open); + } + + /* If it is a temporary table, close and regenerate it */ if ((table_ptr=find_temporary_table(thd,table_list->db, table_list->real_name))) -- cgit v1.2.1