# PostgreSQLフォーマッター

PostgreSQLのクエリやスクリプトを、ドル引用符付き関数本体、E''エスケープ文字列、二重引用符付き識別子、::キャスト、->>や@>などのJSON演算子に対応したPostgresのルールで整形します。RETURNING、ON CONFLICT、DO UPDATE SETなどの句は独立した行に配置され、閉じられていない文字列、コメント、括弧は行番号と列番号とともに報告されます。マイグレーションやクエリを読む開発者のためのツールです。

## よくある質問

### どのPostgreSQL構文に対応していますか？

引用符の二重化に対応した標準文字列、バックスラッシュエスケープを使うE''文字列、U&''Unicode文字列、B''およびX''ビット文字列、二重引用符付き識別子、$1パラメーターを認識します。$$...$$や$body$...$body$などのドル引用符付き文字列も読み取ります。

### ドル引用符で囲まれた関数本体はどうなりますか？

ドル引用符付きの本体はPostgreSQLにとって文字列であるため、記述どおりに保持されます。周囲のCREATE FUNCTIONステートメントは整形されますが、本体自体は変更されません。

### キャストや演算子はそのまま保持されますか？

はい。value::integer などのキャストは分割されず、->、->>、#>、#>>、@>、<@、?|、?&、@@、正規表現演算子の ~ と ~* およびその否定形などの演算子も分割されません。PostgreSQLでは、# は演算子であり、コメントではありません。

### どのPostgreSQL句が独立した行になりますか？

RETURNING、ON CONFLICT、DO UPDATE SET、FOR UPDATE、FOR NO KEY UPDATE、FOR SHARE、FOR KEY SHARE は、句としてひとまとまりに保たれます。通常の SELECT、FROM、WHERE、GROUP BY、ORDER BY、LIMIT、OFFSET 句も、それぞれ独立した行になります。

### コメントは保持されますか？

はい。行コメントとブロックコメントは元の位置に保たれ、PostgreSQLで許可されているネストしたブロックコメントも正しく読み取られます。複数行のブロックコメントは、新しい位置に合わせてインデントし直されます。

### MERGE に対応していますか？

はい。WHEN MATCHED と WHEN NOT MATCHED の分岐は新しい行から始まるため、PostgreSQL 15 以降の MERGE 文も読みやすく保たれます。

### キーワードの大文字と小文字は変わりますか？

いいえ。キーワードと識別子の大文字・小文字は入力時のまま保持されます。PostgreSQLでは引用符付き識別子の大文字・小文字が区別され、変更されることはありません。

### どのようなエラーが検出されますか？

閉じられていない文字列、引用符付き識別子、ドル引用文字列、ブロックコメント、および対応していない括弧は、行番号と列番号とともに報告されます。このツールはPostgreSQLの文法全体やスキーマはチェックしません。

### 入力の最大サイズはどれくらいですか？

1リクエストあたり最大 1 MB、文あたり最大 128 KB です。多数の文を含むマイグレーションファイルは、文ごとに整形され、空行で区切られます。

### インデントを選べますか？

はい。2 または 4 個のスペース、あるいはタブを使用できます。SQLはメモリ上でのみ処理され、保存されることはありません。

ここに広告を掲載しませんか？

[メールでお問い合わせ](mailto:hi@dennn.is?subject=OneClick%20Pro%E3%81%A7%E3%81%AE%E5%BA%83%E5%91%8A%E6%8E%B2%E8%BC%89)

[広告 WordPress向けのエージェント対応プラグインスイート。](https://sleekwp.com/?ref=oneclickpro)
