mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 23:21:59 +00:00
Enable merge filters optimization.
This commit is contained in:
parent
bac948ec0e
commit
4ad8273e5f
@ -4554,7 +4554,7 @@ Possible values:
|
||||
- 0 - Disable
|
||||
- 1 - Enable
|
||||
)", 0) \
|
||||
DECLARE(Bool, query_plan_merge_filters, false, R"(
|
||||
DECLARE(Bool, query_plan_merge_filters, true, R"(
|
||||
Allow to merge filters in the query plan
|
||||
)", 0) \
|
||||
DECLARE(Bool, query_plan_filter_push_down, true, R"(
|
||||
|
@ -74,6 +74,7 @@ static std::initializer_list<std::pair<ClickHouseVersion, SettingsChangesHistory
|
||||
{"backup_restore_keeper_max_retries_while_handling_error", 0, 20, "New setting."},
|
||||
{"backup_restore_finish_timeout_after_error_sec", 0, 180, "New setting."},
|
||||
{"query_plan_join_inner_table_selection", "auto", "auto", "New setting."},
|
||||
{"query_plan_merge_filters", false, true, "Allow to merge filters in the query plan. This is required to properly support filter-push-down with a new analyzer."},
|
||||
{"parallel_replicas_local_plan", false, true, "Use local plan for local replica in a query with parallel replicas"},
|
||||
}
|
||||
},
|
||||
|
@ -32,7 +32,7 @@ struct QueryPlanOptimizationSettings
|
||||
bool merge_expressions = true;
|
||||
|
||||
/// If merge-filters optimization is enabled.
|
||||
bool merge_filters = false;
|
||||
bool merge_filters = true;
|
||||
|
||||
/// If filter push down optimization is enabled.
|
||||
bool filter_push_down = true;
|
||||
|
@ -0,0 +1,2 @@
|
||||
Condition: and((materialize(auid) in [1, 1]), (_CAST(toDate(ts)) in (-Inf, 1703980800]))
|
||||
Granules: 1/3
|
36
tests/queries/0_stateless/03262_filter_push_down_view.sql
Normal file
36
tests/queries/0_stateless/03262_filter_push_down_view.sql
Normal file
@ -0,0 +1,36 @@
|
||||
DROP TABLE IF EXISTS alpha;
|
||||
DROP TABLE IF EXISTS alpha__day;
|
||||
|
||||
SET session_timezone = 'Etc/UTC';
|
||||
|
||||
CREATE TABLE alpha
|
||||
(
|
||||
`ts` DateTime64(6),
|
||||
`auid` Int64,
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (auid, ts)
|
||||
SETTINGS index_granularity = 1;
|
||||
|
||||
CREATE VIEW alpha__day
|
||||
(
|
||||
`ts_date` Date,
|
||||
`auid` Int64,
|
||||
)
|
||||
AS SELECT
|
||||
ts_date,
|
||||
auid,
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
toDate(ts) AS ts_date,
|
||||
auid
|
||||
FROM alpha
|
||||
)
|
||||
WHERE ts_date <= toDateTime('2024-01-01 00:00:00') - INTERVAL 1 DAY;
|
||||
|
||||
INSERT INTO alpha VALUES (toDateTime64('2024-01-01 00:00:00.000', 3) - INTERVAL 3 DAY, 1);
|
||||
INSERT INTO alpha VALUES (toDateTime64('2024-01-01 00:00:00.000', 3) - INTERVAL 3 DAY, 2);
|
||||
INSERT INTO alpha VALUES (toDateTime64('2024-01-01 00:00:00.000', 3) - INTERVAL 3 DAY, 3);
|
||||
|
||||
select trimLeft(explain) from (EXPLAIN indexes = 1 SELECT auid FROM alpha__day WHERE auid = 1) where explain like '%Condition:%' or explain like '%Granules:%' settings allow_experimental_analyzer = 1;
|
Loading…
Reference in New Issue
Block a user