-
Couldn't load subscription status.
- Fork 613
Open
Labels
Milestone
Description
Likely should be included in #2576
jdbc-v2 0.9.2
Description
Running queries with CTEs and parameters results in errors because the PreparedStatement thinks it has 0 parameters
Steps to reproduce
Working in 0.8.4:
❯ clj -Sdeps '{:deps {com.clickhouse/clickhouse-jdbc {:mvn/version "0.8.4"}}}' -J"$(socket-repl 6084)"
user=> (defn query-info [sql]
;; parse param names and replace {{id}} with ?
(with-open [conn (java.sql.DriverManager/getConnection "jdbc:clickhouse://localhost:8123" "default" "password")
stmt (.prepareStatement conn sql)]
(.. stmt getParameterMetaData getParameterCount)))
#'user/query-info
user=> (query-info "SELECT `source`.`id` AS `id`,
`source`.`val` AS `val` FROM
(with base as (\n select 1 id, 'abc' val\n)\nselect * from base)
AS `source`
WHERE `positionCaseInsensitiveUTF8`(`source`.`val`, ?) > ? LIMIT 2000")
2Broken in 0.9.2:
❯ clj -Sdeps '{:deps {com.clickhouse/clickhouse-jdbc {:mvn/version "0.9.2"}}}' -J"$(socket-repl 6092)"
user=> (defn query-info [sql]
;; parse param names and replace {{id}} with ?
(with-open [conn (java.sql.DriverManager/getConnection "jdbc:clickhouse://localhost:8123" "default" "password")
stmt (.prepareStatement conn sql)]
(.. stmt getParameterMetaData getParameterCount)))
#'user/query-info
user=> (query-info "SELECT `source`.`id` AS `id`,
`source`.`val` AS `val` FROM
(with base as (\n select 1 id, 'abc' val\n)\nselect * from base)
AS `source`
WHERE `positionCaseInsensitiveUTF8`(`source`.`val`, ?) > ? LIMIT 2000")
0Expected Behaviour
The 0.9.2 driver should recognize the positionCaseInsensitiveUTF8(val, ?) > ? expression after the CTE. This is the way that we do a "string includes" operation.
Code Example
shown above in repro
Environment
- Cloud
- Client version:
- Language version:
- OS:
ClickHouse Server
just running clickhouse server latest in docker