diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index d2a242a6b01..5f44530b2db 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -3278,8 +3278,7 @@ int ha_ndbcluster::extra(enum ha_extra_function operation) break; case HA_EXTRA_RESET: /* Reset database to after open */ DBUG_PRINT("info", ("HA_EXTRA_RESET")); - DBUG_PRINT("info", ("Clearing condition stack")); - cond_clear(); + reset(); break; case HA_EXTRA_CACHE: /* Cash record in HA_rrnd() */ DBUG_PRINT("info", ("HA_EXTRA_CACHE")); @@ -3401,6 +3400,21 @@ int ha_ndbcluster::extra(enum ha_extra_function operation) 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 be used in write_row and get_autoincrement to send an optimal number diff --git a/sql/ha_ndbcluster.h b/sql/ha_ndbcluster.h index 274dc53e547..6b49b0e3c70 100644 --- a/sql/ha_ndbcluster.h +++ b/sql/ha_ndbcluster.h @@ -553,6 +553,7 @@ class ha_ndbcluster: public handler int info(uint); int extra(enum ha_extra_function operation); int extra_opt(enum ha_extra_function operation, ulong cache_size); + int reset(); int external_lock(THD *thd, int lock_type); void unlock_row(); int start_stmt(THD *thd, thr_lock_type lock_type);