I suggest the following change to avoid excessive
allocation. sizeof(ReorderBufferDiskChange) should already be contained in
ondisk->size.

diff --git a/src/backend/replication/logical/reorderbuffer.c 
b/src/backend/replication/logical/reorderbuffer.c
new file mode 100644
index c72a611..84f6e05
*** a/src/backend/replication/logical/reorderbuffer.c
--- b/src/backend/replication/logical/reorderbuffer.c
*************** ReorderBufferRestoreChanges(ReorderBuffe
*** 2366,2373 ****
  
                ondisk = (ReorderBufferDiskChange *) rb->outbuf;
  
!               ReorderBufferSerializeReserve(rb,
!                                                                         
sizeof(ReorderBufferDiskChange) + ondisk->size);
                ondisk = (ReorderBufferDiskChange *) rb->outbuf;
  
                pgstat_report_wait_start(WAIT_EVENT_REORDER_BUFFER_READ);
--- 2366,2372 ----
  
                ondisk = (ReorderBufferDiskChange *) rb->outbuf;
  
!               ReorderBufferSerializeReserve(rb, ondisk->size);
                ondisk = (ReorderBufferDiskChange *) rb->outbuf;
  
                pgstat_report_wait_start(WAIT_EVENT_REORDER_BUFFER_READ);

-- 
Antonin Houska
Cybertec Schönig & Schönig GmbH
Gröhrmühlgasse 26, A-2700 Wiener Neustadt
Web: https://www.cybertec-postgresql.com

Reply via email to