-
Notifications
You must be signed in to change notification settings - Fork 2k
Description
Describe the bug
When building ClickHouse pre-aggregations with build_range_end that includes milliseconds (e.g., '2026-01-20T23:59:59.999Z'), the generated WHERE clause uses parseDateTimeBestEffort(), which truncates to seconds. This causes the WHERE filter to exclude the intended millisecond boundary.
This is critical for any pre-aggregation with time boundaries that need millisecond precision with explicitly set build_range_end to the end of period.
To Reproduce
Build the pre-aggregation for ClickHouse based Cube
Observe the generated WHERE clause uses parseDateTimeBestEffort() instead of parseDateTime64BestEffort()
Expected behavior
The WHERE clause should use parseDateTime64BestEffort() (or equivalent) to preserve millisecond precision.
Version:
1.6.4 (relevant for previous too)
Additional context
In packages/cubejs-schema-compiler/src/adapter/ClickHouseQuery.ts, the dateTimeCast() method returns parseDateTimeBestEffort() when called without a timezone parameter.