From a0dad93a3864ece3dae65e203a9fdefcd83ee41c Mon Sep 17 00:00:00 2001 From: Nikolai Kochetov Date: Fri, 6 Jan 2023 13:26:15 +0000 Subject: [PATCH] Check whatt if disable some checks in storage Merge. --- src/Storages/StorageMerge.cpp | 54 +++++++++++++++++------------------ src/Storages/StorageMerge.h | 4 +-- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/Storages/StorageMerge.cpp b/src/Storages/StorageMerge.cpp index 028d6dd8caa..5ea7cab4741 100644 --- a/src/Storages/StorageMerge.cpp +++ b/src/Storages/StorageMerge.cpp @@ -831,7 +831,7 @@ void ReadFromMerge::convertingSourceStream( ContextPtr local_context, ASTPtr & query, QueryPipelineBuilder & builder, - QueryProcessingStage::Enum processed_stage) + QueryProcessingStage::Enum) { Block before_block_header = builder.getHeader(); @@ -874,33 +874,33 @@ void ReadFromMerge::convertingSourceStream( if (!where_expression) return; - if (processed_stage > QueryProcessingStage::FetchColumns) - { - for (size_t column_index : collections::range(0, header.columns())) - { - ColumnWithTypeAndName header_column = header.getByPosition(column_index); - ColumnWithTypeAndName before_column = before_block_header.getByName(header_column.name); - /// If the processed_stage greater than FetchColumns and the block structure between streams is different. - /// the where expression maybe invalid because of ConvertingTransform. - /// So we need to throw exception. - if (!header_column.type->equals(*before_column.type.get())) - { - NamesAndTypesList source_columns = metadata_snapshot->getSampleBlock().getNamesAndTypesList(); - auto virtual_column = *storage_merge->getVirtuals().tryGetByName("_table"); - source_columns.emplace_back(NameAndTypePair{virtual_column.name, virtual_column.type}); - auto syntax_result = TreeRewriter(local_context).analyze(where_expression, source_columns); - ExpressionActionsPtr actions = ExpressionAnalyzer{where_expression, syntax_result, local_context}.getActions(false, false); - Names required_columns = actions->getRequiredColumns(); + // if (processed_stage > QueryProcessingStage::FetchColumns) + // { + // for (size_t column_index : collections::range(0, header.columns())) + // { + // ColumnWithTypeAndName header_column = header.getByPosition(column_index); + // ColumnWithTypeAndName before_column = before_block_header.getByName(header_column.name); + // /// If the processed_stage greater than FetchColumns and the block structure between streams is different. + // /// the where expression maybe invalid because of ConvertingTransform. + // /// So we need to throw exception. + // if (!header_column.type->equals(*before_column.type.get())) + // { + // NamesAndTypesList source_columns = metadata_snapshot->getSampleBlock().getNamesAndTypesList(); + // auto virtual_column = *storage_merge->getVirtuals().tryGetByName("_table"); + // source_columns.emplace_back(NameAndTypePair{virtual_column.name, virtual_column.type}); + // auto syntax_result = TreeRewriter(local_context).analyze(where_expression, source_columns); + // ExpressionActionsPtr actions = ExpressionAnalyzer{where_expression, syntax_result, local_context}.getActions(false, false); + // Names required_columns = actions->getRequiredColumns(); - for (const auto & required_column : required_columns) - { - if (required_column == header_column.name) - throw Exception("Block structure mismatch in Merge Storage: different types:\n" + before_block_header.dumpStructure() - + "\n" + header.dumpStructure(), ErrorCodes::LOGICAL_ERROR); - } - } - } - } + // for (const auto & required_column : required_columns) + // { + // if (required_column == header_column.name) + // throw Exception("Block structure mismatch in Merge Storage: different types:\n" + before_block_header.dumpStructure() + // + "\n" + header.dumpStructure(), ErrorCodes::LOGICAL_ERROR); + // } + // } + // } + // } } IStorage::ColumnSizeByName StorageMerge::getColumnSizes() const diff --git a/src/Storages/StorageMerge.h b/src/Storages/StorageMerge.h index 54f3999514d..e42076eb594 100644 --- a/src/Storages/StorageMerge.h +++ b/src/Storages/StorageMerge.h @@ -193,10 +193,10 @@ private: size_t streams_num, bool concat_streams = false); - void convertingSourceStream( + static void convertingSourceStream( const Block & header, const StorageMetadataPtr & metadata_snapshot, const Aliases & aliases, ContextPtr context, ASTPtr & query, - QueryPipelineBuilder & builder, QueryProcessingStage::Enum processed_stage); + QueryPipelineBuilder & builder, QueryProcessingStage::Enum); }; }