Skip to content

Commit

Permalink
Merge pull request #16010 from ClickHouse/backport/20.7/15662
Browse files Browse the repository at this point in the history
Backport #15662 to 20.7: Fix read from Buffer table with empty nested table with different types.
  • Loading branch information
KochetovNicolai committed Oct 16, 2020
2 parents 343dcd2 + 631adde commit e290b17
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/Storages/StorageBuffer.cpp
Expand Up @@ -221,13 +221,16 @@ Pipes StorageBuffer::read(
columns_intersection, destination_metadata_snapshot, query_info,
context, processed_stage, max_block_size, num_streams);

for (auto & pipe : pipes_from_dst)
if (!pipes_from_dst.empty())
{
pipe.addSimpleTransform(std::make_shared<AddingMissedTransform>(
pipe.getHeader(), header_after_adding_defaults, metadata_snapshot->getColumns(), context));

pipe.addSimpleTransform(std::make_shared<ConvertingTransform>(
pipe.getHeader(), header, ConvertingTransform::MatchColumnsMode::Name));
for (auto & pipe : pipes_from_dst)
{
pipe.addSimpleTransform(std::make_shared<AddingMissedTransform>(
pipe.getHeader(), header_after_adding_defaults, metadata_snapshot->getColumns(), context));

pipe.addSimpleTransform(std::make_shared<ConvertingTransform>(
pipe.getHeader(), header, ConvertingTransform::MatchColumnsMode::Name));
}
}
}
}
Expand Down
@@ -0,0 +1 @@
a
12 changes: 12 additions & 0 deletions tests/queries/0_stateless/01514_empty_buffer_different_types.sql
@@ -0,0 +1,12 @@
set send_logs_level = 'error';

DROP TABLE IF EXISTS merge_tree_table1;
CREATE TABLE merge_tree_table1 (`s` LowCardinality(String), x UInt32) ENGINE = MergeTree ORDER BY x settings index_granularity = 1;
CREATE TABLE buffer_table1 ( `s` String , x UInt32) ENGINE = Buffer(currentDatabase(), 'merge_tree_table1', 16, 10, 60, 10, 1000, 1048576, 2097152);
SELECT s FROM buffer_table1;

insert into merge_tree_table1 values ('a', 1);
select s from buffer_table1 where x = 1;
select s from buffer_table1 where x = 2;

DROP TABLE IF EXISTS merge_tree_table1;

0 comments on commit e290b17

Please sign in to comment.