From d331cc78eae444fa5d2d5af641051ad03f3e8d15 Mon Sep 17 00:00:00 2001 From: Asim R P Date: Tue, 10 Jul 2018 16:19:46 -0700 Subject: [PATCH] Initialize sequence page under buffer content lock Shared buffer access rules mandate that a pin as well as content lock in exclusive mode is needed to update a shared buffer. --- src/backend/commands/sequence.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index a7a3f0bc96..e490e3d8ac 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -383,14 +383,14 @@ fill_seq_with_data(Relation rel, HeapTuple tuple) page = BufferGetPage(buf); + LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); + PageInit(page, BufferGetPageSize(buf), sizeof(sequence_magic)); sm = (sequence_magic *) PageGetSpecialPointer(page); sm->magic = SEQ_MAGIC; /* Now insert sequence tuple */ - LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); - /* * Since VACUUM does not process sequences, we have to force the tuple * to have xmin = FrozenTransactionId now. Otherwise it would become -- GitLab