提交 036bb158 编写于 作者: H Heikki Linnakangas

Fix allocation of RW-conflict pool in the new predicate lock manager, and

also take the RW-conflict pool into account in the PredicateLockShmemSize()
estimate.
上级 3144c33a
......@@ -1119,7 +1119,7 @@ InitPredicateLocks(void)
SHMQueueInit(&RWConflictPool->availableList);
requestSize = mul_size((Size) max_table_size,
PredXactListElementDataSize);
RWConflictDataSize);
RWConflictPool->element = ShmemAlloc(requestSize);
if (RWConflictPool->element == NULL)
ereport(ERROR,
......@@ -1190,11 +1190,17 @@ PredicateLockShmemSize(void)
size = add_size(size, hash_estimate_size(max_table_size,
sizeof(SERIALIZABLEXID)));
/* rw-conflict pool */
max_table_size *= 5;
size = add_size(size, RWConflictPoolHeaderDataSize);
size = add_size(size, mul_size((Size) max_table_size,
RWConflictDataSize));
/* Head for list of finished serializable transactions. */
size = add_size(size, sizeof(SHM_QUEUE));
/* Shared memory structures for SLRU tracking of old committed xids. */
size = add_size(size, sizeof(OldSerXidControl));
size = add_size(size, sizeof(OldSerXidControlData));
size = add_size(size, SimpleLruShmemSize(NUM_OLDSERXID_BUFFERS, 0));
return size;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册