From b69ad48ad3f851c73190f4160f65ee650c5f9d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20W=C3=BCrtz=20Lyngbye?= Date: Tue, 4 Aug 2026 10:08:12 +0200 Subject: [PATCH] fix(api): normalize telemetry query bounds for ClickHouse DateTime --- apps/api/src/routes/v2/telemetry.http.test.ts | 6 +++--- apps/api/src/routes/v2/telemetry.http.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/api/src/routes/v2/telemetry.http.test.ts b/apps/api/src/routes/v2/telemetry.http.test.ts index e296ac4fa..b2d219af0 100644 --- a/apps/api/src/routes/v2/telemetry.http.test.ts +++ b/apps/api/src/routes/v2/telemetry.http.test.ts @@ -459,7 +459,7 @@ describe("v2 telemetry reads over HTTP", () => { await harness.dispose() }) - it("preserves fractional bounds and reads complete traces by their sorting-key identity", async () => { + it("normalizes warehouse bounds to second precision and reads complete traces by sorting-key identity", async () => { const observedSql: string[] = [] const observingWarehouse: WarehouseQueryServiceShape = { ...warehouseStub, @@ -481,8 +481,8 @@ describe("v2 telemetry reads over HTTP", () => { }) expect(logs.status).toBe(200) const logSql = observedSql.find((sql) => sql.includes("FROM logs")) - expect(logSql).toContain("'2026-07-15 12:00:00.900'") - expect(logSql).toContain("'2026-07-15 12:00:01.100'") + expect(logSql).toContain("'2026-07-15 12:00:00'") + expect(logSql).toContain("'2026-07-15 12:00:01'") observedSql.length = 0 const trace = await harness.request("GET", `/v2/traces/${TRACE_ID}`, key.secret) diff --git a/apps/api/src/routes/v2/telemetry.http.ts b/apps/api/src/routes/v2/telemetry.http.ts index 1c48073c3..af911682a 100644 --- a/apps/api/src/routes/v2/telemetry.http.ts +++ b/apps/api/src/routes/v2/telemetry.http.ts @@ -81,7 +81,7 @@ const toWarehouseDateTime = (value: string, param: string) => { const ms = Date.parse(value) return Number.isNaN(ms) ? Effect.fail(invalidRequest("parameter_invalid", `Invalid ISO-8601 timestamp for ${param}.`, param)) - : Effect.succeed(formatWarehouseDateTimeMs(ms)) + : Effect.succeed(formatWarehouseDateTime(ms)) } const parseWindow = (