46.6. エラーおよび警報メッセージフィールド

本節では、ErrorResponseおよびNoticeResponseメッセージ内で現れる可能性があるフィールドについて説明します。 それぞれのフィールド種類は、単一バイトの識別子トークンを持ちます。 メッセージ内に与えられる任意のフィールド種類は、多くてもメッセージ当たり1つでなければならないことに注意してください。

S

深刻度です。 フィールドの内容はERRORFATALPANIC(エラーメッセージ内)、WARNINGNOTICEDEBUGINFOLOG(警報メッセージ内)、もしくはこれらの1つの地域化された翻訳です。 常に存在します。

C

コード、そのエラー用のSQLSTATEコードです(付録Aを参照)。 地域化されません。 常に存在します。

M

メッセージ、主に人にわかりやすいエラーメッセージです。 これは正確、簡潔でなければなりません(通常は1行です)。 常に存在します。

D

詳細です。 問題のより詳細を説明する省略可能な二次的なエラーメッセージです。 複数行にまたがる可能性があります。

H

ヒントです。 その問題にどう対応するかを表す省略可能な提言です。 これは、詳細と異なり、事実ではなく提案(不適切な場合もありますが)を提供することを目的としたものです。 複数行にまたがる可能性があります。

P

位置です。 フィールド値は、エラーカーソルの位置を示すもので、元の問い合わせ文字列へのインデックスを10進ASCIIで表した整数です。 先頭の文字がインデックス1になり、位置はバイトではなく文字で数えられます。

p

内部的位置です。 これはPと同じ定義ですが、カーソルの位置がクライアントによって発せられたコマンドではなく内部的に生成されたコマンドを参照する場合に使用されます。 このフィールドが現れる時には常にqも現れます。

q

内部的問い合わせ。 失敗した、内部生成のコマンドテキストです。 これは例えば、PL/pgSQL関数によって発行されたSQL問い合わせなどです。

W

場所です。 エラーが発生したコンテキストを示します。 現在ここには、実行中の手続き言語関数と内部生成問い合わせの呼び出しスタックトレースバックが含まれます。 この追跡情報は、1行当たり1項目として、最も最近のものが初めに現れます。

F

ファイルです。 エラーを報告した、ソースコードのファイル名です。

L

行です。 エラーを報告した、ソースコードの行番号です。

R

ルーチンです。 エラーを報告した、ソースコードのルーチン名です。

クライアントには、必要な情報を表示する際、整形する責任があります。 具体的には、必要に応じて長い行を分割しなければなりません。 エラーメッセージフィールド内にある改行文字は、改行ではなく、段落の区切りとして扱わなければなりません。