Redshift JDBC Driver 2.0 系にバージョンアップする際に気をつけること
Redshift JDBC Driver 2.0系にバージョンアップする際に、注意しないといけない(少しハマった)ことがあったのでまとめておきます。
概要
現段階で私がRedshift JDBC Driver 2.0系を使用してみて、注意が必要だと思うポイントは下記です。
- jdbc url に jdbc:postgresql://endpoint:port/database が利用できない
- デフォルトのタイムゾーン設定値はクライアントのタイムゾーンの設定値が使われる
Redshift JDBC Driverのバージョン1.0系と2.0系での設定や挙動と少し異なるようです。
確認環境
確認した環境は、下記になります。
Mac バージョン
$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H524
Dbeaver バージョン: 21.0.3.202104181339
Redshift クラスターバージョン : 1.0.25813
Redshift JDBC driver バージョン : 2.0.0.4 / 1.2.43.1067
注意すべきポイント
jdbc url に jdbc:postgresql://endpoint:port/database が利用できない
Redshift JDBC Driver 1.0系では、下記のどちらかをjdbc urlに設定することができました。
jdbc:redshift://endpoint:port/database
jdbc:postgresql://endpoint:port/database
JDBC ドライバーバージョン 1.0 接続の設定を確認すると、下記の注記がありました。
JDBC ドライバーバージョン 2.0 接続の設定では特にjdbc urlについての記述がなかったので、2.0系では jdbc:postgresql://endpoint:port/database
をjdbc urlに設定できなくなったと推察しています。
2.0系で jdbc:postgresql://endpoint:port/database
を設定して接続を試してみましたが、接続できませんでした。
基本的にjdbc:redshift://endpoint:port/database
で設定されていることが多いと思いますが、既存の環境で2.0系にバージョンアップする場合は、一度jdbc urlがjdbc:redshift://endpoint:port/database
で設定されているかを確認した方が良さそうです。
デフォルトのタイムゾーン設定値はクライアントのタイムゾーンの設定値が使われる
Redshift JDBC Driver 1.0系では、デフォルトのタイムゾーン設定値はUTC固定でした。
クライアント側のタイムゾーンがAsia/Tokyo
となっていることを確認した上で、
$ sudo systemsetup -gettimezone Time Zone: Asia/Tokyo
Redshift JDBC driver 1.2.43.1067
で接続し確認してみると、UTC時刻で値が返されました。(2021/04/30 22:13:56 JST 頃にクエリ実行)
select sysdate as sysdate, getdate() as getdate ; sysdate |getdate | -------------------+-------------------+ 2021-04-30 13:13:56|2021-04-30 13:13:56|
クライアント側のタイムゾーン設定値を変更せずにRedshift JDBC driver 2.0.0.4
で接続し確認してみると、Asia/Tokyo時刻で値が返されました。(2021/04/30 22:22:14 JST 頃にクエリ実行)
select sysdate as sysdate, getdate() as getdate ; sysdate |getdate | -------------------+-------------------+ 2021-04-30 22:22:14|2021-04-30 22:22:14|
SETコマンドでセッション毎・ユーザー毎のタイムゾーンを設定できるので、必要に応じて下記のブログのようにタイムゾーンを設定しないといけない場面があるかもしれません。
おわりに
今後他にも注意すべきポイントがあると思うので、わかり次第本記事に追記もしくは別記事にまとめていきたいと思います。
以上、DA(データアナリティクス)事業本部のナガマサでした。