仕様と根拠
数え方
PostgreSQL の位置パラメータは $ のあとに続く数字で、$1, $2 のように位置で参照します(PREPARE、4.1.4 節)。SQL を字句に分け、$ と数字が続く部分だけを数えます。単一引用符の文字列(E'…'・U&'…' を含む)、ドル引用符、二重引用符つき識別子、-- と入れ子にできる /* */ のコメントの中は、パラメータではないので数えません(4.1.1・4.1.2・4.1.5 節)。
警告にする条件
最大番号より小さい番号が使われていない欠番、$0、入力した「渡す値の個数」と最大番号の不一致は警告です。個数が合わないときの厳密な動作は PREPARE のページに記載がないため、断定せず実際の DB・ドライバーで確認するよう案内します。同じ番号が複数回出るのは誤りではなく、情報として示します。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| PostgreSQL 18 ドキュメント PREPARE | 2026年10月28日 | $1, $2 など位置でパラメータを参照する。個数が合わないときの動作は記載なし |
| PostgreSQL 18 ドキュメント 4.1 字句構造 | 2026年10月28日 | 4.1.4(特殊文字: $n)・4.1.1・4.1.2.1〜4.1.2.4・4.1.5 |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 型の推論(PREPARE の型リストと実際の値の型の対応)は判定しません。番号と個数を数えるだけです。
- 完全な SQL の構文解析はしません。関数本体の $1 など、文脈で意味が変わる使い方は字句のとおりに数えます。
- ? と :名前 は PostgreSQL 自体の記法ではなく、ドライバーなどの別の層の書き方です。数えるのは見つけた個数だけで、仕様の根拠はありません。
- 貼り付けた SQL の実行や、DB への接続はできません。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のクエリが正しく実行できることを保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。