summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorpekka@sama.ndb.mysql.com <>2007-10-14 17:51:11 +0200
committerpekka@sama.ndb.mysql.com <>2007-10-14 17:51:11 +0200
commitdfeeb642ddabd47ef8f3dc7ef735e3ae227f753f (patch)
tree27a48c3c7aa28aaea7cdf8721bc2e56378d692a1 /storage
parent2a595c1bc1d55fe2adec6c47f89f00ab6df47fa8 (diff)
parentfe4584c23fc50800e70848737c5aaa9a7d306f0d (diff)
downloadmariadb-git-dfeeb642ddabd47ef8f3dc7ef735e3ae227f753f.tar.gz
Merge sama.ndb.mysql.com:/export/space/pekka/ndb/version/my51-ndb
into sama.ndb.mysql.com:/export/space/pekka/ndb/version/my51-bug29390
Diffstat (limited to 'storage')
-rw-r--r--storage/ndb/src/ndbapi/NdbScanFilter.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/storage/ndb/src/ndbapi/NdbScanFilter.cpp b/storage/ndb/src/ndbapi/NdbScanFilter.cpp
index 4c052110040..25f74ce71a4 100644
--- a/storage/ndb/src/ndbapi/NdbScanFilter.cpp
+++ b/storage/ndb/src/ndbapi/NdbScanFilter.cpp
@@ -22,6 +22,7 @@
#include <Interpreter.hpp>
#include <signaldata/AttrInfo.hpp>
#include "NdbApiSignal.hpp"
+#include "NdbUtil.hpp"
#ifdef VM_TRACE
#include <NdbEnv.h>
@@ -625,12 +626,43 @@ NdbScanFilterImpl::handle_filter_too_large()
op->theStatus = m_initial_op_status;
// reset interpreter state to initial
+
+ NdbBranch* tBranch = op->theFirstBranch;
+ while (tBranch != NULL) {
+ NdbBranch* tmp = tBranch;
+ tBranch = tBranch->theNext;
+ op->theNdb->releaseNdbBranch(tmp);
+ }
op->theFirstBranch = NULL;
op->theLastBranch = NULL;
+
+ NdbLabel* tLabel = op->theFirstLabel;
+ while (tLabel != NULL) {
+ NdbLabel* tmp = tLabel;
+ tLabel = tLabel->theNext;
+ op->theNdb->releaseNdbLabel(tmp);
+ }
+ op->theFirstLabel = NULL;
+ op->theLastLabel = NULL;
+
+ NdbCall* tCall = op->theFirstCall;
+ while (tCall != NULL) {
+ NdbCall* tmp = tCall;
+ tCall = tCall->theNext;
+ op->theNdb->releaseNdbCall(tmp);
+ }
op->theFirstCall = NULL;
op->theLastCall = NULL;
+
+ NdbSubroutine* tSubroutine = op->theFirstSubroutine;
+ while (tSubroutine != NULL) {
+ NdbSubroutine* tmp = tSubroutine;
+ tSubroutine = tSubroutine->theNext;
+ op->theNdb->releaseNdbSubroutine(tmp);
+ }
op->theFirstSubroutine = NULL;
op->theLastSubroutine = NULL;
+
op->theNoOfLabels = 0;
op->theNoOfSubroutines = 0;