tbls v1 をリリース / SQLiteに対応した etc.

データベースドキュメント生成ツールのtblsですが、ひと通り機能が落ち着いた(と思った)のでメジャーバージョンのv1をリリースしました(現在は v1.2.1)。

github.com

前回 v0.8.2 からの追加機能や修正などを紹介したいと思います。

Amazon Redshiftのサポート(?)

Work with redshift by watarukura · Pull Request #29 · k1LoW/tbls · GitHub

Amazon RedshiftはPostgreSQLをベースにしていると聞いていたのですが、まさか pg_catalog なども同じだとは。。

一部キャストが利かなかったらしく、修正Pull Requestをもらって対応できた ようです

(というのもAmazon Redshift、ちょっと高くて手元では検証できていないのです)

ファイルディスクリプタを使い切ってしまうバグを修正

Fix `too many open files` by k1LoW · Pull Request #33 · k1LoW/tbls · GitHub

これはまさに Big Sky :: golang では for ループの中で defer してはいけない。 というヤツです。

こういうバグをつくるのも自分の中では新鮮でした。

Markdownの整形周りの調整

ありがたいことにいろいろな方に使っていただいているようで、想定できていなかったスキーマへの対応や、Markdownテーブルの整形オプションの追加などをしました。

そういえば最近自分のユースケースでTriggerが爆誕したので、それの取得にも対応しました。

SQLiteのサポート

Support SQLite by k1LoW · Pull Request #49 · k1LoW/tbls · GitHub

PostgreSQLAmazon Redshift)、MySQLに続くサポートデータベースです。

tblsを作っていると、その実現する機能の特性からデータベースに対して「データをためて使う」という通常の使い方ではなく、「データベースからスキーマの情報をいかに取得するか」という別の視点で触ります。

実はPostgreSQLMySQLSQLiteも、いつものクライントで(ほぼ)SQLを使ってスキーマの情報を取得できるというのが面白いです。

information_schema.* などはPostgreSQLMySQLも同じ名前のものを持っています。何か共通して参照している仕様があるのかもしれません。

SQLiteは流石に他と比べると若干貧弱ではありますが(例えば、外部キー制約につけた名前を取得するにはsqlite_masterにそのまま保存してあるCREATE TABLE文をパースしないといけない etc.)、なんとか同じように取得できました。

サンプルを見たら分かるように 他のデータベースと遜色なく利用できると思います。

Virtual Tableにも一部対応しています。

というわけで

簡単に導入できますので、ぜひ使ってみてください。

使い方などはQiitaの記事 などを参考にしてみてください。