mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Check whatt if disable some checks in storage Merge.
This commit is contained in:
parent
0a60fe6e60
commit
a0dad93a38
@ -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
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user