查询 PgPool-II 和命令 show pool_nodes 不工作

Query to PgPool-II and command show pool_nodes not working

我有一个通过 PgPool-II 集群连接到 PostgreSQL 服务器的网络核心应用程序。它工作得很好,除了当我尝试使用 pgpool sql 命令时,例如“show pool_nodes”,这些命令似乎通过 pgpool 而不是输入一个抛出错误的 PostgreSQL 服务器(它它应该)。

似乎 Npgsql 使用“扩展查询协议”,它不适用于 pgpool sql 命令。他们需要“简单查询协议”。

有什么方法可以在 Npgsql 中使用“简单查询协议”吗? 如果没有,是否有任何其他方式使用 net core 发送 PostgreSQL 查询但不使用 Npgsql?

不,目前无法通过 PostgreSQL 简单协议发送 user-specified 查询。 Npgsql 对某些内部命令(例如 COMMIT)使用简单协议,但是 user-facing 查询 APIs 总是使用扩展协议。

我会用 PgPool-II 提出这个问题,看起来他们也应该拦截扩展协议消息 - 毕竟它是标准 PostgreSQL 协议的一部分(请 post a link到这里的问题)。如果由于某种原因它真的不可能,你可以在 Npgsql repo 上打开一个问题来添加一些 API 来生成简单的查询。

我通过变通方法解决了这个问题。

我从网络核心代码调用 psql 命令应用程序并让它处理对 pgpool 集群的请求。这不是我想要的好解决方案,但它确实有效。