Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7d363c4

Browse files
committed
MUST update (in-memory) data page BEFORE XLogInsert to log
NEW page content if WAL will decide to backup page.
1 parentb05b981 commit7d363c4

File tree

2 files changed

+15
-17
lines changed

2 files changed

+15
-17
lines changed

‎src/backend/access/nbtree/nbtinsert.c

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.71 2000/12/28 13:00:07 vadim Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.72 2000/12/29 20:47:16 vadim Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -518,12 +518,17 @@ _bt_insertonpg(Relation rel,
518518
}
519519
else
520520
{
521+
START_CRIT_CODE;
522+
_bt_pgaddtup(rel,page,itemsz,btitem,newitemoff,"page");
523+
itup_off=newitemoff;
524+
itup_blkno=BufferGetBlockNumber(buf);
521525
/* XLOG stuff */
522526
{
523527
xl_btree_insertxlrec;
524528
uint8flag=XLOG_BTREE_INSERT;
525529
XLogRecPtrrecptr;
526530
XLogRecDatardata[2];
531+
BTItemDatatruncitem;
527532

528533
xlrec.target.node=rel->rd_node;
529534
ItemPointerSet(&(xlrec.target.tid),BufferGetBlockNumber(buf),newitemoff);
@@ -535,8 +540,7 @@ _bt_insertonpg(Relation rel,
535540
/* Read comments in _bt_pgaddtup */
536541
if (!(P_ISLEAF(lpageop))&&newitemoff==P_FIRSTDATAKEY(lpageop))
537542
{
538-
BTItemDatatruncitem=*btitem;
539-
543+
truncitem=*btitem;
540544
truncitem.bti_itup.t_info=sizeof(BTItemData);
541545
rdata[1].data= (char*)&truncitem;
542546
rdata[1].len=sizeof(BTItemData);
@@ -559,9 +563,7 @@ _bt_insertonpg(Relation rel,
559563
PageSetSUI(page,ThisStartUpID);
560564
}
561565

562-
_bt_pgaddtup(rel,page,itemsz,btitem,newitemoff,"page");
563-
itup_off=newitemoff;
564-
itup_blkno=BufferGetBlockNumber(buf);
566+
END_CRIT_CODE;
565567
/* Write out the updated page and release pin/lock */
566568
_bt_wrtbuf(rel,buf);
567569
}
@@ -600,7 +602,6 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright,
600602
oopaque;
601603
Buffersbuf=0;
602604
Pagespage=0;
603-
BTPageOpaquesopaque;
604605
Sizeitemsz;
605606
ItemIditemid;
606607
BTItemitem;
@@ -821,6 +822,9 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright,
821822

822823
if (!P_RIGHTMOST(ropaque))
823824
{
825+
BTPageOpaquesopaque= (BTPageOpaque)PageGetSpecialPointer(spage);
826+
sopaque->btpo_prev=BufferGetBlockNumber(rbuf);
827+
824828
rdata[2].next=&(rdata[3]);
825829
rdata[3].buffer=sbuf;
826830
rdata[3].data=NULL;
@@ -856,14 +860,9 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright,
856860

857861
PageRestoreTempPage(leftpage,origpage);
858862

863+
/* write and release the old right sibling */
859864
if (!P_RIGHTMOST(ropaque))
860-
{
861-
sopaque= (BTPageOpaque)PageGetSpecialPointer(spage);
862-
sopaque->btpo_prev=BufferGetBlockNumber(rbuf);
863-
864-
/* write and release the old right sibling */
865865
_bt_wrtbuf(rel,sbuf);
866-
}
867866
END_CRIT_CODE;
868867

869868
/* split's done */

‎src/backend/access/nbtree/nbtpage.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.44 2000/12/28 13:00:07 vadim Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.45 2000/12/29 20:47:17 vadim Exp $
1313
*
1414
*NOTES
1515
* Postgres btree pages look like ordinary relation pages.The opaque
@@ -410,8 +410,9 @@ _bt_pagedel(Relation rel, ItemPointer tid)
410410
buf=_bt_getbuf(rel,blkno,BT_WRITE);
411411
page=BufferGetPage(buf);
412412

413-
/* XLOG stuff */
414413
START_CRIT_CODE;
414+
PageIndexTupleDelete(page,offno);
415+
/* XLOG stuff */
415416
{
416417
xl_btree_deletexlrec;
417418
XLogRecPtrrecptr;
@@ -434,8 +435,6 @@ _bt_pagedel(Relation rel, ItemPointer tid)
434435
PageSetLSN(page,recptr);
435436
PageSetSUI(page,ThisStartUpID);
436437
}
437-
438-
PageIndexTupleDelete(page,offno);
439438
END_CRIT_CODE;
440439

441440
/* write the buffer and release the lock */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp