mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 00:22:29 +00:00
Merge
This commit is contained in:
commit
73ce13dde5
@ -202,6 +202,11 @@ private:
|
|||||||
UInt8 threshold = 5; /// Значение по-умолчанию, если параметр не указан.
|
UInt8 threshold = 5; /// Значение по-умолчанию, если параметр не указан.
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
size_t sizeOfData() const
|
||||||
|
{
|
||||||
|
return sizeof(AggregateFunctionUniqUpToData<UInt64>) + sizeof(UInt64) * threshold;
|
||||||
|
}
|
||||||
|
|
||||||
String getName() const { return "uniqUpTo"; }
|
String getName() const { return "uniqUpTo"; }
|
||||||
|
|
||||||
DataTypePtr getReturnType() const
|
DataTypePtr getReturnType() const
|
||||||
|
@ -1356,11 +1356,15 @@ void NO_INLINE Aggregator::mergeSingleLevelDataImpl(
|
|||||||
mergeDataImpl<Method>(
|
mergeDataImpl<Method>(
|
||||||
getDataVariant<Method>(*res).data,
|
getDataVariant<Method>(*res).data,
|
||||||
getDataVariant<Method>(current).data);
|
getDataVariant<Method>(current).data);
|
||||||
else
|
else if (res->without_key)
|
||||||
mergeDataNoMoreKeysImpl<Method>(
|
mergeDataNoMoreKeysImpl<Method>(
|
||||||
getDataVariant<Method>(*res).data,
|
getDataVariant<Method>(*res).data,
|
||||||
res->without_key,
|
res->without_key,
|
||||||
getDataVariant<Method>(current).data);
|
getDataVariant<Method>(current).data);
|
||||||
|
else
|
||||||
|
mergeDataOnlyExistingKeysImpl<Method>(
|
||||||
|
getDataVariant<Method>(*res).data,
|
||||||
|
getDataVariant<Method>(current).data);
|
||||||
|
|
||||||
/// current не будет уничтожать состояния агрегатных функций в деструкторе
|
/// current не будет уничтожать состояния агрегатных функций в деструкторе
|
||||||
current.aggregator = nullptr;
|
current.aggregator = nullptr;
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
0 0
|
@ -0,0 +1,12 @@
|
|||||||
|
DROP TABLE IF EXISTS test.numbers_10k_log;
|
||||||
|
|
||||||
|
SET max_block_size = 1000;
|
||||||
|
|
||||||
|
CREATE TABLE test.numbers_10k_log ENGINE = Log AS SELECT number FROM system.numbers LIMIT 10000;
|
||||||
|
|
||||||
|
SET max_threads = 4;
|
||||||
|
SET max_rows_to_group_by = 3000, group_by_overflow_mode = 'any';
|
||||||
|
|
||||||
|
SELECT ignore(rand() AS k), ignore(max(toString(number))) FROM test.numbers_10k_log GROUP BY k LIMIT 1;
|
||||||
|
|
||||||
|
DROP TABLE test.numbers_10k_log;
|
@ -0,0 +1,11 @@
|
|||||||
|
10 10 100 100 1000 1000 10 10 100 100 1000 1000 10 10 101 101 1006 1006 10 10 100 100 1000 1000 6 6 6 6 6 6
|
||||||
|
17 10 10 100 100 610 610 10 10 100 100 610 610 10 10 101 101 616 616 10 10 100 100 610 610 6 6 6 6 6 6 766
|
||||||
|
52 10 10 100 100 608 608 10 10 100 100 608 608 10 10 101 101 611 611 10 10 100 100 608 608 6 6 6 6 6 6 766
|
||||||
|
5 10 10 100 100 609 609 10 10 100 100 609 609 10 10 101 101 608 608 10 10 100 100 609 609 6 6 6 6 6 6 765
|
||||||
|
9 10 10 100 100 608 608 10 10 100 100 608 608 10 10 101 101 618 618 10 10 100 100 608 608 6 6 6 6 6 6 765
|
||||||
|
13 10 10 100 100 607 607 10 10 100 100 607 607 10 10 101 101 610 610 10 10 100 100 607 607 6 6 6 6 6 6 765
|
||||||
|
46 10 10 100 100 607 607 10 10 100 100 607 607 10 10 101 101 611 611 10 10 100 100 607 607 6 6 6 6 6 6 765
|
||||||
|
48 10 10 100 100 609 609 10 10 100 100 609 609 10 10 101 101 617 617 10 10 100 100 609 609 6 6 6 6 6 6 765
|
||||||
|
50 10 10 100 100 608 608 10 10 100 100 608 608 10 10 101 101 614 614 10 10 100 100 608 608 6 6 6 6 6 6 765
|
||||||
|
54 10 10 100 100 609 609 10 10 100 100 609 609 10 10 101 101 615 615 10 10 100 100 609 609 6 6 6 6 6 6 765
|
||||||
|
56 10 10 100 100 608 608 10 10 100 100 608 608 10 10 101 101 614 614 10 10 100 100 608 608 6 6 6 6 6 6 765
|
35
dbms/tests/queries/0_stateless/00264_uniq_many_args.sql
Normal file
35
dbms/tests/queries/0_stateless/00264_uniq_many_args.sql
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
SELECT
|
||||||
|
uniq(x), uniq((x)), uniq(x, y), uniq((x, y)), uniq(x, y, z), uniq((x, y, z)),
|
||||||
|
uniqCombined(x), uniqCombined((x)), uniqCombined(x, y), uniqCombined((x, y)), uniqCombined(x, y, z), uniqCombined((x, y, z)),
|
||||||
|
uniqHLL12(x), uniqHLL12((x)), uniqHLL12(x, y), uniqHLL12((x, y)), uniqHLL12(x, y, z), uniqHLL12((x, y, z)),
|
||||||
|
uniqExact(x), uniqExact((x)), uniqExact(x, y), uniqExact((x, y)), uniqExact(x, y, z), uniqExact((x, y, z)),
|
||||||
|
uniqUpTo(5)(x), uniqUpTo(5)((x)), uniqUpTo(5)(x, y), uniqUpTo(5)((x, y)), uniqUpTo(5)(x, y, z), uniqUpTo(5)((x, y, z))
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
number % 10 AS x,
|
||||||
|
intDiv(number, 10) % 10 AS y,
|
||||||
|
toString(intDiv(number, 100) % 10) AS z
|
||||||
|
FROM system.numbers LIMIT 1000
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
SELECT k,
|
||||||
|
uniq(x), uniq((x)), uniq(x, y), uniq((x, y)), uniq(x, y, z), uniq((x, y, z)),
|
||||||
|
uniqCombined(x), uniqCombined((x)), uniqCombined(x, y), uniqCombined((x, y)), uniqCombined(x, y, z), uniqCombined((x, y, z)),
|
||||||
|
uniqHLL12(x), uniqHLL12((x)), uniqHLL12(x, y), uniqHLL12((x, y)), uniqHLL12(x, y, z), uniqHLL12((x, y, z)),
|
||||||
|
uniqExact(x), uniqExact((x)), uniqExact(x, y), uniqExact((x, y)), uniqExact(x, y, z), uniqExact((x, y, z)),
|
||||||
|
uniqUpTo(5)(x), uniqUpTo(5)((x)), uniqUpTo(5)(x, y), uniqUpTo(5)((x, y)), uniqUpTo(5)(x, y, z), uniqUpTo(5)((x, y, z)),
|
||||||
|
count() AS c
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
(number + 0x8ffcbd8257219a26) * 0x66bb3430c06d2353 % 131 AS k,
|
||||||
|
number % 10 AS x,
|
||||||
|
intDiv(number, 10) % 10 AS y,
|
||||||
|
toString(intDiv(number, 100) % 10) AS z
|
||||||
|
FROM system.numbers LIMIT 100000
|
||||||
|
)
|
||||||
|
GROUP BY k
|
||||||
|
ORDER BY c DESC, k ASC
|
||||||
|
LIMIT 10;
|
Loading…
Reference in New Issue
Block a user