查询到PgPool-II并命令show pool_nodes不起作用

问题描述

我有一个网络核心应用程序,该应用程序通过PgPool-II集群连接到Postgresql服务器。效果很好,例如当我尝试使用pgpool sql命令(例如“ show pool_nodes”)时,这些命令似乎通过pgpool传递,而是进入一个抛出错误的Postgresql服务器(应该这样做)。

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

是否可以在Npgsql中使用“简单查询协议”? 如果没有,是否还有其他方法可以通过Net Core发送PostgreSQL查询,而不使用Npgsql

解决方法

否,当前没有一种方法可以通过PostgreSQL简单协议发送用户指定的查询。 Npgsql对某些内部命令(例如COMMIT)使用简单协议,但是面向用户的查询API始终使用扩展协议。

我想用PgPool-II提出这个问题,看来它们也应该拦截扩展协议消息-毕竟这是标准PostgreSQL协议的一部分(请在此处发布指向该问题的链接)。如果出于某种原因确实无法实现,则可以在Npgsql repo上打开一个问题,添加一些用于生成简单查询的API。

,

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

从网络核心代码中,我调用psql命令应用程序,并让它处理对pgpool集群的请求。不是我想要的不错的解决方案,但是它可以工作。