]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Drop the temporary tuple slots allocated by pgoutput.
authorAmit Kapila <akapila@postgresql.org>
Thu, 27 Jun 2024 05:49:57 +0000 (11:19 +0530)
committerAmit Kapila <akapila@postgresql.org>
Thu, 27 Jun 2024 05:49:57 +0000 (11:19 +0530)
In pgoutput, when converting the child table's tuple format to match the
parent table's, we temporarily create a new slot to store the converted
tuple. However, we missed to drop such temporary slots, leading to
resource leakage.

Reported-by: Bowen Shi
Author: Hou Zhijie
Reviewed-by: Amit Kapila
Backpatch-through: 15
Discussion: https://postgr.es/m/CAM_vCudv8dc3sjWiPkXx5F2b27UV7_YRKRbtSCcE-pv=cVACGA@mail.gmail.com

src/backend/replication/pgoutput/pgoutput.c

index 05688cd41cef662e8f45e2be9348dff93828f03a..c57c5ed8de97f3110d5cccc71ada5598149c86f9 100644 (file)
@@ -1549,6 +1549,16 @@ cleanup:
                ancestor = NULL;
        }
 
+       /* Drop the new slots that were used to store the converted tuples. */
+       if (relentry->attrmap)
+       {
+               if (old_slot)
+                       ExecDropSingleTupleTableSlot(old_slot);
+
+               if (new_slot)
+                       ExecDropSingleTupleTableSlot(new_slot);
+       }
+
        MemoryContextSwitchTo(old);
        MemoryContextReset(data->context);
 }