diff options
-rw-r--r-- | src/interfaces/libpq/fe-exec.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index f3443708a6b..f143b8b7fb8 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -1299,10 +1299,6 @@ PQsendQueryInternal(PGconn *conn, const char *query, bool newQuery) if (!PQsendQueryStart(conn, newQuery)) return 0; - entry = pqAllocCmdQueueEntry(conn); - if (entry == NULL) - return 0; /* error msg already set */ - /* check the argument */ if (!query) { @@ -1311,6 +1307,10 @@ PQsendQueryInternal(PGconn *conn, const char *query, bool newQuery) return 0; } + entry = pqAllocCmdQueueEntry(conn); + if (entry == NULL) + return 0; /* error msg already set */ + /* Send the query message(s) */ if (conn->pipelineStatus == PQ_PIPELINE_OFF) { @@ -1320,6 +1320,7 @@ PQsendQueryInternal(PGconn *conn, const char *query, bool newQuery) pqPutMsgEnd(conn) < 0) { /* error message should be set up already */ + pqRecycleCmdQueueEntry(conn, entry); return 0; } |