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

- make sure all extra flags are reset
parent 5682efdf
...@@ -3282,8 +3282,7 @@ int ha_ndbcluster::extra(enum ha_extra_function operation) ...@@ -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) ...@@ -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
......
...@@ -553,6 +553,7 @@ class ha_ndbcluster: public handler ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment