You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-06-13 16:01:32 +03:00
MCOL-1160 Track and flush dictionary blocks
When bulk write API is used dictionary blocks that are written to needs flushing in PrimProc. This patch tracks the blocks and flushes them.
This commit is contained in:
@ -2027,6 +2027,22 @@ uint8_t WE_DMLCommandProc::commitBatchAutoOn(messageqcpp::ByteStream& bs, std::s
|
||||
if ((idbdatafile::IDBPolicy::useHdfs()) && (files.size()>0) )
|
||||
cacheutils::purgePrimProcFdCache(files, Config::getLocalModuleID());
|
||||
TableMetaData::removeTableMetaData(tableOid);
|
||||
|
||||
// MCOL-1160 For API bulk insert flush the PrimProc cached dictionary
|
||||
// blocks tounched
|
||||
std::tr1::unordered_map<TxnID, dictLBIDRec_t>::iterator mapIter;
|
||||
mapIter = fWEWrapper.getDictMap().find(txnID);
|
||||
if (mapIter != fWEWrapper.getDictMap().end())
|
||||
{
|
||||
std::set<BRM::LBID_t>::iterator lbidIter;
|
||||
std::vector<BRM::LBID_t> dictFlushBlks;
|
||||
for (lbidIter = (*mapIter).second.begin(); lbidIter != (*mapIter).second.end(); lbidIter++)
|
||||
{
|
||||
dictFlushBlks.push_back((*lbidIter));
|
||||
}
|
||||
cacheutils::flushPrimProcAllverBlocks(dictFlushBlks);
|
||||
fWEWrapper.getDictMap().erase(txnID);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user