ssi-old-tuple-locks.patch

text/plain

Filename: ssi-old-tuple-locks.patch
Type: text/plain
Part: 0
Message: Re: SSI bug?

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: context
File+
src/backend/storage/lmgr/predicate.c 3 0
*** a/src/backend/storage/lmgr/predicate.c
--- b/src/backend/storage/lmgr/predicate.c
***************
*** 1755,1763 **** CoarserLockCovers(const PREDICATELOCKTARGETTAG *newtargettag)
  }
  
  /*
!  * Check whether both the list of related predicate locks and the pointer to
!  * a prior version of the row (if this is a tuple lock target) are empty for
!  * a predicate lock target, and remove the target if they are.
   */
  static void
  RemoveTargetIfNoLongerUsed(PREDICATELOCKTARGET *target, uint32 targettaghash)
--- 1755,1762 ----
  }
  
  /*
!  * Check whether the list of related predicate locks is empty for a
!  * predicate lock target, and remove the target if it is.
   */
  static void
  RemoveTargetIfNoLongerUsed(PREDICATELOCKTARGET *target, uint32 targettaghash)
***************
*** 3120,3130 **** ClearOldPredicateLocks(void)
  	/*
  	 * Loop through predicate locks on dummy transaction for summarized data.
  	 */
  	predlock = (PREDICATELOCK *)
  		SHMQueueNext(&OldCommittedSxact->predicateLocks,
  					 &OldCommittedSxact->predicateLocks,
  					 offsetof(PREDICATELOCK, xactLink));
- 	LWLockAcquire(SerializablePredicateLockListLock, LW_SHARED);
  	while (predlock)
  	{
  		PREDICATELOCK *nextpredlock;
--- 3119,3129 ----
  	/*
  	 * Loop through predicate locks on dummy transaction for summarized data.
  	 */
+ 	LWLockAcquire(SerializablePredicateLockListLock, LW_SHARED);
  	predlock = (PREDICATELOCK *)
  		SHMQueueNext(&OldCommittedSxact->predicateLocks,
  					 &OldCommittedSxact->predicateLocks,
  					 offsetof(PREDICATELOCK, xactLink));
  	while (predlock)
  	{
  		PREDICATELOCK *nextpredlock;