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

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

所以我的问题是:

  • 是否可以串联/加入多个PQresult
  • 我可以以某种方式使用PQisBusyPQconsumeInput等到所有
    在调用PQgetResult之前结果已经准备好了吗?
  • 最佳答案

    归功于Laurenz Albe,归功于PostgreSQL邮件列表中的answered

    如果只有一条SQL语句,则只会得到一条PQresult。如果您发送查询字符串,您将获得不止一个
    有不止一项声明,例如

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

    将导致两个PQresults

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

    因此,您可以通过丢弃来获得与oj​​it_code相同的行为
    除最后一个以外的所有PQexec

    关于c - libpq-PQsendQuery等待完整结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13629237/

    10-11 19:15