サーバが稼働しているマシンのホスト名。 "/"からホスト名が始まる場合、Unixドメインソケットのディレクトリとして使用されます (デフォルト: unixドメインソケット)。
ポート番号 (デフォルト:5432)
ユーザ名 (デフォルト: OSユーザ名)
データベース名 (デフォルト: ユーザ名)
サーバに送信するメッセージデータを記述したテキストファイル (デフォルト: pgproto.data)。
待ち時間、単位はマイクロ秒 (デフォルト:0)。 0より大きな値が指定された場合、ソケットから各データを読み込む際にスリープを入れます。 これは、遅いクライアントをシミュレートします。
デバッグメッセージを表示します。
バージョンを表示して終了します。
コマンドのヘルプを表示します。
ファイル内の最初の文字 (Q)がフロントエンド/バックエンドプロトコルのメッセージの種類を表します。
'Y'と'z'と'y'は例外です。 'Y'は、Ready for queryが受信されるまで、バックエンドからメッセージを読み取ります。 'y'は、バックエンドからメッセージを受信している間はメッセージを読み取り、1秒間メッセージを受信しなかった場合停止します。 'Y'は、拡張クエリのSync ('S')、簡易問い合わせ ('Q')の応答を待つために使用できます。 'y'は、Flush ('H')後にメッセージを受信するために使用できます。 'z'は、バックエンドから1つメッセージを読みます。1秒間メッセージを受信しなかった場合停止します。 'z'は、事前にいくつメッセージが届くかわかっている場合に'H'のテストのために利用することができます。
"SELECT * FROM "aaa""のように文字列にダブルクォートを含める場合、"SELECT * FROM \"aaa\""のようにバックスラッシュを使用します。 以下のように、\を使用して複数行にまたがるコマンド行を作成することもできます。
'Q' "SELECT * FROM aaa \
WHERE a = 1"
ここでは入力ファイルの例を示します。
#
# Test data example
#
'Q' "SELECT * FROM aaa"
'Y'
'P' "S1" "BEGIN" 0
'B' "" "S1" 0 0 0
'E' "" 0
'C' 'S' "S1"
'P' "foo" "SELECT 1" 0
'B' "myportal" "foo" 0 0 0
'E' "myportal" 0
'P' "S2" "COMMIT" 0
'B' "" "S2" 0 0 0
'E' "" 0
'C' 'S' "S2"
'S'
'Y'
'X'
ここでは出力例を示します。
$ pgproto -p 11000 -d test -f sample.data
FE=> Query (query="SELECT * FROM aaa")
<= BE RowDescription
<= BE CommandComplete(SELECT 0)
<= BE ReadyForQuery(I)
FE=> Parse(stmt="S1", query="BEGIN")
FE=> Bind(stmt="S1", portal="")
FE=> Execute(portal="")
FE=> Close(stmt="S1")
FE=> Parse(stmt="foo", query="SELECT 1")
FE=> Bind(stmt="foo", portal="myportal")
FE=> Execute(portal="myportal")
FE=> Parse(stmt="S2", query="COMMIT")
FE=> Bind(stmt="S2", portal="")
FE=> Execute(portal="")
FE=> Close(stmt="S2")
FE=> Sync
<= BE ParseComplete
<= BE BindComplete
<= BE CommandComplete(BEGIN)
<= BE CloseComplete
<= BE ParseComplete
<= BE BindComplete
<= BE DataRow
<= BE CommandComplete(SELECT 1)
<= BE ParseComplete
<= BE BindComplete
<= BE CommandComplete(COMMIT)
<= BE CloseComplete
<= BE ReadyForQuery(I)
FE=> Terminate
その他のデータファイルの例です。
Copy
#
# Test data example
#
# CopyIn
#
'Q' "COPY t1 FROM STDIN"
# CopyData
'd' "abc"
# CopyDone
'c'
'Y'
# CopyOut
#
'Q' "COPY t1 TO STDOUT"
'Y'
#
# Copy fail case
#
'Q' "COPY t1 FROM STDIN"
# CopyData
'd' "abc"
# CopyFail
'f' "pgproto copy fail test"
'Y'
'X'
Function Call
#
# Test data example
#
# Function call (lo_creat)
# from PostgreSQL's src/include/catalog/pg_proc.data
# { oid => '957', descr => 'large object create',
# proname => 'lo_creat', provolatile => 'v', proparallel => 'u',
# prorettype => 'oid', proargtypes => 'int4', prosrc => 'be_lo_creat' },
'F' 957 1 0 1 1 "0" 0
'Y'
'X'