*** 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);