Skip to content

Commit 95db29e

Browse files
committed
Metabase v0.34.x changes
1 parent 987a9fa commit 95db29e

File tree

2 files changed

+36
-11
lines changed

2 files changed

+36
-11
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.33.6-teradata-jdbc-16.20"
1+
(defproject metabase/teradata-driver "1.0.0-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: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
[metabase.util
2020
[honeysql-extensions :as hx]
2121
[ssh :as ssh]])
22-
(:import [java.sql DatabaseMetaData ResultSet]))
22+
(:import [java.sql DatabaseMetaData ResultSet ResultSetMetaData Time Types]
23+
[java.time LocalDate LocalDateTime LocalTime OffsetDateTime OffsetTime ZonedDateTime]))
2324

2425
(driver/register! :teradata, :parent :sql-jdbc)
2526

@@ -60,9 +61,8 @@
6061
:SMALLINT :type/Integer
6162
:SMALLSERIAL :type/Integer
6263
:TIME :type/Time
63-
:TIMETZ :type/Time
64+
(keyword "TIME WITH TIME ZONE") :type/Time
6465
:TIMESTAMP :type/DateTime
65-
:TIMESTAMPTZ :type/DateTime
6666
(keyword "TIMESTAMP WITH TIME ZONE") :type/DateTime
6767
:TSQUERY :type/*
6868
:TSVECTOR :type/*
@@ -228,19 +228,44 @@
228228
(jdbc/with-db-metadata [metadata (sql-jdbc.conn/db->pooled-connection-spec database)]
229229
{:tables (fast-active-tables, driver, ^DatabaseMetaData metadata, database)}))
230230

231+
;; We can't use getObject(int, Class) as the underlying Resultset used by the Teradata jdbc driver is based on jdk6.
232+
(defmethod sql-jdbc.execute/read-column [:teradata Types/TIMESTAMP]
233+
[_ _ rs _ i]
234+
(.toLocalDateTime (.getTimestamp rs i)))
235+
236+
(defmethod sql-jdbc.execute/read-column [:teradata Types/TIMESTAMP_WITH_TIMEZONE]
237+
[_ _ rs _ i]
238+
(OffsetDateTime/parse (.getString rs i)))
239+
240+
(defmethod sql-jdbc.execute/read-column [:teradata Types/DATE]
241+
[_ _ rs _ i]
242+
(.toLocalDate (.getDate rs i)))
243+
244+
(defmethod sql-jdbc.execute/read-column [:teradata Types/TIME]
245+
[_ _ rs _ i]
246+
(.toLocalTime (.getTime rs i)))
247+
248+
(defmethod sql-jdbc.execute/read-column [:teradata Types/TIME_WITH_TIMEZONE]
249+
[_ _ rs _ i]
250+
(OffsetTime/parse (.getTime rs i)))
251+
231252
(defn- run-query
232253
"Run the query itself without setting the timezone connection parameter as this must not be changed on a Teradata connection.
233254
Setting connection attributes like timezone would make subsequent queries behave unexpectedly."
234-
[{sql :query, params :params, remark :remark} timezone connection]
235-
(let [sql (s/replace (s/replace (str "-- " remark "\n" sql) "OFFSET" "") "test_data" "test-data") ;; temporary hack
236-
statement (into [sql] params)
237-
[columns & rows] (jdbc/query connection statement {:identifiers identity, :as-arrays? true
238-
:read-columns (#'metabase.driver.sql-jdbc.execute/read-columns :teradata timezone)})]
255+
[{sql :query, :keys [params remark max-rows]} connection]
256+
(let [sql (s/replace (str "-- " remark "\n" sql) "OFFSET" "")
257+
[columns & rows] (jdbc/query
258+
connection (into [sql] params)
259+
{:identifiers identity
260+
:as-arrays? true
261+
:read-columns (partial #'metabase.driver.sql-jdbc.execute/read-columns :teradata)
262+
:set-parameters (partial #'metabase.driver.sql-jdbc.execute/set-parameters :teradata)
263+
:max-rows max-rows})]
239264
{:rows (or rows [])
240-
:columns columns}))
265+
:columns (map u/qualified-name columns)}))
241266

242267
(defn- run-query-without-timezone [driver settings connection query]
243-
(#'metabase.driver.sql-jdbc.execute/do-in-transaction connection (partial run-query query nil)))
268+
(#'metabase.driver.sql-jdbc.execute/do-in-transaction connection (partial run-query query)))
244269

245270
(defmethod driver/execute-query :teradata
246271
[driver {:keys [database settings], query :native, :as outer-query}]

0 commit comments

Comments
 (0)