RE: [BUG] Assert failure in ReorderBufferReturnTXN during logical decoding due to leaked specinsert change

Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>

From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Vishal Prasanna' <vishal.g@zohocorp.com>
Cc: "'Álvaro Herrera'" <alvherre@kurilemu.de>, pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Date: 2026-03-09T04:52:56Z
Lists: pgsql-bugs
Dear Vishal,

Thanks for updating the patch. They look good to me except one minor point.

```
@@ -2663,6 +2655,13 @@ ReorderBufferProcessTXN(ReorderBuffer *rb, ReorderBufferTXN *txn,
 		if (using_subtxn)
 			RollbackAndReleaseCurrentSubTransaction();
 
+		/* Free the specinsert change before freeing the ReorderBufferTXN */
+		if (specinsert != NULL)
+		{
+			ReorderBufferReturnChange(rb, specinsert, true);
+			specinsert = NULL;
+		}
```

In PG17-, we seem to use the term "return" to deallocate the change. Should we follow that?
I have no strong opinion for it.

I have no comments anymore. I registered your patch in commitfest [1]: and marked as
"Ready for Committer" not to forget. If needed you can register your name as author.

[1]: https://commitfest.postgresql.org/patch/6569/

Best regards,
Hayato Kuroda
FUJITSU LIMITED

Commits

  1. logical decoding: Correctly free speculative insertion

  2. Fix memory counter update in ReorderBuffer.