5

我遇到了 libpq 的PQexec函数挂在间歇性连接上的问题。查看邮件列表后,解决方案是使用异步函数PQsendQuery/PQgetResult并实现自己的超时。

现在我面临的问题是PQgetResult需要多次调用,直到它返回null,然后你就知道它已经完成了。PQresult但是,我的应用程序的其余部分需要每个查询一个对象。

所以我的问题是:

  1. 有没有办法连接/加入多个PQresults?
  2. 我可以在调用之前以某种方式使用PQisBusy&PQconsumeInput等到所有结果都准备好了吗PQgetResult
4

1 回答 1

5

感谢Laurenz Albe在 postgresql 邮件列表上回答了这个问题。

如果你有一个 SQL 语句,你将只得到一个 PQresult. 如果您发送带有多个语句的查询字符串,您会得到多个,例如

PQsendQuery(conn, "SELECT 42; SELECT 'Hello'"); 

将导致两个PQresults.

PQresults只能使用异步命令处理来获取多个;相应的 PQexec 将仅返回执行的最后一条语句的 PQresult。

因此,您可以获得与PQexec丢弃PQresults除最后一个之外的所有内容相同的行为。

于 2012-11-30T14:17:37.383 回答