如何在扩展模式下通过
psql
命令行执行 postgresql 查询(意味着我想查看解析、绑定和执行数据包)?
我已经执行了
PREPARE
和 EXECUTE
命令,但是当我通过 Wireshark 捕获发送的数据包时,我发现它们是作为“简单查询”数据包发送的。
PREPARE
和EXECUTE
语句都是SQL语句,将作为简单查询(Q)发送。
如果你想查看绑定、解析和执行数据包,你必须编写一些代码。几乎每个 PostgreSQL 接口都可以使用扩展模式。
用 C、Java、Python 或您选择的其他语言编写一个小程序。
Postgres 对此添加了一些支持。请参阅版本 17 的文档:
https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-BIND
你可以运行:
INSERT INTO tbl1 VALUES ($1, $2) \bind 'first value' 'second value' \g
这将使用扩展协议。来自文档:
该命令导致使用扩展查询协议(参见第 53.1.2 节),这与使用简单查询协议的普通 psql 操作不同。因此,此命令可用于测试 psql 的扩展查询协议。 (即使查询没有参数并且该命令指定零参数,也会使用扩展查询协议。)该命令仅影响下一个执行的查询;所有后续查询将默认使用简单查询协议。