Обсуждение: Asynchronous Queries/libpq
Me again. I am trying to understand the process for asynchronous queries in libpq, and I want to make sure I understand the process correctly. Is it that PQgetResult will return a full query result from a single command, and will only return NULL if there are no more commands that have not completed, therefore only needing to be called once per command in the dispatched query; or is it that PQgetResult must be repeatedly called for even a single command query, and that it will only return NULL after each command in the dispatched query has completed fully? Further, can we *always* assume that query results will be returned in the order they appear in the query dispatch? Thanks, Keary Suska Esoteritech, Inc. "Demystifying technology for your home or business"
Keary Suska <hierophant@pcisys.net> writes: > Is it that PQgetResult will return a full query result from a single > command, and will only return NULL if there are no more commands that have > not completed, therefore only needing to be called once per command in the > dispatched query; or is it that PQgetResult must be repeatedly called for > even a single command query, and that it will only return NULL after each > command in the dispatched query has completed fully? You need to loop until PQgetResult returns null, if you want to handle multi-command strings (you'll get one PGresult per command). If you know there's only going to be one result you might be able to get away without a second PQgetResult call, but I wouldn't recommend it. > Further, can we *always* assume that query results will be returned in the > order they appear in the query dispatch? Yes. The backend isn't going to execute commands in a query string out-of-order. regards, tom lane