Loading sql/sql_base.cc +16 −4 Original line number Diff line number Diff line Loading @@ -1012,10 +1012,20 @@ TABLE *find_locked_table(THD *thd, const char *db,const char *table_name) /**************************************************************************** ** Reopen an table because the definition has changed. The date file for the ** table is already closed. ** Returns 0 if ok. ** If table can't be reopened, the entry is unchanged. Reopen an table because the definition has changed. The date file for the table is already closed. SYNOPSIS reopen_table() table Table to be opened locked 1 if we have already a lock on LOCK_open NOTES table->query_id will be 0 if table was reopened RETURN 0 ok 1 error ('table' is unchanged if table couldn't be reopened) ****************************************************************************/ bool reopen_table(TABLE *table,bool locked) Loading Loading @@ -1085,8 +1095,10 @@ bool reopen_table(TABLE *table,bool locked) (*field)->table_name=table->table_name; } for (key=0 ; key < table->keys ; key++) { for (part=0 ; part < table->key_info[key].usable_key_parts ; part++) table->key_info[key].key_part[part].field->table= table; } VOID(pthread_cond_broadcast(&COND_refresh)); error=0; Loading sql/sql_handler.cc +8 −3 Original line number Diff line number Diff line Loading @@ -437,9 +437,14 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, if (!lock) goto err0; // mysql_lock_tables() printed error message already if (cond && ((!cond->fixed && cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1))) if (cond) { if (table->query_id != thd->query_id) cond->cleanup(); // File was reopened if ((!cond->fixed && cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1)) goto err0; } if (keyname) { Loading Loading
sql/sql_base.cc +16 −4 Original line number Diff line number Diff line Loading @@ -1012,10 +1012,20 @@ TABLE *find_locked_table(THD *thd, const char *db,const char *table_name) /**************************************************************************** ** Reopen an table because the definition has changed. The date file for the ** table is already closed. ** Returns 0 if ok. ** If table can't be reopened, the entry is unchanged. Reopen an table because the definition has changed. The date file for the table is already closed. SYNOPSIS reopen_table() table Table to be opened locked 1 if we have already a lock on LOCK_open NOTES table->query_id will be 0 if table was reopened RETURN 0 ok 1 error ('table' is unchanged if table couldn't be reopened) ****************************************************************************/ bool reopen_table(TABLE *table,bool locked) Loading Loading @@ -1085,8 +1095,10 @@ bool reopen_table(TABLE *table,bool locked) (*field)->table_name=table->table_name; } for (key=0 ; key < table->keys ; key++) { for (part=0 ; part < table->key_info[key].usable_key_parts ; part++) table->key_info[key].key_part[part].field->table= table; } VOID(pthread_cond_broadcast(&COND_refresh)); error=0; Loading
sql/sql_handler.cc +8 −3 Original line number Diff line number Diff line Loading @@ -437,9 +437,14 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, if (!lock) goto err0; // mysql_lock_tables() printed error message already if (cond && ((!cond->fixed && cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1))) if (cond) { if (table->query_id != thd->query_id) cond->cleanup(); // File was reopened if ((!cond->fixed && cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1)) goto err0; } if (keyname) { Loading