sqldef などは mysql 用の vitess を使っている
vittess の sqlparser の source を拡張して作られている。 information_schema.table_constraints の情報を元に create 文を build Web 開発を支えるマイグレーションツールについて / sqldef introduction for psql users - Speaker Deck
vittess の pg 完全対応は 2021~2022 年?
vittess の postgre バージョンのプロジェクトとして citus がある(つかえるかは不明) citusdata/citus: Distributed PostgreSQL as an extension - for multi-tenant and real-time analytics workloads
todo 以下を調査する pgsqldef
Operation | SQL | Supported |
---|---|---|
Create a new table | CREATE TABLE |
✔️ |
Rename an existing table | ALTER TABLE + RENAME |
ng |
Delete an existing table | DROP TABLE |
✔️ |
Add a column to an existing table | ALTER TABLE + ADD COLUMN |
✔️ |
Rename an existing column | ALTER TABLE + RENAME COLUMN |
ng |
Delete an existing column | ALTER TABLE + DROP COLUMN |
✔️ |
Set primary keys (IDs) | PRIMARY KEY |
✔️ |
Define relations (foreign keys) | FOREIGN KEY + REFERENCES |
✔️ |
Make columns optional/required | NOT NULL |
✔️ |
Set unique constraints | UNIQUE |
✔️ |
Set default values | DEFAULT |
✔️ |
Define enums | ENUM |
✔️ |
Create indexes | CREATE INDEX |
✔️ |
Cascading deletes | ON DELETE |
ng |
Cascading updates | ON UPDATE |
ng |
Data validation | CHECK |
ng |
DB スキーマを駆動にした開発のためのライブラリ調査 | フューチャー技術ブログ
lib/pq がデファクトだが、いろんな問題が山積みで、今後改善される見込みもない pqx を前提にした方が良さそう
- cockroach/pkg/sql/parser at master · cockroachdb/cockroach
- cockroachdb のチームが作った pgparser
- cockroachdb は postgresql 互換の NewSQL
- parser のみで提供していないので使いにくい。sqlfmt も cockroachdb をインストールして使う
- lfittl/pg_query_go: Go library to parse and normalize SQL queries using the PostgreSQL query parser