Bug #27320 ndb handler does not reset extra flags on reset()

- make sure all extra flags are reset
This commit is contained in:
unknown 2007-03-22 12:42:13 +01:00
parent 49f2196da0
commit 22f8f391af
2 changed files with 17 additions and 2 deletions

View file

@ -3282,8 +3282,7 @@ int ha_ndbcluster::extra(enum ha_extra_function operation)
break; break;
case HA_EXTRA_RESET: /* Reset database to after open */ case HA_EXTRA_RESET: /* Reset database to after open */
DBUG_PRINT("info", ("HA_EXTRA_RESET")); DBUG_PRINT("info", ("HA_EXTRA_RESET"));
DBUG_PRINT("info", ("Clearing condition stack")); reset();
cond_clear();
break; break;
case HA_EXTRA_CACHE: /* Cash record in HA_rrnd() */ case HA_EXTRA_CACHE: /* Cash record in HA_rrnd() */
DBUG_PRINT("info", ("HA_EXTRA_CACHE")); DBUG_PRINT("info", ("HA_EXTRA_CACHE"));
@ -3405,6 +3404,21 @@ int ha_ndbcluster::extra(enum ha_extra_function operation)
DBUG_RETURN(0); DBUG_RETURN(0);
} }
int ha_ndbcluster::reset()
{
DBUG_ENTER("ha_ndbcluster::reset");
cond_clear();
/* reset flags set by extra calls */
m_retrieve_all_fields= FALSE;
m_retrieve_primary_key= FALSE;
m_ignore_dup_key= FALSE;
m_use_write= FALSE;
DBUG_RETURN(0);
}
/* /*
Start of an insert, remember number of rows to be inserted, it will Start of an insert, remember number of rows to be inserted, it will
be used in write_row and get_autoincrement to send an optimal number be used in write_row and get_autoincrement to send an optimal number

View file

@ -553,6 +553,7 @@ class ha_ndbcluster: public handler
int info(uint); int info(uint);
int extra(enum ha_extra_function operation); int extra(enum ha_extra_function operation);
int extra_opt(enum ha_extra_function operation, ulong cache_size); int extra_opt(enum ha_extra_function operation, ulong cache_size);
int reset();
int external_lock(THD *thd, int lock_type); int external_lock(THD *thd, int lock_type);
void unlock_row(); void unlock_row();
int start_stmt(THD *thd, thr_lock_type lock_type); int start_stmt(THD *thd, thr_lock_type lock_type);