- Notifications
You must be signed in to change notification settings - Fork 614
Closed
Description
Description
For a prepared statement, the sqlParser cannot correctly get argument count, resulting in setObject() throwing ArrayIndexOutOfBoundsException.
Steps to reproduce
For the following sql, the argument count parsed is 0, which should be 10 normally.
WITH ? AS starting_time, ? AS ending_time, ? AS session_timeout, ? AS starting_event, ? AS ending_event, SessionData AS ( WITH date, arraySort( groupArray( ( tracking.event.time, tracking.event.event ) ) ) AS _sorted_events, arrayEnumerate(_sorted_events) AS _event_serial, arrayDifference(_sorted_events.1) AS _event_time_diff, arrayFilter( (x, y, z) -> y > session_timeout OR z.2 = starting_event, _event_serial, _event_time_diff, _sorted_events ) AS _gap_index_1, arrayFilter( (x, y) -> y.2 = ending_event, _event_serial, _sorted_events ) AS _gap_index_2_, arrayMap( x -> x + 1, _gap_index_2_ ) AS _gap_index_2, arrayMap(x -> if (has(_gap_index_1,x) OR has(_gap_index_2,x), 1, 0), _event_serial) AS _session_splitter, arraySplit((x, y) -> y, _sorted_events, _session_splitter) AS _session_chain SELECT date, user_id AS user_id, arrayJoin(_session_chain) AS event_chain, arrayCompact(x -> x.2, event_chain) AS event_chain_dedup FROM tracking.event WHERE project=? AND time>=starting_time AND time<ending_time AND event NOT IN (?, ?, ?, ?) GROUP BY date, user_id ), SessionOverallInfo AS ( SELECT date, COUNT(*) AS number_of_sessions FROM SessionData GROUP BY date ) SELECT SessionOverallInfo.date, SessionOverallInfo.number_of_sessions AS number_of_total_sessions FROM SessionOverallInfo ORDER BY SessionOverallInfo.date
Error Log or Exception StackTrace
ArrayIndexOutOfBoundsException com.clickhouse.jdbc.PreparedStatementImpl in setObject: Index 0 out of bounds for length 0 com.clickhouse.jdbc.PreparedStatementImpl in setObject at line 610 com.clickhouse.jdbc.PreparedStatementImpl in setObject at line 544 com.clickhouse.jdbc.PreparedStatementImpl in setObject at line 252 com.clickhouse.jdbc.PreparedStatementImpl in setObject at line 258 ... Expected Behaviour
For the sql above, the correct argument number should be 10.
Environment
- Client version: 0.9.0
- Language version: kotlin 2.1.0 / JDK-21
ClickHouse Server
- ClickHouse Server version: 24.6.1.4423