ssi-full-xid-alloc.patch

text/plain

Filename: ssi-full-xid-alloc.patch
Type: text/plain
Part: 0
Message: Re: SSI patch version 14

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
***************
*** 1018,1024 **** InitPredicateLocks(void)
  	 * PredicateLockShmemSize!
  	 */
  	max_table_size = (MaxBackends + max_prepared_xacts);
- 	init_table_size = max_table_size / 2;
  
  	/*
  	 * Allocate a list to hold information on transactions participating in
--- 1018,1023 ----
***************
*** 1029,1035 **** InitPredicateLocks(void)
  	 * be summarized for storage in SLRU and the "dummy" transaction.
  	 */
  	max_table_size *= 10;
- 	init_table_size *= 10;
  
  	PredXact = ShmemInitStruct("PredXactList",
  							   PredXactListDataSize,
--- 1028,1033 ----
***************
*** 1092,1098 **** InitPredicateLocks(void)
  	hash_flags = (HASH_ELEM | HASH_FUNCTION);
  
  	SerializableXidHash = ShmemInitHash("SERIALIZABLEXID hash",
! 										init_table_size,
  										max_table_size,
  										&info,
  										hash_flags);
--- 1090,1096 ----
  	hash_flags = (HASH_ELEM | HASH_FUNCTION);
  
  	SerializableXidHash = ShmemInitHash("SERIALIZABLEXID hash",
! 										max_table_size,
  										max_table_size,
  										&info,
  										hash_flags);
***************
*** 1595,1604 **** RegisterPredicateLockingXid(const TransactionId xid)
  										   &sxidtag,
  										   HASH_ENTER, &found);
  	if (!sxid)
  		ereport(ERROR,
  				(errcode(ERRCODE_OUT_OF_MEMORY),
! 				 errmsg("out of shared memory"),
! 				 errhint("You might need to increase max_predicate_locks_per_transaction.")));
  
  	Assert(!found);
  
--- 1593,1602 ----
  										   &sxidtag,
  										   HASH_ENTER, &found);
  	if (!sxid)
+ 		/* This should not be possible, based on allocation. */
  		ereport(ERROR,
  				(errcode(ERRCODE_OUT_OF_MEMORY),
! 				 errmsg("out of shared memory")));
  
  	Assert(!found);