summaryrefslogtreecommitdiff
path: root/src/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces')
-rw-r--r--src/interfaces/ecpg/ecpglib/execute.c5
-rw-r--r--src/interfaces/libpq/fe-exec.c3
2 files changed, 6 insertions, 2 deletions
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 5b09233810d..5b32e7cbcb2 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -1730,12 +1730,13 @@ ecpg_process_output(struct statement * stmt, bool clear_result)
}
/* check for asynchronous returns */
- notify = PQnotifies(stmt->connection->connection);
- if (notify)
+ PQconsumeInput(stmt->connection->connection);
+ while ((notify = PQnotifies(stmt->connection->connection)) != NULL)
{
ecpg_log("ecpg_process_output on line %d: asynchronous notification of \"%s\" from backend PID %d received\n",
stmt->lineno, notify->relname, notify->be_pid);
PQfreemem(notify);
+ PQconsumeInput(stmt->connection->connection);
}
return status;
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index ca20dd130c3..7afdb1b226a 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -2239,6 +2239,9 @@ sendFailed:
* no unhandled async notification from the backend
*
* the CALLER is responsible for FREE'ing the structure returned
+ *
+ * Note that this function does not read any new data from the socket;
+ * so usually, caller should call PQconsumeInput() first.
*/
PGnotify *
PQnotifies(PGconn *conn)