1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-10 01:22:48 +03:00

Merge pull request #2441 from drrtuy/MCOL-5153-dev-6

MCOL-5153 This increases the size of the multiplier in the guarding
This commit is contained in:
Roman Nozdrin
2022-07-09 15:52:31 +03:00
committed by GitHub
2 changed files with 6 additions and 1 deletions

View File

@@ -1814,7 +1814,10 @@ void RowAggStorage::increaseSize()
if (fCurData->fSize < maxSize && tryIncreaseInfo()) if (fCurData->fSize < maxSize && tryIncreaseInfo())
return; return;
if (fCurData->fSize * 2 < calcMaxSize(fCurData->fMask + 1)) constexpr size_t maxMaskMultiplierWoRehashing = 1U << (INIT_INFO_INC - 1);
// We don't check for the overflow here b/c it is impractical to has fSize so that multiplication
// overflows.
if (fCurData->fSize * maxMaskMultiplierWoRehashing < calcMaxSize(fCurData->fMask + 1))
{ {
// something strange happens... // something strange happens...
throw logging::IDBExcept(logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_DISKAGG_ERROR), throw logging::IDBExcept(logging::IDBErrorInfo::instance()->errorMsg(logging::ERR_DISKAGG_ERROR),

View File

@@ -321,6 +321,8 @@ class RowAggStorage
{ {
RowPosHashStoragePtr fHashes; RowPosHashStoragePtr fHashes;
std::unique_ptr<uint8_t[]> fInfo; std::unique_ptr<uint8_t[]> fInfo;
// This is a power of 2 that controls a potential number of hash buckets
// w/o rehashing.
size_t fSize{0}; size_t fSize{0};
size_t fMask{0}; size_t fMask{0};
size_t fMaxSize{0}; size_t fMaxSize{0};