I was looking at the code in EndCommand() and noticed a comment talking about some Asserts which didn't seem to exist in the code. The comment also talks about LastOid which looks like the name of a variable that's nowhere to be seen.
It looks like the Asserts did exists when the completion tag patch was being developed [1] but they disappeared somewhere along the line and the comment didn't get an update before 2f9661311 went in. In the attached, I rewrote the comment to remove mention of the Asserts. I also tried to form the comment in a way that's more understandable about why we always write a "0" in "INSERT 0 <nrows>". David [1] https://www.postgresql.org/message-id/1c642743-8e46-4246-b4a0-c9a638b3e...@enterprisedb.com
diff --git a/src/backend/tcop/dest.c b/src/backend/tcop/dest.c index c952cbea8b..e6934d7b66 100644 --- a/src/backend/tcop/dest.c +++ b/src/backend/tcop/dest.c @@ -179,12 +179,11 @@ EndCommand(const QueryCompletion *qc, CommandDest dest, bool force_undecorated_o * We assume the tagname is plain ASCII and therefore requires no * encoding conversion. * - * We no longer display LastOid, but to preserve the wire - * protocol, we write InvalidOid where the LastOid used to be - * written. - * - * All cases where LastOid was written also write nprocessed - * count, so just Assert that rather than having an extra test. + * In ancient versions of PostgreSQL, INSERT used to include the + * Oid of the inserted record in the completion tag. We no longer + * support tables with Oids, so to maintain compatibility in the + * wire protocol, we write a "0" for InvalidOid in the location + * where we once wrote the inserted record's Oid. */ tag = qc->commandTag; tagname = GetCommandTagName(tag);