8
8
* Portions Copyright (c) 1994, Regents of the University of California
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.8 2003/11/29 19:51:40 pgsql Exp $
11
+ * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.9 2003/12/14 00:34:47 neilc Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -69,7 +69,8 @@ forget_matching_split(Relation reln, RelFileNode node,
69
69
btitem = (BTItem ) PageGetItem (page , PageGetItemId (page , offnum ));
70
70
rightblk = ItemPointerGetBlockNumber (& (btitem -> bti_itup .t_tid ));
71
71
Assert (ItemPointerGetOffsetNumber (& (btitem -> bti_itup .t_tid )) == P_HIKEY );
72
- UnlockAndReleaseBuffer (buffer );
72
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
73
+ ReleaseBuffer (buffer );
73
74
74
75
foreach (l , incomplete_splits )
75
76
{
@@ -137,7 +138,8 @@ _bt_restore_meta(Relation reln, XLogRecPtr lsn,
137
138
138
139
PageSetLSN (metapg , lsn );
139
140
PageSetSUI (metapg , ThisStartUpID );
140
- UnlockAndWriteBuffer (metabuf );
141
+ LockBuffer (metabuf , BUFFER_LOCK_UNLOCK );
142
+ WriteBuffer (metabuf );
141
143
}
142
144
143
145
static void
@@ -184,7 +186,10 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
184
186
if (redo )
185
187
{
186
188
if (XLByteLE (lsn , PageGetLSN (page )))
187
- UnlockAndReleaseBuffer (buffer );
189
+ {
190
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
191
+ ReleaseBuffer (buffer );
192
+ }
188
193
else
189
194
{
190
195
if (PageAddItem (page , (Item ) datapos , datalen ,
@@ -194,7 +199,8 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
194
199
195
200
PageSetLSN (page , lsn );
196
201
PageSetSUI (page , ThisStartUpID );
197
- UnlockAndWriteBuffer (buffer );
202
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
203
+ WriteBuffer (buffer );
198
204
}
199
205
}
200
206
else
@@ -203,7 +209,10 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
203
209
elog (PANIC , "btree_insert_undo: bad page LSN" );
204
210
205
211
if (!P_ISLEAF (pageop ))
206
- UnlockAndReleaseBuffer (buffer );
212
+ {
213
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
214
+ ReleaseBuffer (buffer );
215
+ }
207
216
else
208
217
elog (PANIC , "btree_insert_undo: unimplemented" );
209
218
}
@@ -275,7 +284,8 @@ btree_xlog_split(bool redo, bool onleft, bool isroot,
275
284
276
285
PageSetLSN (page , lsn );
277
286
PageSetSUI (page , ThisStartUpID );
278
- UnlockAndWriteBuffer (buffer );
287
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
288
+ WriteBuffer (buffer );
279
289
}
280
290
else
281
291
{
@@ -310,7 +320,8 @@ btree_xlog_split(bool redo, bool onleft, bool isroot,
310
320
311
321
PageSetLSN (page , lsn );
312
322
PageSetSUI (page , ThisStartUpID );
313
- UnlockAndWriteBuffer (buffer );
323
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
324
+ WriteBuffer (buffer );
314
325
}
315
326
else
316
327
{
@@ -334,15 +345,19 @@ btree_xlog_split(bool redo, bool onleft, bool isroot,
334
345
elog (PANIC , "btree_split_redo: uninitialized next right page" );
335
346
336
347
if (XLByteLE (lsn , PageGetLSN (page )))
337
- UnlockAndReleaseBuffer (buffer );
348
+ {
349
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
350
+ ReleaseBuffer (buffer );
351
+ }
338
352
else
339
353
{
340
354
pageop = (BTPageOpaque ) PageGetSpecialPointer (page );
341
355
pageop -> btpo_prev = rightsib ;
342
356
343
357
PageSetLSN (page , lsn );
344
358
PageSetSUI (page , ThisStartUpID );
345
- UnlockAndWriteBuffer (buffer );
359
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
360
+ WriteBuffer (buffer );
346
361
}
347
362
}
348
363
}
@@ -385,7 +400,8 @@ btree_xlog_delete(bool redo, XLogRecPtr lsn, XLogRecord *record)
385
400
386
401
if (XLByteLE (lsn , PageGetLSN (page )))
387
402
{
388
- UnlockAndReleaseBuffer (buffer );
403
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
404
+ ReleaseBuffer (buffer );
389
405
return ;
390
406
}
391
407
@@ -407,7 +423,8 @@ btree_xlog_delete(bool redo, XLogRecPtr lsn, XLogRecord *record)
407
423
408
424
PageSetLSN (page , lsn );
409
425
PageSetSUI (page , ThisStartUpID );
410
- UnlockAndWriteBuffer (buffer );
426
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
427
+ WriteBuffer (buffer );
411
428
}
412
429
413
430
static void
@@ -445,7 +462,10 @@ btree_xlog_delete_page(bool redo, bool ismeta,
445
462
if (PageIsNew ((PageHeader ) page ))
446
463
elog (PANIC , "btree_delete_page_redo: uninitialized parent page" );
447
464
if (XLByteLE (lsn , PageGetLSN (page )))
448
- UnlockAndReleaseBuffer (buffer );
465
+ {
466
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
467
+ ReleaseBuffer (buffer );
468
+ }
449
469
else
450
470
{
451
471
OffsetNumber poffset ;
@@ -472,7 +492,8 @@ btree_xlog_delete_page(bool redo, bool ismeta,
472
492
473
493
PageSetLSN (page , lsn );
474
494
PageSetSUI (page , ThisStartUpID );
475
- UnlockAndWriteBuffer (buffer );
495
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
496
+ WriteBuffer (buffer );
476
497
}
477
498
}
478
499
@@ -486,15 +507,19 @@ btree_xlog_delete_page(bool redo, bool ismeta,
486
507
if (PageIsNew ((PageHeader ) page ))
487
508
elog (PANIC , "btree_delete_page_redo: uninitialized right sibling" );
488
509
if (XLByteLE (lsn , PageGetLSN (page )))
489
- UnlockAndReleaseBuffer (buffer );
510
+ {
511
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
512
+ ReleaseBuffer (buffer );
513
+ }
490
514
else
491
515
{
492
516
pageop = (BTPageOpaque ) PageGetSpecialPointer (page );
493
517
pageop -> btpo_prev = leftsib ;
494
518
495
519
PageSetLSN (page , lsn );
496
520
PageSetSUI (page , ThisStartUpID );
497
- UnlockAndWriteBuffer (buffer );
521
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
522
+ WriteBuffer (buffer );
498
523
}
499
524
}
500
525
@@ -510,15 +535,19 @@ btree_xlog_delete_page(bool redo, bool ismeta,
510
535
if (PageIsNew ((PageHeader ) page ))
511
536
elog (PANIC , "btree_delete_page_redo: uninitialized left sibling" );
512
537
if (XLByteLE (lsn , PageGetLSN (page )))
513
- UnlockAndReleaseBuffer (buffer );
538
+ {
539
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
540
+ ReleaseBuffer (buffer );
541
+ }
514
542
else
515
543
{
516
544
pageop = (BTPageOpaque ) PageGetSpecialPointer (page );
517
545
pageop -> btpo_next = rightsib ;
518
546
519
547
PageSetLSN (page , lsn );
520
548
PageSetSUI (page , ThisStartUpID );
521
- UnlockAndWriteBuffer (buffer );
549
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
550
+ WriteBuffer (buffer );
522
551
}
523
552
}
524
553
}
@@ -543,7 +572,8 @@ btree_xlog_delete_page(bool redo, bool ismeta,
543
572
544
573
PageSetLSN (page , lsn );
545
574
PageSetSUI (page , ThisStartUpID );
546
- UnlockAndWriteBuffer (buffer );
575
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
576
+ WriteBuffer (buffer );
547
577
}
548
578
else
549
579
{
@@ -606,7 +636,8 @@ btree_xlog_newroot(bool redo, XLogRecPtr lsn, XLogRecord *record)
606
636
607
637
PageSetLSN (page , lsn );
608
638
PageSetSUI (page , ThisStartUpID );
609
- UnlockAndWriteBuffer (buffer );
639
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
640
+ WriteBuffer (buffer );
610
641
611
642
_bt_restore_meta (reln , lsn ,
612
643
xlrec -> rootblk , xlrec -> level ,
@@ -668,7 +699,8 @@ btree_xlog_newpage(bool redo, XLogRecPtr lsn, XLogRecord *record)
668
699
669
700
PageSetLSN (page , lsn );
670
701
PageSetSUI (page , ThisStartUpID );
671
- UnlockAndWriteBuffer (buffer );
702
+ LockBuffer (buffer , BUFFER_LOCK_UNLOCK );
703
+ WriteBuffer (buffer );
672
704
}
673
705
674
706
0 commit comments