mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
Merge pull request #58638 from amosbird/fix-58620
Fix broken partition key analysis when doing projection optimization
This commit is contained in:
commit
f83cf1a6b7
@ -615,7 +615,6 @@ bool optimizeUseAggregateProjections(QueryPlan::Node & node, QueryPlan::Nodes &
|
||||
reader,
|
||||
required_column_names,
|
||||
parts_with_ranges,
|
||||
metadata,
|
||||
query_info,
|
||||
context,
|
||||
max_added_blocks,
|
||||
|
@ -173,7 +173,6 @@ bool optimizeUseNormalProjections(Stack & stack, QueryPlan::Nodes & nodes)
|
||||
reader,
|
||||
required_columns,
|
||||
parts_with_ranges,
|
||||
metadata,
|
||||
query_info,
|
||||
context,
|
||||
max_added_blocks,
|
||||
|
@ -211,7 +211,6 @@ bool analyzeProjectionCandidate(
|
||||
const MergeTreeDataSelectExecutor & reader,
|
||||
const Names & required_column_names,
|
||||
const RangesInDataParts & parts_with_ranges,
|
||||
const StorageMetadataPtr & metadata,
|
||||
const SelectQueryInfo & query_info,
|
||||
const ContextPtr & context,
|
||||
const std::shared_ptr<PartitionIdToMaxBlock> & max_added_blocks,
|
||||
@ -242,7 +241,6 @@ bool analyzeProjectionCandidate(
|
||||
std::move(projection_parts),
|
||||
nullptr,
|
||||
required_column_names,
|
||||
metadata,
|
||||
candidate.projection->metadata,
|
||||
query_info, /// How it is actually used? I hope that for index we need only added_filter_nodes
|
||||
added_filter_nodes,
|
||||
|
@ -57,7 +57,6 @@ bool analyzeProjectionCandidate(
|
||||
const MergeTreeDataSelectExecutor & reader,
|
||||
const Names & required_column_names,
|
||||
const RangesInDataParts & parts_with_ranges,
|
||||
const StorageMetadataPtr & metadata,
|
||||
const SelectQueryInfo & query_info,
|
||||
const ContextPtr & context,
|
||||
const std::shared_ptr<PartitionIdToMaxBlock> & max_added_blocks,
|
||||
|
@ -1263,7 +1263,6 @@ ReadFromMergeTree::AnalysisResultPtr ReadFromMergeTree::selectRangesToRead(
|
||||
std::move(alter_conversions),
|
||||
prewhere_info,
|
||||
filter_nodes,
|
||||
storage_snapshot->metadata,
|
||||
metadata_for_reading,
|
||||
query_info,
|
||||
context,
|
||||
@ -1459,7 +1458,6 @@ ReadFromMergeTree::AnalysisResultPtr ReadFromMergeTree::selectRangesToRead(
|
||||
std::vector<AlterConversionsPtr> alter_conversions,
|
||||
const PrewhereInfoPtr & prewhere_info,
|
||||
const ActionDAGNodes & added_filter_nodes,
|
||||
const StorageMetadataPtr & metadata_snapshot_base,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
ContextPtr context,
|
||||
@ -1477,7 +1475,6 @@ ReadFromMergeTree::AnalysisResultPtr ReadFromMergeTree::selectRangesToRead(
|
||||
return selectRangesToReadImpl(
|
||||
std::move(parts),
|
||||
std::move(alter_conversions),
|
||||
metadata_snapshot_base,
|
||||
metadata_snapshot,
|
||||
updated_query_info_with_filter_dag,
|
||||
context,
|
||||
@ -1493,7 +1490,6 @@ ReadFromMergeTree::AnalysisResultPtr ReadFromMergeTree::selectRangesToRead(
|
||||
ReadFromMergeTree::AnalysisResultPtr ReadFromMergeTree::selectRangesToReadImpl(
|
||||
MergeTreeData::DataPartsVector parts,
|
||||
std::vector<AlterConversionsPtr> alter_conversions,
|
||||
const StorageMetadataPtr & metadata_snapshot_base,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
ContextPtr context,
|
||||
@ -1554,7 +1550,7 @@ ReadFromMergeTree::AnalysisResultPtr ReadFromMergeTree::selectRangesToReadImpl(
|
||||
parts,
|
||||
alter_conversions,
|
||||
indexes->part_values,
|
||||
metadata_snapshot_base,
|
||||
metadata_snapshot,
|
||||
data,
|
||||
context,
|
||||
max_block_numbers_to_read.get(),
|
||||
|
@ -160,7 +160,6 @@ public:
|
||||
std::vector<AlterConversionsPtr> alter_conversions,
|
||||
const PrewhereInfoPtr & prewhere_info,
|
||||
const ActionDAGNodes & added_filter_nodes,
|
||||
const StorageMetadataPtr & metadata_snapshot_base,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
ContextPtr context,
|
||||
@ -210,7 +209,6 @@ private:
|
||||
static AnalysisResultPtr selectRangesToReadImpl(
|
||||
MergeTreeData::DataPartsVector parts,
|
||||
std::vector<AlterConversionsPtr> alter_conversions,
|
||||
const StorageMetadataPtr & metadata_snapshot_base,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
ContextPtr context,
|
||||
|
@ -6924,7 +6924,6 @@ UInt64 MergeTreeData::estimateNumberOfRowsToRead(
|
||||
query_info.prewhere_info,
|
||||
storage_snapshot->getMetadataForQuery()->getColumns().getAll().getNames(),
|
||||
storage_snapshot->metadata,
|
||||
storage_snapshot->metadata,
|
||||
query_info,
|
||||
added_filter_nodes,
|
||||
query_context,
|
||||
|
@ -513,6 +513,7 @@ void MergeTreeDataSelectExecutor::filterPartsByPartition(
|
||||
|
||||
if (metadata_snapshot->hasPartitionKey())
|
||||
{
|
||||
chassert(minmax_idx_condition && partition_pruner);
|
||||
const auto & partition_key = metadata_snapshot->getPartitionKey();
|
||||
minmax_columns_types = data.getMinMaxColumnsTypes(partition_key);
|
||||
|
||||
@ -934,7 +935,6 @@ ReadFromMergeTree::AnalysisResultPtr MergeTreeDataSelectExecutor::estimateNumMar
|
||||
MergeTreeData::DataPartsVector parts,
|
||||
const PrewhereInfoPtr & prewhere_info,
|
||||
const Names & column_names_to_return,
|
||||
const StorageMetadataPtr & metadata_snapshot_base,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
const ActionDAGNodes & added_filter_nodes,
|
||||
@ -962,7 +962,6 @@ ReadFromMergeTree::AnalysisResultPtr MergeTreeDataSelectExecutor::estimateNumMar
|
||||
/*alter_conversions=*/ {},
|
||||
prewhere_info,
|
||||
added_filter_nodes,
|
||||
metadata_snapshot_base,
|
||||
metadata_snapshot,
|
||||
query_info,
|
||||
context,
|
||||
|
@ -58,7 +58,6 @@ public:
|
||||
MergeTreeData::DataPartsVector parts,
|
||||
const PrewhereInfoPtr & prewhere_info,
|
||||
const Names & column_names,
|
||||
const StorageMetadataPtr & metadata_snapshot_base,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
const ActionDAGNodes & added_filter_nodes,
|
||||
|
@ -0,0 +1 @@
|
||||
3 4
|
@ -0,0 +1,9 @@
|
||||
drop table if exists a;
|
||||
|
||||
create table a (i int, j int, projection p (select * order by j)) engine MergeTree partition by i order by tuple() settings index_granularity = 1;
|
||||
|
||||
insert into a values (1, 2), (0, 5), (3, 4);
|
||||
|
||||
select * from a where i > 0 and j = 4 settings force_index_by_date = 1;
|
||||
|
||||
drop table a;
|
Loading…
Reference in New Issue
Block a user