diff options
author | pekka@sama.ndb.mysql.com <> | 2007-10-14 17:51:11 +0200 |
---|---|---|
committer | pekka@sama.ndb.mysql.com <> | 2007-10-14 17:51:11 +0200 |
commit | dfeeb642ddabd47ef8f3dc7ef735e3ae227f753f (patch) | |
tree | 27a48c3c7aa28aaea7cdf8721bc2e56378d692a1 /storage | |
parent | 2a595c1bc1d55fe2adec6c47f89f00ab6df47fa8 (diff) | |
parent | fe4584c23fc50800e70848737c5aaa9a7d306f0d (diff) | |
download | mariadb-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.cpp | 32 |
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; |