Skip to content

Commit 8055d13

Browse files
authored
Merge pull request #7 from swisscom-bigdata/fix/zoned_date_parameters
Fix for PreparedStatement parameter setting
2 parents 95db29e + 13210ea commit 8055d13

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(defproject metabase/teradata-driver "1.0.0-metabase-v0.34.1-teradata-jdbc-16.20"
1+
(defproject metabase/teradata-driver "1.0.1-metabase-v0.34.1-teradata-jdbc-16.20"
22
:min-lein-version "2.5.0"
33

44
:profiles

src/metabase/driver/teradata.clj

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
[string :as s]]
55
[clojure.java.jdbc :as jdbc]
66
[honeysql.core :as hsql]
7+
[java-time :as t]
78
[metabase
89
[driver :as driver]
910
[util :as u]]
@@ -14,13 +15,12 @@
1415
[sync :as sql-jdbc.sync]]
1516
[metabase.driver.sql.query-processor :as sql.qp]
1617
[metabase.driver.sql.util.deduplicate :as deduplicateutil]
17-
[metabase.models.field :as field]
1818
[metabase.query-processor.util :as qputil]
1919
[metabase.util
20-
[honeysql-extensions :as hx]
21-
[ssh :as ssh]])
22-
(:import [java.sql DatabaseMetaData ResultSet ResultSetMetaData Time Types]
23-
[java.time LocalDate LocalDateTime LocalTime OffsetDateTime OffsetTime ZonedDateTime]))
20+
[honeysql-extensions :as hx]])
21+
(:import [java.sql DatabaseMetaData ResultSet Types PreparedStatement]
22+
[java.time OffsetDateTime OffsetTime]
23+
[java.util Calendar TimeZone]))
2424

2525
(driver/register! :teradata, :parent :sql-jdbc)
2626

@@ -249,6 +249,13 @@
249249
[_ _ rs _ i]
250250
(OffsetTime/parse (.getTime rs i)))
251251

252+
;; TODO: use metabase.driver.sql-jdbc.execute.legacy-impl instead of re-implementing everything here
253+
(defmethod sql-jdbc.execute/set-parameter [:teradata OffsetDateTime]
254+
[_ ^PreparedStatement ps ^Integer i t]
255+
(let [cal (Calendar/getInstance (TimeZone/getTimeZone (t/zone-id t)))
256+
t (t/sql-timestamp t)]
257+
(.setTimestamp ps i t cal)))
258+
252259
(defn- run-query
253260
"Run the query itself without setting the timezone connection parameter as this must not be changed on a Teradata connection.
254261
Setting connection attributes like timezone would make subsequent queries behave unexpectedly."

0 commit comments

Comments
 (0)