ClickHouse/dbms/tests/queries/0_stateless/01017_uniqCombined_memory_usage.reference
Azat Khuzhin e373862c83 Do not use more then 98K of memory for uniqCombined*
uniqCombined() uses hashtable for medium cardinality, and since
HashTable resize by the power of 2 (well actually HashTableGrower grows
double by the power of 2, hence HashTableGrower::increaseSize() should
be overwritten to change this), with 1<<13 (default for uniqCombined)
and UInt64 HashValueType, the HashTable will takes:

  getBufferSizeInBytes() == 131072

While it should be not greater then sizeof(HLL) ~= 98K, so reduce the
maximum cardinality for hashtable to 1<<12 with UInt64 HashValueType and
to 1<13 with UInt32, overwrite HashTableGrower::increaseSize() and cover
this using max_memory_usage.

Refs: https://github.com/ClickHouse/ClickHouse/pull/7221#issuecomment-539672742

v2: cover uniqCombined() with non-default K
2019-10-09 02:39:23 +03:00

15 lines
95 B
Plaintext

UInt32
819200
UInt64
409600
K=16
UInt32
409600
UInt64
204800
K=18
UInt32
1638400
UInt64
819200