From f156a2aab0cce2bb1f613e3d25094d2ba7a8d259 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Fri, 13 Mar 2026 22:42:52 +0100 Subject: [PATCH] Fix quantile overflow: wrap p99 query with toInt64() for JDBC compat quantile(0.99) returns Float64 which ClickHouse JDBC cannot cast to Long directly. Same toInt64() pattern already used in timeseries query. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/cameleer3/server/app/search/ClickHouseSearchEngine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchEngine.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchEngine.java index ba449897..4bebd8ad 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchEngine.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/ClickHouseSearchEngine.java @@ -90,7 +90,7 @@ public class ClickHouseSearchEngine implements SearchEngine { @Override public ExecutionStats stats(Instant from, Instant to) { Long p99 = jdbcTemplate.queryForObject( - "SELECT quantile(0.99)(duration_ms) FROM route_executions " + + "SELECT toInt64(quantile(0.99)(duration_ms)) FROM route_executions " + "WHERE start_time >= ? AND start_time <= ?", Long.class, Timestamp.from(from), Timestamp.from(to)); Long active = jdbcTemplate.queryForObject(