libpq - PQsendQuery等待完整的结果

Ili*_*oly 4 c postgresql asynchronous libpq

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

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

所以我的问题是:

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

Ili*_*oly 5

学分到Laurenz ALBE到谁回答 PostgreSQL的邮件列表上这种过度.

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

PQsendQuery(conn, "SELECT 42; SELECT 'Hello'"); 
Run Code Online (Sandbox Code Playgroud)

会导致两个PQresults.

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

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