diff --git a/src/Dictionaries/RangeDictionaryBlockInputStream.h b/src/Dictionaries/RangeDictionaryBlockInputStream.h index 3da43c85c45a3a8f399aa6ad58fd4eb07ef02e6a..ccd77d49e0f262f6e781495bcb9052b030c8575e 100644 --- a/src/Dictionaries/RangeDictionaryBlockInputStream.h +++ b/src/Dictionaries/RangeDictionaryBlockInputStream.h @@ -47,7 +47,8 @@ private: const std::string & default_name, const std::unordered_set & column_names_set, const PaddedPODArray & values, - ColumnsWithTypeAndName & columns) const; + ColumnsWithTypeAndName & columns, + bool force = false) const; Block fillBlock( const PaddedPODArray & ids_to_fill, @@ -121,13 +122,14 @@ void RangeDictionaryBlockInputStream::addSpecial const std::string & default_name, const std::unordered_set & column_names_set, const PaddedPODArray & values, - ColumnsWithTypeAndName & columns) const + ColumnsWithTypeAndName & columns, + bool force) const { std::string name = default_name; if (attribute) name = attribute->name; - if (column_names_set.find(name) != column_names_set.end()) + if (force || column_names_set.find(name) != column_names_set.end()) columns.emplace_back(getColumnFromPODArray(values), type, name); } @@ -159,7 +161,7 @@ Block RangeDictionaryBlockInputStream::fillBlock std::unordered_set names(column_names.begin(), column_names.end()); - addSpecialColumn(structure.id, std::make_shared(), "ID", names, ids_to_fill, columns); + addSpecialColumn(structure.id, std::make_shared(), "ID", names, ids_to_fill, columns, true); auto ids_column = columns.back().column; addSpecialColumn(structure.range_min, structure.range_max->type, "Range Start", names, block_start_dates, columns); addSpecialColumn(structure.range_max, structure.range_max->type, "Range End", names, block_end_dates, columns); diff --git a/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.reference b/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.reference index 1a9e5685a6a5615a5c242d16e989ec26ee58d034..71be9c3fb5bb2d0cd71683afff37d4af1a364f23 100644 --- a/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.reference +++ b/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.reference @@ -1,3 +1,4 @@ 1 2019-01-05 2020-01-10 1 +1 date_table somedict diff --git a/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.sql b/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.sql index 6ad76ee5a7e937c099bc7643b2b9bd95f37d74cb..471fd7959a9ef95d707bbefa10dc5532b76fdd34 100644 --- a/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.sql +++ b/tests/queries/0_stateless/01125_dict_ddl_cannot_add_column.sql @@ -29,6 +29,9 @@ LIFETIME(MIN 300 MAX 360); SELECT * from somedict; +-- No dictionary columns +SELECT 1 FROM somedict; + SHOW TABLES; -DROP DATABASE IF EXISTS database_for_dict; +DROP DATABASE database_for_dict;