summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <tomas@whalegate.ndb.mysql.com>2007-03-22 12:42:13 +0100
committerunknown <tomas@whalegate.ndb.mysql.com>2007-03-22 12:42:13 +0100
commit22f8f391af89c644bd82d8e8898808620c356883 (patch)
treecdeeae67ed69c2ddb8c08dfcc1f05add19df364a /sql
parent49f2196da044715f6584b4887d84bdd54ad9d185 (diff)
downloadmariadb-git-22f8f391af89c644bd82d8e8898808620c356883.tar.gz
Bug #27320 ndb handler does not reset extra flags on reset()
- make sure all extra flags are reset
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_ndbcluster.cc18
-rw-r--r--sql/ha_ndbcluster.h1
2 files changed, 17 insertions, 2 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index 877005039e2..71ab1e24f4d 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -3282,8 +3282,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"));
@@ -3405,6 +3404,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);