PostgreSQL『ERROR: argument of WHERE must not return a set』の原因と対処
- 2025.10.03
WHERE句は真偽値(boolean)式だけを受け付けるが、集合(複数行)を返す関数・式(SRF: set-returning function)を直接置いたときに出る。unnest/jsonb_array_elements/regexp_matches/自作SETOF関数/GENERATE_SER […]
WHERE句は真偽値(boolean)式だけを受け付けるが、集合(複数行)を返す関数・式(SRF: set-returning function)を直接置いたときに出る。unnest/jsonb_array_elements/regexp_matches/自作SETOF関数/GENERATE_SER […]
NULLの扱いを「等しい」と見なすユニーク定義(NULLS NOT DISTINCT/部分ユニーク/式インデックス等)の下で、NULL(またはNULL相当の式値)が重複したときに発生する。デフォルトのUNIQUEはNULLを「互いに異なる」と扱うため複数NULLは許容だが、設定や定義次第で“NULL […]
ビューが返す1行(タプル)の“列数(物理サイズ)”が一定にならないと検出されたときに発生する。典型は、ビューのON SELECTルールが複数あって出力列が一致していない、UNION/関数/複合型の扱いで分岐ごとに列数がズレる、あるいはビューの再定義や下位オブジェクト変更で列構成が不整合になったケース […]
単一の値を返す前提(スカラ副問い合わせ)の場所で、実際には2行以上返ってしまったときに発生する。=(等価比較)の右側、SELECT句の式、INSERT/UPDATEの値式、CHECK制約や生成列の式などが対象。要件別の書き換え(IN/EXISTS/JOIN/集約/上位1件の決定規則/配列化)と、スキ […]
拡張(CREATE EXTENSION / LOAD / PL言語 / C関数)で参照する共有ライブラリや制御ファイルが見つからないときに出る。典型は「could not access file “$libdir/xxx”: No such file or directory […]
単一の値を返す前提(スカラ副問い合わせ)の場所で、実際には2行以上返ってしまったときに発生する。=(等価比較)の右側、SELECT句の式、INSERT/UPDATEの値式、CHECK制約や生成列の式などが対象。要件別の書き換え(IN/EXISTS/JOIN/集約/上位1件の決定規則/配列化)と、スキ […]
「X という型から integer へのキャストは許可されない」趣旨のエラー(典型表示:cannot cast type X to integer)が出る状況を整理。発生しやすい型(boolean/jsonb/uuid/date/enum/bytea/array/ドメイン型)ごとの解決パターン、数値 […]
B-treeインデックスに格納される1レコード(インデックスタプル)が上限サイズを超えたときに出る。8KBブロックの環境では1タプルあたり約2.7KB前後が実質上限で、巨大なtext/varcharや多列インデックス、INCLUDE列の盛り過ぎ、jsonbのB-tree化などで発生しやすい。即効回避 […]
新規接続が上限に達し、一般ユーザー(非スーパーユーザー)の接続を受け付けられない状態で発生する。典型メッセージの読み方、発生条件、即効復旧(安全にセッションを開放)、恒久対策(接続数設計・プーリング・設定値の見直し)、クラウド環境での注意点までを体系化した。 エラーメッセージの読み方(代表例) ・「 […]
CREATE OR REPLACE FUNCTIONで既存関数の「入力(IN)パラメータ名」を変更しようとすると、このエラーが出る。呼び出し側の名前付き引数(named notation)互換性を壊すのを防ぐため、PostgreSQLはIN引数名の置き換えを禁止している。最短復旧、恒久対策、互換維持 […]