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
Fix/mcol 5787 rgdata buffer max size dev (#3325)
* fix(rowgroup): RGData now uses uint64_t counter for the fixed sizes columns data buf. The buffer can utilize > 4GB RAM that is necessary for PM side join. RGData ctor uses uint32_t allocating data buffer. This fact causes implicit heap overflow. * feat(bytestream,serdes): BS buffer size type is uint64_t This necessary to handle 64bit RGData, that comes as a separate patch. The pair of patches would allow to have PM joins when SmallSide size > 4GB. * feat(bytestream,serdes): Distribute BS buf size data type change to avoid implicit data type narrowing * feat(rowgroup): this returns bits lost during cherry-pick. The bits lost caused the first RGData::serialize to crash a process
This commit is contained in:
@ -172,6 +172,8 @@ class ColumnCommand : public Command
|
||||
|
||||
// the length of base prim msg, which is everything up to the
|
||||
// rid array for the pCol message
|
||||
// !!! This attribute is used to store a sum which arg type is potentially uint64_t.
|
||||
// As of 23.02.10 uint32_t here is always enough for the purpose of this attribute though.
|
||||
uint32_t baseMsgLength;
|
||||
|
||||
uint64_t lbid;
|
||||
|
@ -151,6 +151,8 @@ class DictStep : public Command
|
||||
int compressionType;
|
||||
messageqcpp::ByteStream filterString;
|
||||
uint32_t filterCount;
|
||||
// !!! This attribute is used to store a sum which arg type is potentially uint64_t.
|
||||
// As of 23.02.10 uint32_t here is always enough for the purpose of this attribute though.
|
||||
uint32_t bufferSize;
|
||||
uint32_t charsetNumber;
|
||||
uint16_t inputRidCount;
|
||||
|
Reference in New Issue
Block a user