From 62323e1f97e39e50960b1d66a2b438ede55692c6 Mon Sep 17 00:00:00 2001 From: robot-clickhouse Date: Fri, 14 Oct 2022 02:59:22 +0000 Subject: [PATCH] Backport #42198 to 22.3: Fix a bug with projections and the `aggregate_functions_null_for_empty` setting --- src/Storages/MergeTree/MergeTreeData.cpp | 3 ++- ...460_projections_and_aggregate_null_if_empty.reference | 1 + .../02460_projections_and_aggregate_null_if_empty.sh | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.reference create mode 100755 tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.sh diff --git a/src/Storages/MergeTree/MergeTreeData.cpp b/src/Storages/MergeTree/MergeTreeData.cpp index 3fa4c0112f95..5cd88223c924 100644 --- a/src/Storages/MergeTree/MergeTreeData.cpp +++ b/src/Storages/MergeTree/MergeTreeData.cpp @@ -4746,7 +4746,8 @@ std::optional MergeTreeData::getQueryProcessingStageWithAgg { const auto & metadata_snapshot = storage_snapshot->metadata; const auto & settings = query_context->getSettingsRef(); - if (!settings.allow_experimental_projection_optimization || query_info.ignore_projections || query_info.is_projection_query) + if (!settings.allow_experimental_projection_optimization || query_info.ignore_projections || query_info.is_projection_query + || settings.aggregate_functions_null_for_empty /* projections don't work correctly with this setting */) return std::nullopt; // Currently projections don't support parallel replicas reading yet. diff --git a/tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.reference b/tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.reference new file mode 100644 index 000000000000..54f97aaa2e65 --- /dev/null +++ b/tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.reference @@ -0,0 +1 @@ +20220920 diff --git a/tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.sh b/tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.sh new file mode 100755 index 000000000000..6e96b9b8afcd --- /dev/null +++ b/tests/queries/0_stateless/02460_projections_and_aggregate_null_if_empty.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Tags: no-fasttest +# Tag no-fasttest: depends on bzip2 + +CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +# shellcheck source=../shell_config.sh +. "$CURDIR"/../shell_config.sh + +${CLICKHOUSE_LOCAL} --aggregate_functions_null_for_empty=1 --multiquery --query "create table test_date (date Int32) ENGINE = MergeTree ORDER BY (date) as select 20220920; SELECT max(date) FROM test_date";