From 8b31e4cfba18a0acd062505b44eac9b763bf0136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Thu, 27 Nov 2025 14:59:11 +0100 Subject: [PATCH] fix: add conditionally clickhouse options --- packages/db/src/clickhouse/client.ts | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/db/src/clickhouse/client.ts b/packages/db/src/clickhouse/client.ts index a4d048c3..50cfbb17 100644 --- a/packages/db/src/clickhouse/client.ts +++ b/packages/db/src/clickhouse/client.ts @@ -12,6 +12,7 @@ export { createClient }; const logger = createLogger({ name: 'clickhouse' }); import type { Logger } from '@clickhouse/client'; +import { getSafeJson } from '@openpanel/json'; // All three LogParams types are exported by the client interface LogParams { @@ -83,6 +84,22 @@ export function getReplicatedTableName(tableName: string): string { return tableName; } +function getClickhouseSettings(): ClickHouseSettings { + const additionalSettings = + getSafeJson(process.env.CLICKHOUSE_SETTINGS || '{}') || + {}; + + return { + date_time_input_format: 'best_effort', + ...(!process.env.CLICKHOUSE_SETTINGS_REMOVE_CONVERT_ANY_JOIN + ? { + query_plan_convert_any_join_to_semi_or_anti_join: 0, + } + : {}), + ...additionalSettings, + }; +} + export const CLICKHOUSE_OPTIONS: NodeClickHouseClientConfigOptions = { max_open_connections: 30, request_timeout: 300000, @@ -93,16 +110,15 @@ export const CLICKHOUSE_OPTIONS: NodeClickHouseClientConfigOptions = { compression: { request: true, }, - clickhouse_settings: { - date_time_input_format: 'best_effort', - query_plan_convert_any_join_to_semi_or_anti_join: 0, - }, + clickhouse_settings: getClickhouseSettings(), log: { LoggerClass: CustomLogger, level: ClickHouseLogLevel.DEBUG, }, }; +logger.info('Clickhouse options', CLICKHOUSE_OPTIONS); + export const originalCh = createClient({ url: process.env.CLICKHOUSE_URL, ...CLICKHOUSE_OPTIONS,