From c84ea561e1b6006b526b370bc5f8ed5c4b2285fb Mon Sep 17 00:00:00 2001 From: david hill Date: Wed, 8 Nov 2017 12:10:01 -0600 Subject: [PATCH] MCOL-998 - added in binlog_format --- dbcon/execplan/calpontsystemcatalog.cpp | 34 +++++-------------------- dbcon/execplan/calpontsystemcatalog.h | 5 +--- dbcon/mysql/my.cnf | 2 +- 3 files changed, 8 insertions(+), 33 deletions(-) diff --git a/dbcon/execplan/calpontsystemcatalog.cpp b/dbcon/execplan/calpontsystemcatalog.cpp index a5a35bd66..33fe2a7a3 100755 --- a/dbcon/execplan/calpontsystemcatalog.cpp +++ b/dbcon/execplan/calpontsystemcatalog.cpp @@ -1190,7 +1190,7 @@ const CalpontSystemCatalog::ColType CalpontSystemCatalog::colTypeDct(const OID& } // check map first cached column type - boost::recursive_mutex::scoped_lock lk3(fDctTokenMapLock); + boost::mutex::scoped_lock lk3(fDctTokenMapLock); DctTokenMap::const_iterator iter = fDctTokenMap.find(dictOid); if (iter != fDctTokenMap.end()) return colType(iter->second); @@ -3093,35 +3093,18 @@ const CalpontSystemCatalog::RIDList CalpontSystemCatalog::columnRIDs(const Table ctList[i].nextvalue = ((*it)->GetData(i)); } } - // MCOL-895 sort ctList, we can't specify an ORDER BY to do this yet - std::sort(ctList, ctList + ti.numOfCols, ctListSort); - + // populate colinfo cache lk3.lock(); for (int i = 0; i < ti.numOfCols; i++) fColinfomap[ctList[i].columnOID] = ctList[i]; lk3.unlock(); - - // Re-sort the output based on the sorted ctList - // Don't need to do this for the cached list as this will be already sorted - RIDList rlOut; - for (int i = 0; i < ti.numOfCols; i++) - { - OID objid = ctList[i].columnOID; - for (size_t j = 0; j < rl.size(); j++) - { - if (rl[j].objnum == objid) - { - rlOut.push_back(rl[j]); - } - } - } - + delete [] ctList; // delete col[9]; - if (rlOut.size() != 0) + if (rl.size() != 0) { - return rlOut; + return rl; } Message::Args args; @@ -5337,7 +5320,7 @@ void CalpontSystemCatalog::flushCache() buildSysTablemap(); lk3.unlock(); - boost::recursive_mutex::scoped_lock lk4(fDctTokenMapLock); + boost::mutex::scoped_lock lk4(fDctTokenMapLock); fDctTokenMap.clear(); buildSysDctmap(); lk4.unlock(); @@ -5805,10 +5788,5 @@ vector getAllSysCatOIDs() return ret; } -bool ctListSort(const CalpontSystemCatalog::ColType& a, const CalpontSystemCatalog::ColType& b) -{ - return a.colPosition < b.colPosition; -} - } // namespace execplan // vim:sw=4 ts=4: diff --git a/dbcon/execplan/calpontsystemcatalog.h b/dbcon/execplan/calpontsystemcatalog.h index 19e293070..c58e531bc 100755 --- a/dbcon/execplan/calpontsystemcatalog.h +++ b/dbcon/execplan/calpontsystemcatalog.h @@ -871,8 +871,7 @@ private: typedef std::map DctTokenMap; DctTokenMap fDctTokenMap; - // MCOL-859: this can lock when already locked in the same thread - boost::recursive_mutex fDctTokenMapLock; + boost::mutex fDctTokenMapLock; typedef std::map TableNameMap; TableNameMap fTableNameMap; @@ -1247,8 +1246,6 @@ std::ostream& operator<<(std::ostream& os, const CalpontSystemCatalog::ColType& const std::string colDataTypeToString(CalpontSystemCatalog::ColDataType cdt); -bool ctListSort(const CalpontSystemCatalog::ColType& a, const CalpontSystemCatalog::ColType& b); - } //namespace execplan #endif //EXECPLAN_CALPONTSYSTEMCATALOG_H diff --git a/dbcon/mysql/my.cnf b/dbcon/mysql/my.cnf index bdbe7ef26..fb20fd8c9 100644 --- a/dbcon/mysql/my.cnf +++ b/dbcon/mysql/my.cnf @@ -79,7 +79,7 @@ plugin_dir = /usr/local/mariadb/columnstore/mysql/lib/plugi # Replication Master Server (default) # binary logging is required for replication # log-bin=mysql-bin -# binlog_format=ROW +binlog_format=ROW # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host