Merge pull request #30877 from amosbird/projection-fix22

Fix invalid header in projection block calculation
This commit is contained in:
alexey-milovidov 2021-10-31 16:30:02 +03:00 committed by GitHub
commit 1285d3bd8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 1 deletions

View File

@ -237,7 +237,7 @@ Block ProjectionDescription::calculate(const Block & block, ContextPtr context)
auto builder = InterpreterSelectQuery( auto builder = InterpreterSelectQuery(
query_ast, query_ast,
context, context,
Pipe(std::make_shared<SourceFromSingleChunk>(block, Chunk(block.getColumns(), block.rows()))), Pipe(std::make_shared<SourceFromSingleChunk>(block)),
SelectQueryOptions{ SelectQueryOptions{
type == ProjectionDescription::Type::Normal ? QueryProcessingStage::FetchColumns type == ProjectionDescription::Type::Normal ? QueryProcessingStage::FetchColumns
: QueryProcessingStage::WithMergeableState}) : QueryProcessingStage::WithMergeableState})

View File

@ -0,0 +1,11 @@
set allow_experimental_projection_optimization = 1, force_optimize_projection = 1;
drop table if exists tp;
create table tp (type Int32, device UUID, cnt UInt64) engine = MergeTree order by (type, device);
insert into tp select number%3, generateUUIDv4(), 1 from numbers(300);
alter table tp add projection uniq_city_proj ( select type, uniq(cityHash64(device)), sum(cnt) group by type );
alter table tp materialize projection uniq_city_proj settings mutations_sync = 1;
drop table tp;