From bb3e1e2bc3761494648b0c8b603c74cfcd5242e1 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Fri, 3 Apr 2026 15:14:56 +0200 Subject: [PATCH] fix: set deduplicate_merge_projection_mode for ReplacingMergeTree projection ClickHouse 24.12 requires this setting before adding projections to ReplacingMergeTree tables. Using 'drop' mode which discards the projection during deduplication merges and rebuilds it afterward. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../resources/clickhouse/V11__route_diagrams_projection.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cameleer3-server-app/src/main/resources/clickhouse/V11__route_diagrams_projection.sql b/cameleer3-server-app/src/main/resources/clickhouse/V11__route_diagrams_projection.sql index 64240f25..18d57a65 100644 --- a/cameleer3-server-app/src/main/resources/clickhouse/V11__route_diagrams_projection.sql +++ b/cameleer3-server-app/src/main/resources/clickhouse/V11__route_diagrams_projection.sql @@ -1,6 +1,9 @@ -- Projection for fast route_id + instance_id lookups on route_diagrams. -- The primary key is (tenant_id, content_hash) which serves hash-based lookups. -- Queries filtering by route_id + instance_id were scanning millions of rows. +-- ReplacingMergeTree requires deduplicate_merge_projection_mode to be set (ClickHouse 24.12+). +ALTER TABLE route_diagrams MODIFY SETTING deduplicate_merge_projection_mode = 'drop'; + ALTER TABLE route_diagrams ADD PROJECTION IF NOT EXISTS prj_route_instance (SELECT content_hash, created_at ORDER BY tenant_id, route_id, instance_id, created_at);