mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 16:42:05 +00:00
dbms: fixed error with GROUP BY empty arrays [#METR-17361].
This commit is contained in:
parent
5077e51fc7
commit
d5a69e8e31
@ -374,8 +374,20 @@ struct AggregationMethodConcat
|
|||||||
/// См. функцию extractKeysAndPlaceInPoolContiguous.
|
/// См. функцию extractKeysAndPlaceInPoolContiguous.
|
||||||
const StringRef * key_refs = reinterpret_cast<const StringRef *>(value.first.data + value.first.size);
|
const StringRef * key_refs = reinterpret_cast<const StringRef *>(value.first.data + value.first.size);
|
||||||
|
|
||||||
for (size_t i = 0; i < keys_size; ++i)
|
if (unlikely(0 == value.first.size))
|
||||||
key_columns[i]->insertDataWithTerminatingZero(key_refs[i].data, key_refs[i].size);
|
{
|
||||||
|
/** Исправление, если все ключи - пустые массивы. Для них в хэш-таблицу записывается StringRef нулевой длины, но с ненулевым указателем.
|
||||||
|
* Но при вставке в хэш-таблицу, такой StringRef оказывается равен другому ключу нулевой длины,
|
||||||
|
* у которого указатель на данные может быть любым мусором и использовать его нельзя.
|
||||||
|
*/
|
||||||
|
for (size_t i = 0; i < keys_size; ++i)
|
||||||
|
key_columns[i]->insertDefault();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < keys_size; ++i)
|
||||||
|
key_columns[i]->insertDataWithTerminatingZero(key_refs[i].data, key_refs[i].size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
[] 5
|
||||||
|
[0] 1
|
||||||
|
[0,1,2] 1
|
||||||
|
[0,1,2,3,4] 1
|
||||||
|
[0,1,2,3,4,5,6] 1
|
||||||
|
[0,1,2,3,4,5,6,7,8] 1
|
@ -0,0 +1 @@
|
|||||||
|
SELECT range(x) AS k, count() FROM (SELECT number % 2 ? number : 0 AS x FROM system.numbers LIMIT 10) GROUP BY k ORDER BY k;
|
Loading…
Reference in New Issue
Block a user