ラベル DBeaver の投稿を表示しています。 すべての投稿を表示
ラベル DBeaver の投稿を表示しています。 すべての投稿を表示

2018年2月28日水曜日

MariaDB + DBeaver で、日付の扱いに不安があるという話

まず前提として、DBeaver はお気に入りです。
無料で使える質の良い SQL Client ですが、完璧はものは存在しないわけで、、

それは TIME 型 から始まった

MariaDB には TIME 型というデータ型があります。

Description

A time. The range is '-838:59:59.999999' to '838:59:59.999999'Microsecond precision can be from 0-6; if not specified 0 is used. Microseconds have been available since MariaDB 5.3.
https://mariadb.com/kb/en/library/time/
この通り、ちょっとした範囲の時間(時刻でなく) を格納できる型です。
"25:45:00" とか "-40:00:00" という、「時刻」のフォーマットとしては許可されない値まで入るという。

ある時、DBeaver がこんな表示をしていました。

ところが、SQL を close_time = "02:00:00" としても取得することができません。
書きこんではどうかと、close_time に書き込んでも、思った通りの値が入りませんでした…

もしやと思い command でデータを取得してみると、、

あらどうして、DBeaver が表示する値と異なっているではありませんか。
そう、これは「時刻として正しくない時間を表示できない」という DBeaver のバグだったのです。やれやれ。。

NULL が抽出できない

そんなことを忘れた頃に、今度は「NULL の日付が取得できない」という問題が発生しました。

DBeaver での表示はこうで、2番目のデータが取得できていませんでした。

さすがに今度はそこまで悩む前に、MySQL Workbench で確認してみました。
すると。。。

なんということでしょう。
今度は「0000-00-00」を NULL と表示してしまうバグにぶち当たったのでした。。。

この日が DBeaver に初めて Issue 登録した日になりました。
DBeaver はマイナーな DB にも All-in-one で対応しているので、細かい方言に対応しきれていないようです。

ただ、UI も機能もスピードも優秀なので、もちろんこれからも使っていきます。
お世話になってるので、PR を送るぐらいしても良いかなと思いました。
MySQL Workbench から完全卒業できる日はまだのようです。