Have to lock buffer while changing page' LSN.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Wed, 4 Apr 2001 15:43:25 +0000 (15:43 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Wed, 4 Apr 2001 15:43:25 +0000 (15:43 +0000)
Thanks to Tom.

src/backend/commands/sequence.c

index 6c7c7a7a3b2878a97c6b0b246d98781300d71ab8..a89ba2e5fd3d69824473b620fc3ef9303f886704 100644 (file)
@@ -181,13 +181,13 @@ DefineSequence(CreateSeqStmt *seq)
        /* Now - form & insert sequence tuple */
        tuple = heap_formtuple(tupDesc, value, null);
        heap_insert(rel, tuple);
-       ReleaseBuffer(buf);
 
        /*
         * After crash REDO of heap_insert above would re-init page and
         * our magic number would be lost. We have to log sequence creation.
         * This means two log records instead of one -:(
         */
+       LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
        START_CRIT_SECTION();
        {
                xl_seq_rec                      xlrec;
@@ -217,6 +217,8 @@ DefineSequence(CreateSeqStmt *seq)
        }
        END_CRIT_SECTION();
 
+       LockBuffer(buf, BUFFER_LOCK_UNLOCK);
+       ReleaseBuffer(buf);
        heap_close(rel, AccessExclusiveLock);
 }