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/[email protected]
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);