From: Robert Haas Date: Wed, 22 Sep 2021 20:06:15 +0000 (-0400) Subject: try to fix some sketchy logic for setting can_allocate_segment X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=ebeab503af1fc8699e73938287e4a4c52231a4a4;p=users%2Frhaas%2Fpostgres.git try to fix some sketchy logic for setting can_allocate_segment --- diff --git a/src/backend/access/conveyor/conveyor.c b/src/backend/access/conveyor/conveyor.c index b96b6c1fa5..7cdaf12b3e 100644 --- a/src/backend/access/conveyor/conveyor.c +++ b/src/backend/access/conveyor/conveyor.c @@ -269,8 +269,8 @@ ConveyorBeltGetNewPage(ConveyorBelt *cb, CBPageNo *pageno) * size of the relation on disk is large enough. */ can_allocate_segment = - (insert_state != CBM_INSERT_NEEDS_PAYLOAD_SEGMENT - || insert_state != CBM_INSERT_NEEDS_INDEX_SEGMENT) && + (insert_state == CBM_INSERT_NEEDS_PAYLOAD_SEGMENT + || insert_state == CBM_INSERT_NEEDS_INDEX_SEGMENT) && mode == BUFFER_LOCK_EXCLUSIVE && (free_segno != CB_INVALID_SEGMENT) && (free_segno < next_segno || @@ -282,9 +282,8 @@ ConveyorBeltGetNewPage(ConveyorBelt *cb, CBPageNo *pageno) * locks. */ if (can_allocate_segment && - insert_state != CBM_INSERT_NEEDS_INDEX_SEGMENT && - !BufferIsValid(indexbuffer) && - !BufferIsValid(prevbuffer)) + insert_state == CBM_INSERT_NEEDS_INDEX_SEGMENT && + (!BufferIsValid(indexbuffer) || !BufferIsValid(prevbuffer))) can_allocate_segment = false; /*