PGPROTO(1) | pgpool-II 4.3.5 Documentation | PGPROTO(1) |
pgproto - tests PostgreSQL or any other servers that understand the frontend/backend protocol.
pgproto [option...]
pgproto tests PostgreSQL or any other servers that understand the frontend/backend protocol.
-h hostname
--hostname=hostname
-p port
--port=port
-u username
--user=username
-d databasename
--database=databasename
-f filename
--proto-data-file=filename
-r naptime
--read-nap=naptime
-D
--debug
-v
--version
-?
--help
In the example below, the first character in the file (i.e. 'Q') indicates the message kind specified in the PostgreSQL frontend/backend protocol.
Exceptions are 'Y' and 'y'. 'Y' reads messages from backend until 'Ready for query' is received. 'y' reads messages from backend while messages are coming from backend then stops if messages are not available for 1 second. 'Y' is used for waiting for reply of 'Q' (simple query) or after 'S' (sync) in extended queries. 'y' can be used for receiving messages after 'H' (flush).
If you want to include a " (double quotation) in a string data type, for example "SELECT * FROM "aaa"", you can qualify it by using \ (back slash) like ""SELECT * FROM "aaa"" A command line spread over multiple lines can be created using \ as well.
'Q' "SELECT * FROM aaa \
WHERE a = 1"
Here is an example input file:
#
# 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'
Here is an example output:
$ 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
Other example data files:
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'
2023 | pgpool-II 4.3.5 |