You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
Fixes of bugs from ASAN warnings, part one (#2796)
This commit is contained in:
@ -60,7 +60,7 @@ namespace WriteEngine
|
||||
{
|
||||
/*static*/ boost::mutex FileOp::m_createDbRootMutexes;
|
||||
/*static*/ boost::mutex FileOp::m_mkdirMutex;
|
||||
/*static*/ std::map<int, boost::mutex*> FileOp::m_DbRootAddExtentMutexes;
|
||||
/*static*/ std::map<int, boost::mutex> FileOp::m_DbRootAddExtentMutexes;
|
||||
// in 1 call to fwrite(), during initialization
|
||||
|
||||
// StopWatch timer;
|
||||
@ -993,7 +993,7 @@ int FileOp::initColumnExtent(IDBDataFile* pFile, uint16_t dbRoot, int nBlocks, c
|
||||
Stats::startParseEvent(WE_STATS_WAIT_TO_CREATE_COL_EXTENT);
|
||||
|
||||
#endif
|
||||
boost::mutex::scoped_lock lk(*m_DbRootAddExtentMutexes[dbRoot]);
|
||||
boost::mutex::scoped_lock lk(m_DbRootAddExtentMutexes[dbRoot]);
|
||||
#ifdef PROFILE
|
||||
|
||||
if (bExpandExtent)
|
||||
@ -1714,7 +1714,7 @@ int FileOp::initDctnryExtent(IDBDataFile* pFile, uint16_t dbRoot, int nBlocks, u
|
||||
Stats::startParseEvent(WE_STATS_WAIT_TO_CREATE_DCT_EXTENT);
|
||||
#endif
|
||||
|
||||
boost::mutex::scoped_lock lk(*m_DbRootAddExtentMutexes[dbRoot]);
|
||||
boost::mutex::scoped_lock lk(m_DbRootAddExtentMutexes[dbRoot]);
|
||||
|
||||
#ifdef PROFILE
|
||||
if (bExpandExtent)
|
||||
@ -1809,33 +1809,13 @@ void FileOp::initDbRootExtentMutexes()
|
||||
|
||||
for (size_t i = 0; i < rootIds.size(); i++)
|
||||
{
|
||||
boost::mutex* pM = new boost::mutex;
|
||||
m_DbRootAddExtentMutexes[rootIds[i]] = pM;
|
||||
m_DbRootAddExtentMutexes.emplace(std::piecewise_construct,
|
||||
std::forward_as_tuple(rootIds[i]),
|
||||
std::forward_as_tuple());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************
|
||||
* DESCRIPTION:
|
||||
* Cleans up memory allocated to the DBRoot extent mutexes. Calling
|
||||
* this function is not necessary, but it is provided for completeness,
|
||||
* to complement initDbRootExtentMutexes(), and to provide a way to
|
||||
* free up memory at the end of program execution.
|
||||
***********************************************************/
|
||||
/* static */
|
||||
void FileOp::removeDbRootExtentMutexes()
|
||||
{
|
||||
boost::mutex::scoped_lock lk(m_createDbRootMutexes);
|
||||
|
||||
std::map<int, boost::mutex*>::iterator k = m_DbRootAddExtentMutexes.begin();
|
||||
|
||||
while (k != m_DbRootAddExtentMutexes.end())
|
||||
{
|
||||
delete k->second;
|
||||
++k;
|
||||
}
|
||||
}
|
||||
|
||||
/***********************************************************
|
||||
* DESCRIPTION:
|
||||
* Write out (reinitialize) a partial extent in a column file.
|
||||
|
@ -443,7 +443,6 @@ class FileOp : public BlockOp, public WeUIDGID
|
||||
execplan::CalpontSystemCatalog::ColDataType colDataType);
|
||||
|
||||
static void initDbRootExtentMutexes();
|
||||
static void removeDbRootExtentMutexes();
|
||||
|
||||
int writeInitialCompColumnChunk(IDBDataFile* pFile, int nBlocksAllocated, int nRows,
|
||||
const uint8_t* emptyVal, int width, BRM::LBID_t lbid,
|
||||
@ -457,7 +456,7 @@ class FileOp : public BlockOp, public WeUIDGID
|
||||
static boost::mutex m_createDbRootMutexes;
|
||||
|
||||
// Mutexes used to serialize extent creation within each DBRoot
|
||||
static std::map<int, boost::mutex*> m_DbRootAddExtentMutexes;
|
||||
static std::map<int, boost::mutex> m_DbRootAddExtentMutexes;
|
||||
|
||||
// protect race condition in creating directories
|
||||
static boost::mutex m_mkdirMutex;
|
||||
|
@ -399,8 +399,8 @@ struct JobColumn /** @brief Job Column Structure */
|
||||
int compressionType; /** @brief compression type */
|
||||
bool autoIncFlag; /** @brief auto increment flag */
|
||||
DctnryStruct dctnry; /** @brief dictionary structure */
|
||||
int64_t fMinIntSat; /** @brief For integer type, the min saturation value */
|
||||
uint64_t fMaxIntSat; /** @brief For integer type, the max saturation value */
|
||||
int128_t fMinIntSat; /** @brief For integer type, the min saturation value */
|
||||
uint128_t fMaxIntSat; /** @brief For integer type, the max saturation value */
|
||||
double fMinDblSat; /** @brief for float/double, the min saturation value */
|
||||
double fMaxDblSat; /** @brief for float/double, the max saturation value */
|
||||
bool fWithDefault; /** @brief With default */
|
||||
|
Reference in New Issue
Block a user