-
Notifications
You must be signed in to change notification settings - Fork 614
Closed
Labels
Milestone
Description
This is a P1 for us at metabase.
Description
The new parser introduced in #2351 seems to not recognize parameters in some circumstances
Steps to reproduce
The query is similarly shaped to
select
*
from
a_table
where
some_thing = ?::UUID
and `timestamp01` >= `parseDateTimeBestEffort`(?, ?)In 0.8.6:
❯ clj -Sdeps '{:deps {com.clickhouse/clickhouse-jdbc {:mvn/version "0.8.6"}}}'
Clojure 1.12.0
user=> (with-open [conn (java.sql.DriverManager/getConnection "jdbc:clickhouse://localhost:8123" "default" "password")
stmt (.prepareStatement conn "
select
*
from
a_table
where
some_thing = ?::UUID
and `timestamp01` >= `parseDateTimeBestEffort`(?, ?)
")]
(when-let [md (.getParameterMetaData stmt)]
(.getParameterCount md)))
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
1contrast against:
user=> (with-open [conn (java.sql.DriverManager/getConnection "jdbc:clickhouse://localhost:8123" "default" "password")
stmt (.prepareStatement conn "
select
*
from
a_table
where
some_thing = 1
and `timestamp01` >= `parseDateTimeBestEffort`(?, ?)
")]
(when-let [md (.getParameterMetaData stmt)]
(.getParameterCount md)))
2Here it finds both parameters with the above where clause has a concrete 1 rather than a ?::UUID
In 0.8.4:
❯ clj -Sdeps '{:deps {com.clickhouse/clickhouse-jdbc {:mvn/version "0.8.4"}}}'
Clojure 1.12.0
user=> (with-open [conn (java.sql.DriverManager/getConnection "jdbc:clickhouse://localhost:8123" "default" "password")
stmt (.prepareStatement conn "
select
*
from
a_table
where
some_thing = ?::UUID
and `timestamp01` >= `parseDateTimeBestEffort`(?, ?)
")]
(when-let [md (.getParameterMetaData stmt)]
(.getParameterCount md)))
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
3It correctly sees all 3 parameters.
Expected Behaviour
The new parser should identify all parameters in the query
Configuration
Client Configuration
0.8.4 vs 0.8.6
Environment
- Cloud
- Client version:
- Language version:
- OS:
ClickHouse Server
running clickhouse latest. no tables required