データベースドキュメント生成ツールのtblsですが、ひと通り機能が落ち着いた(と思った)のでメジャーバージョンのv1をリリースしました(現在は v1.2.1)。
前回 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
PostgreSQL(Amazon Redshift)、MySQLに続くサポートデータベースです。
tblsを作っていると、その実現する機能の特性からデータベースに対して「データをためて使う」という通常の使い方ではなく、「データベースからスキーマの情報をいかに取得するか」という別の視点で触ります。
実はPostgreSQLもMySQLもSQLiteも、いつものクライントで(ほぼ)SQLを使ってスキーマの情報を取得できるというのが面白いです。
information_schema.*
などはPostgreSQLもMySQLも同じ名前のものを持っています。何か共通して参照している仕様があるのかもしれません。
SQLiteは流石に他と比べると若干貧弱ではありますが(例えば、外部キー制約につけた名前を取得するにはsqlite_master
にそのまま保存してあるCREATE TABLE文をパースしないといけない etc.)、なんとか同じように取得できました。
サンプルを見たら分かるように 他のデータベースと遜色なく利用できると思います。
Virtual Tableにも一部対応しています。
というわけで
簡単に導入できますので、ぜひ使ってみてください。
使い方などはQiitaの記事 などを参考にしてみてください。