1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-12-20 01:42:27 +03:00

Merge pull request #1278 from mariadb-corporation/revert-1268-mcol4043-1-1.5

Revert "MCOL-4043 Fix memory leaks - 1"
This commit is contained in:
Patrick LeBlanc
2020-06-15 10:40:55 -05:00
committed by GitHub
7 changed files with 2 additions and 54 deletions

View File

@@ -150,14 +150,8 @@ SimpleFilter::SimpleFilter(const SimpleFilter& rhs) :
SimpleFilter::~SimpleFilter() SimpleFilter::~SimpleFilter()
{ {
//delete fOp; //delete fOp;
if (fLhs != NULL) delete fLhs;
delete fLhs; delete fRhs;
if (fRhs != NULL)
delete fRhs;
fLhs = NULL;
fRhs = NULL;
} }
/** /**

View File

@@ -364,11 +364,6 @@ struct JobInfo
bool isDML; bool isDML;
std::string timeZone; std::string timeZone;
// This is for tracking any dynamically allocated ParseTree objects
// in simpleScalarFilterToParseTree() for later deletion in
// JobList::~JobList()
std::vector<std::pair<execplan::ParseTree*, execplan::ParseTree*>> dynamicParseTreeVec;
private: private:
//defaults okay //defaults okay
//JobInfo(const JobInfo& rhs); //JobInfo(const JobInfo& rhs);

View File

@@ -3269,12 +3269,6 @@ void doOR(ParseTree* n, JobInfo& jobInfo, bool tryCombine)
ccp->left(parseTree->left()); ccp->left(parseTree->left());
ccp->right(parseTree->right()); ccp->right(parseTree->right());
ccp->data(parseTree->data()); ccp->data(parseTree->data());
jobInfo.dynamicParseTreeVec.push_back(make_pair(parseTree, ccp));
}
else if (parseTree)
{
delete parseTree;
parseTree = NULL;
} }
} }

View File

@@ -192,10 +192,7 @@ void ssfInHaving(ParseTree* pt, void* obj)
pt->right(parseTree->right()); pt->right(parseTree->right());
pt->data(parseTree->data()); pt->data(parseTree->data());
jobInfo->dynamicParseTreeVec.push_back(make_pair(parseTree, pt));
// don't delete the parseTree, it has been placed in the plan. // don't delete the parseTree, it has been placed in the plan.
// Instead, we use the dynamicParseTreeVec above for deletion
// in the JobList dtor after the query executes.
// delete parseTree; // delete parseTree;
} }
else else
@@ -630,10 +627,7 @@ void doSimpleScalarFilter(ParseTree* p, JobInfo& jobInfo)
// create job steps for each simple filter // create job steps for each simple filter
JLF_ExecPlanToJobList::walkTree(parseTree, jobInfo); JLF_ExecPlanToJobList::walkTree(parseTree, jobInfo);
jobInfo.dynamicParseTreeVec.push_back(make_pair(parseTree, ccp));
// don't delete the parseTree, it has been placed in the plan. // don't delete the parseTree, it has been placed in the plan.
// Instead, we use the dynamicParseTreeVec above for deletion
// in the JobList dtor after the query executes.
// delete parseTree; // delete parseTree;
} }
else else

View File

@@ -142,26 +142,6 @@ JobList::~JobList()
(*iter)->join(); (*iter)->join();
} }
} }
for (auto& parseTree : fDynamicParseTreeVec)
{
if (parseTree.first)
{
delete parseTree.first;
parseTree.first = NULL;
// Note that we don't delete parseTree.second here,
// that is handled by CalpontSelectExecutionPlan::unserialize().
// parseTree.first already deleted the objects pointed to by
// parseTree.second->left()/right()/data(), so we set the
// pointers to NULL here.
if (parseTree.second)
{
parseTree.second->left((ParseTree*) (NULL));
parseTree.second->right((ParseTree*) (NULL));
parseTree.second->data((TreeNode*) (NULL));
}
}
}
} }
catch (exception& ex) catch (exception& ex)
{ {

View File

@@ -34,7 +34,6 @@
#include "jobstep.h" #include "jobstep.h"
#include "bytestream.h" #include "bytestream.h"
#include "parsetree.h"
#ifndef __GNUC__ #ifndef __GNUC__
# ifndef __attribute__ # ifndef __attribute__
@@ -191,12 +190,6 @@ public:
fPmsConfigured = pms; fPmsConfigured = pms;
} }
virtual void setDynamicParseTreeVec(
const std::vector<std::pair<execplan::ParseTree*, execplan::ParseTree*>>& dynamicParseTreeVec)
{
fDynamicParseTreeVec = dynamicParseTreeVec;
}
protected: protected:
//defaults okay //defaults okay
//JobList(const JobList& rhs); //JobList(const JobList& rhs);
@@ -224,7 +217,6 @@ protected:
volatile uint32_t fAborted; volatile uint32_t fAborted;
uint32_t fPriority; //higher #s = higher priority uint32_t fPriority; //higher #s = higher priority
std::vector<std::pair<execplan::ParseTree*, execplan::ParseTree*>> fDynamicParseTreeVec;
}; };
class TupleJobList : public JobList class TupleJobList : public JobList

View File

@@ -2003,7 +2003,6 @@ SJLP makeJobList_(
jl->addQuery(querySteps); jl->addQuery(querySteps);
jl->addProject(projectSteps); jl->addProject(projectSteps);
jl->addDelivery(deliverySteps); jl->addDelivery(deliverySteps);
jl->setDynamicParseTreeVec(jobInfo.dynamicParseTreeVec);
dynamic_cast<TupleJobList*>(jl)->setDeliveryFlag(true); dynamic_cast<TupleJobList*>(jl)->setDeliveryFlag(true);
} }