Re: BackendKeyData is mandatory?
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: Jelte Fennema-Nio <postgres@jeltef.nl>,
Jacob Champion <jacob.champion@enterprisedb.com>,
Tatsuo Ishii <ishii@postgresql.org>, peter@eisentraut.org,
pgsql-hackers@postgresql.org, Dave Cramer <davecramer@gmail.com>
Date: 2025-08-08T14:01:05Z
Lists: pgsql-hackers
Heikki Linnakangas <hlinnaka@iki.fi> writes: > I noticed that there's a similar, existing case in getNotify(), where > libpq just hangs if an allocation fails. To simulate that, apply this > change and use LISTEN/NOTIFY: > --- a/src/interfaces/libpq/fe-protocol3.c > +++ b/src/interfaces/libpq/fe-protocol3.c > @@ -1587,7 +1587,7 @@ getNotify(PGconn *conn) > if (pqGets(&conn->workBuffer, conn)) > return EOF; > /* must save name while getting extra string */ > - svname = strdup(conn->workBuffer.data); > + svname = NULL; > if (!svname) > return EOF; > if (pqGets(&conn->workBuffer, conn)) > Returning EOF means "not enough data", which is wrong here just like in > getBackendKeyData(). The implication of "return EOF" is "try again later", which seems like about the best thing we can do. If memory serves, other places that construct query results do likewise. regards, tom lane
Commits
-
Revert unnecessary check for NULL
- 5a26a3e4eeb2 18.0 landed
- 807ee417e562 19 (unreleased) landed
-
libpq: Be strict about cancel key lengths
- e7ff96853ea7 18.0 landed
- e411a8d25a4b 19 (unreleased) landed
-
libpq: Handle OOM by disconnecting instead of hanging or skipping msgs
- 8aa287c9061b 18.0 landed
- f6f0542266f0 19 (unreleased) landed
-
libpq: Complain about missing BackendKeyData later with PGgetCancel()
- 42b1480eb2c6 18.0 landed
- a4801eb691ed 19 (unreleased) landed