dbms: fix test reference and bring commentaries up-to-date [#METR-15913].

This commit is contained in:
Andrey Mironov 2015-04-10 13:02:57 +03:00
parent 2161eb4c0c
commit 226b11b887
3 changed files with 15 additions and 8 deletions

View File

@ -63,13 +63,13 @@ private:
Names column_names_to_sum; /// Если задано - преобразуется в column_numbers_to_sum при инициализации. Names column_names_to_sum; /// Если задано - преобразуется в column_numbers_to_sum при инициализации.
ColumnNumbers column_numbers_to_sum; ColumnNumbers column_numbers_to_sum;
/** Таблица может вложенные таблицы, обрабатываемые особым образом. /** Таблица может иметь вложенные таблицы, обрабатываемые особым образом.
* Если название вложенной таблицы заканчинвается на `Map` и она содержит ровно два столбца, * Если название вложенной таблицы заканчинвается на `Map` и она содержит не менее двух столбцов,
* удовлетворяющих следующим критериям: * удовлетворяющих следующим критериям:
* - первый столбец - числовой ((U)IntN, Date, DateTime), назовем его условно key, * - первый столбец - числовой ((U)IntN, Date, DateTime), назовем его условно key,
* - второй столбец - арифметический ((U)IntN, Float32/64), условно value. * - остальные столбцы - арифметические ((U)IntN, Float32/64), условно (values...).
* Такая вложенная таблица воспринимается как отображение key => value и при слиянии * Такая вложенная таблица воспринимается как отображение key => (values...) и при слиянии
* ее строк выполняется слияние элементов двух множеств по key со сложением по value. * ее строк выполняется слияние элементов двух множеств по key со сложением соответствующих (values...).
* Пример: * Пример:
* [(1, 100)] + [(2, 150)] -> [(1, 100), (2, 150)] * [(1, 100)] + [(2, 150)] -> [(1, 100), (2, 150)]
* [(1, 100)] + [(1, 150)] -> [(1, 250)] * [(1, 100)] + [(1, 150)] -> [(1, 250)]
@ -77,7 +77,7 @@ private:
* [(1, 100), (2, 150)] + [(1, -100)] -> [(2, 150)] * [(1, 100), (2, 150)] + [(1, -100)] -> [(2, 150)]
*/ */
/// Хранит номера столбца-ключа и столбца-значения /// Хранит номера столбца-ключа и столбцов-значений
struct map_description struct map_description
{ {
std::size_t key_col_num; std::size_t key_col_num;

View File

@ -98,11 +98,11 @@ Block SummingSortedBlockInputStream::readImpl()
/// select actual nested Maps from list of candidates /// select actual nested Maps from list of candidates
for (const auto & map : discovered_maps) for (const auto & map : discovered_maps)
{ {
/// map can only contain a pair of elements (key -> value) /// map should contain at least two elements (key -> value)
if (map.second.size() < 2) if (map.second.size() < 2)
continue; continue;
/// check types of key and value /// check type of key
const auto key_num = map.second.front(); const auto key_num = map.second.front();
auto & key_col = merged_block.getByPosition(key_num); auto & key_col = merged_block.getByPosition(key_num);
/// skip maps, whose members are part of primary key /// skip maps, whose members are part of primary key

View File

@ -0,0 +1,7 @@
0 [1,2] [100,150] [1,-2.5]
1 [1] [250] [0]
2 [1,2] [250,150] [3.5,3.5]
3 [2] [150] [1.5]
0 [1] [1] ['2015-04-09'] [1] [100]
0 [1] [1] ['2015-04-08'] [1] [200]
0 [1] [1] ['2015-04-09'] [1] [100]