From 5d48ddb158d33f2ff903a7448315a0c12bc71c2f Mon Sep 17 00:00:00 2001 From: Roman Nozdrin Date: Mon, 16 Apr 2018 16:51:42 +0300 Subject: [PATCH] MCOL-1052 CS group_by_handler now uses CS internal sorting. --- dbcon/joblist/jlf_subquery.cpp | 4 ++-- dbcon/joblist/jlf_tuplejoblist.cpp | 16 ++++++++-------- dbcon/joblist/joblistfactory.cpp | 2 +- dbcon/joblist/limitedorderby.cpp | 12 ++++++++++-- dbcon/mysql/CMakeLists.txt | 3 --- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/dbcon/joblist/jlf_subquery.cpp b/dbcon/joblist/jlf_subquery.cpp index e1537d577..5c868bee3 100644 --- a/dbcon/joblist/jlf_subquery.cpp +++ b/dbcon/joblist/jlf_subquery.cpp @@ -751,8 +751,8 @@ int doFromSubquery(CalpontExecutionPlan* ep, const string& alias, const string& void addOrderByAndLimit(CalpontSelectExecutionPlan* csep, JobInfo& jobInfo) { // make sure there is a LIMIT - if (csep->orderByCols().size() > 0 && csep->limitNum() == (uint64_t) - 1) - return; +// if (csep->orderByCols().size() > 0 csep->limitNum() == (uint64_t) - 1) +// return; jobInfo.limitStart = csep->limitStart(); jobInfo.limitCount = csep->limitNum(); diff --git a/dbcon/joblist/jlf_tuplejoblist.cpp b/dbcon/joblist/jlf_tuplejoblist.cpp index aabc81486..480b23f91 100644 --- a/dbcon/joblist/jlf_tuplejoblist.cpp +++ b/dbcon/joblist/jlf_tuplejoblist.cpp @@ -483,28 +483,28 @@ void adjustLastStep(JobStepVector& querySteps, DeliveredTableMap& deliverySteps, deliverySteps[CNX_VTABLE_ID] = ws; } - if ((jobInfo.limitCount != (uint64_t) - 1) || - (jobInfo.constantCol == CONST_COL_EXIST) || - (jobInfo.hasDistinct)) - { +// if ((jobInfo.limitCount != (uint64_t) - 1) || +// (jobInfo.constantCol == CONST_COL_EXIST) || +// (jobInfo.hasDistinct)) +// { if (jobInfo.annexStep.get() == NULL) jobInfo.annexStep.reset(new TupleAnnexStep(jobInfo)); TupleAnnexStep* tas = dynamic_cast(jobInfo.annexStep.get()); tas->setLimit(jobInfo.limitStart, jobInfo.limitCount); - if (jobInfo.limitCount != (uint64_t) - 1) - { + // if (jobInfo.limitCount != (uint64_t) - 1) +// { if (jobInfo.orderByColVec.size() > 0) tas->addOrderBy(new LimitedOrderBy()); - } +// } if (jobInfo.constantCol == CONST_COL_EXIST) tas->addConstant(new TupleConstantStep(jobInfo)); if (jobInfo.hasDistinct) tas->setDistinct(); - } +// } if (jobInfo.annexStep) { diff --git a/dbcon/joblist/joblistfactory.cpp b/dbcon/joblist/joblistfactory.cpp index 812256869..a48ecd13a 100644 --- a/dbcon/joblist/joblistfactory.cpp +++ b/dbcon/joblist/joblistfactory.cpp @@ -1622,7 +1622,7 @@ void makeVtableModeSteps(CalpontSelectExecutionPlan* csep, JobInfo& jobInfo, JobStepVector& querySteps, JobStepVector& projectSteps, DeliveredTableMap& deliverySteps) { // @bug4848, enhance and unify limit handling. - if (csep->limitNum() != (uint64_t) - 1) +// if (csep->limitNum() != (uint64_t) - 1) { // special case for outer query order by limit -- return all if (jobInfo.subId == 0 && csep->hasOrderBy()) diff --git a/dbcon/joblist/limitedorderby.cpp b/dbcon/joblist/limitedorderby.cpp index e9bcaf95e..6701faf4b 100644 --- a/dbcon/joblist/limitedorderby.cpp +++ b/dbcon/joblist/limitedorderby.cpp @@ -76,7 +76,13 @@ void LimitedOrderBy::initialize(const RowGroup& rg, const JobInfo& jobInfo) { map::iterator j = keyToIndexMap.find(i->first); idbassert(j != keyToIndexMap.end()); - fOrderByCond.push_back(IdbSortSpec(j->second, i->second)); + // MCOL-1052 Ordering direction in CSEP differs from + // internal direction representation. + if (i->second) + fOrderByCond.push_back(IdbSortSpec(j->second, false)); + else + fOrderByCond.push_back(IdbSortSpec(j->second, true)); + //fOrderByCond.push_back(IdbSortSpec(j->second, i->second)); } // limit row count info @@ -174,7 +180,9 @@ void LimitedOrderBy::finalize() if (fRowGroup.getRowCount() > 0) fDataQueue.push(fData); - if (fStart != 0) + // MCOL-1052 The removed check effectivly disables sorting to happen, + // since fStart = 0; + if (true) { uint64_t newSize = fRowsPerRG * fRowGroup.getRowSize(); fMemSize += newSize; diff --git a/dbcon/mysql/CMakeLists.txt b/dbcon/mysql/CMakeLists.txt index a1786481d..104e6bf6e 100644 --- a/dbcon/mysql/CMakeLists.txt +++ b/dbcon/mysql/CMakeLists.txt @@ -20,9 +20,6 @@ SET ( libcalmysql_SRCS ha_pseudocolumn.cpp) add_definitions(-DMYSQL_DYNAMIC_PLUGIN) -add_definitions(-DDEBUG_WALK_COND=1) -add_definitions(-DINFINIDB_DEBUG=1) -#add_definitions(-DOUTER_JOIN_DEBUG) set_source_files_properties(ha_calpont.cpp PROPERTIES COMPILE_FLAGS "-fno-rtti -fno-implicit-templates")