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

Commit3df92bb

Browse files
Rename nbtree split REDO routine variables.
Make the nbtree page split REDO routine variable names consistent with_bt_split() (which handles the original execution of page splits).These names make the code easier to follow by making the distinctionbetween the original page and the left half of the split clear. (Theleft half of the split page is a temp page that REDO creates to replacethe origpage contents.)Also reduce the elevel used when adding a new high key to the temp pagefrom PANIC to ERROR to be consistent. We already only raise an ERRORwhen data item PageAddItem() temp page calls fail.
1 parent199cec9 commit3df92bb

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

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

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -256,20 +256,20 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
256256
XLogRecPtrlsn=record->EndRecPtr;
257257
xl_btree_split*xlrec= (xl_btree_split*)XLogRecGetData(record);
258258
boolisleaf= (xlrec->level==0);
259-
Bufferlbuf;
259+
Bufferbuf;
260260
Bufferrbuf;
261261
Pagerpage;
262262
BTPageOpaqueropaque;
263263
char*datapos;
264264
Sizedatalen;
265-
BlockNumberleftsib;
266-
BlockNumberrightsib;
267-
BlockNumberrnext;
265+
BlockNumberorigpagenumber;
266+
BlockNumberrightpagenumber;
267+
BlockNumberspagenumber;
268268

269-
XLogRecGetBlockTag(record,0,NULL,NULL,&leftsib);
270-
XLogRecGetBlockTag(record,1,NULL,NULL,&rightsib);
271-
if (!XLogRecGetBlockTag(record,2,NULL,NULL,&rnext))
272-
rnext=P_NONE;
269+
XLogRecGetBlockTag(record,0,NULL,NULL,&origpagenumber);
270+
XLogRecGetBlockTag(record,1,NULL,NULL,&rightpagenumber);
271+
if (!XLogRecGetBlockTag(record,2,NULL,NULL,&spagenumber))
272+
spagenumber=P_NONE;
273273

274274
/*
275275
* Clear the incomplete split flag on the left sibling of the child page
@@ -287,8 +287,8 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
287287
_bt_pageinit(rpage,BufferGetPageSize(rbuf));
288288
ropaque= (BTPageOpaque)PageGetSpecialPointer(rpage);
289289

290-
ropaque->btpo_prev=leftsib;
291-
ropaque->btpo_next=rnext;
290+
ropaque->btpo_prev=origpagenumber;
291+
ropaque->btpo_next=spagenumber;
292292
ropaque->btpo.level=xlrec->level;
293293
ropaque->btpo_flags=isleaf ?BTP_LEAF :0;
294294
ropaque->btpo_cycleid=0;
@@ -298,8 +298,8 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
298298
PageSetLSN(rpage,lsn);
299299
MarkBufferDirty(rbuf);
300300

301-
/* Now reconstructleft (original) sibling page */
302-
if (XLogReadBufferForRedo(record,0,&lbuf)==BLK_NEEDS_REDO)
301+
/* Now reconstructoriginal page (left half of split) */
302+
if (XLogReadBufferForRedo(record,0,&buf)==BLK_NEEDS_REDO)
303303
{
304304
/*
305305
* To retain the same physical order of the tuples that they had, we
@@ -309,15 +309,15 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
309309
* checking possible. See also _bt_restore_page(), which does the
310310
* same for the right page.
311311
*/
312-
Pagelpage= (Page)BufferGetPage(lbuf);
313-
BTPageOpaquelopaque= (BTPageOpaque)PageGetSpecialPointer(lpage);
312+
Pageorigpage= (Page)BufferGetPage(buf);
313+
BTPageOpaqueoopaque= (BTPageOpaque)PageGetSpecialPointer(origpage);
314314
OffsetNumberoff;
315315
IndexTuplenewitem=NULL,
316316
left_hikey=NULL,
317317
nposting=NULL;
318318
Sizenewitemsz=0,
319319
left_hikeysz=0;
320-
Pagenewlpage;
320+
Pageleftpage;
321321
OffsetNumberleftoff,
322322
replacepostingoff=InvalidOffsetNumber;
323323

@@ -340,8 +340,8 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
340340

341341
/* Use mutable, aligned newitem copy in _bt_swap_posting() */
342342
newitem=CopyIndexTuple(newitem);
343-
itemid=PageGetItemId(lpage,replacepostingoff);
344-
oposting= (IndexTuple)PageGetItem(lpage,itemid);
343+
itemid=PageGetItemId(origpage,replacepostingoff);
344+
oposting= (IndexTuple)PageGetItem(origpage,itemid);
345345
nposting=_bt_swap_posting(newitem,oposting,
346346
xlrec->postingoff);
347347
}
@@ -359,16 +359,16 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
359359

360360
Assert(datalen==0);
361361

362-
newlpage=PageGetTempPageCopySpecial(lpage);
362+
leftpage=PageGetTempPageCopySpecial(origpage);
363363

364-
/*Set high key */
364+
/*Add high key tuple from WAL record to temp page */
365365
leftoff=P_HIKEY;
366-
if (PageAddItem(newlpage, (Item)left_hikey,left_hikeysz,
367-
P_HIKEY,false, false)==InvalidOffsetNumber)
368-
elog(PANIC,"failed to add high key to left page after split");
366+
if (PageAddItem(leftpage, (Item)left_hikey,left_hikeysz,P_HIKEY,
367+
false, false)==InvalidOffsetNumber)
368+
elog(ERROR,"failed to add high key to left page after split");
369369
leftoff=OffsetNumberNext(leftoff);
370370

371-
for (off=P_FIRSTDATAKEY(lopaque);off<xlrec->firstrightoff;off++)
371+
for (off=P_FIRSTDATAKEY(oopaque);off<xlrec->firstrightoff;off++)
372372
{
373373
ItemIditemid;
374374
Sizeitemsz;
@@ -379,7 +379,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
379379
{
380380
Assert(newitemonleft||
381381
xlrec->firstrightoff==xlrec->newitemoff);
382-
if (PageAddItem(newlpage, (Item)nposting,
382+
if (PageAddItem(leftpage, (Item)nposting,
383383
MAXALIGN(IndexTupleSize(nposting)),leftoff,
384384
false, false)==InvalidOffsetNumber)
385385
elog(ERROR,"failed to add new posting list item to left page after split");
@@ -390,16 +390,16 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
390390
/* add the new item if it was inserted on left page */
391391
elseif (newitemonleft&&off==xlrec->newitemoff)
392392
{
393-
if (PageAddItem(newlpage, (Item)newitem,newitemsz,leftoff,
393+
if (PageAddItem(leftpage, (Item)newitem,newitemsz,leftoff,
394394
false, false)==InvalidOffsetNumber)
395395
elog(ERROR,"failed to add new item to left page after split");
396396
leftoff=OffsetNumberNext(leftoff);
397397
}
398398

399-
itemid=PageGetItemId(lpage,off);
399+
itemid=PageGetItemId(origpage,off);
400400
itemsz=ItemIdGetLength(itemid);
401-
item= (IndexTuple)PageGetItem(lpage,itemid);
402-
if (PageAddItem(newlpage, (Item)item,itemsz,leftoff,
401+
item= (IndexTuple)PageGetItem(origpage,itemid);
402+
if (PageAddItem(leftpage, (Item)item,itemsz,leftoff,
403403
false, false)==InvalidOffsetNumber)
404404
elog(ERROR,"failed to add old item to left page after split");
405405
leftoff=OffsetNumberNext(leftoff);
@@ -408,31 +408,31 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
408408
/* cope with possibility that newitem goes at the end */
409409
if (newitemonleft&&off==xlrec->newitemoff)
410410
{
411-
if (PageAddItem(newlpage, (Item)newitem,newitemsz,leftoff,
411+
if (PageAddItem(leftpage, (Item)newitem,newitemsz,leftoff,
412412
false, false)==InvalidOffsetNumber)
413413
elog(ERROR,"failed to add new item to left page after split");
414414
leftoff=OffsetNumberNext(leftoff);
415415
}
416416

417-
PageRestoreTempPage(newlpage,lpage);
417+
PageRestoreTempPage(leftpage,origpage);
418418

419419
/* Fix opaque fields */
420-
lopaque->btpo_flags=BTP_INCOMPLETE_SPLIT;
420+
oopaque->btpo_flags=BTP_INCOMPLETE_SPLIT;
421421
if (isleaf)
422-
lopaque->btpo_flags |=BTP_LEAF;
423-
lopaque->btpo_next=rightsib;
424-
lopaque->btpo_cycleid=0;
422+
oopaque->btpo_flags |=BTP_LEAF;
423+
oopaque->btpo_next=rightpagenumber;
424+
oopaque->btpo_cycleid=0;
425425

426-
PageSetLSN(lpage,lsn);
427-
MarkBufferDirty(lbuf);
426+
PageSetLSN(origpage,lsn);
427+
MarkBufferDirty(buf);
428428
}
429429

430430
/*
431431
* We no longer need the buffers. They must be released together, so that
432432
* readers cannot observe two inconsistent halves.
433433
*/
434-
if (BufferIsValid(lbuf))
435-
UnlockReleaseBuffer(lbuf);
434+
if (BufferIsValid(buf))
435+
UnlockReleaseBuffer(buf);
436436
UnlockReleaseBuffer(rbuf);
437437

438438
/*
@@ -443,22 +443,22 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
443443
* replay, because no other index update can be in progress, and readers
444444
* will cope properly when following an obsolete left-link.
445445
*/
446-
if (rnext!=P_NONE)
446+
if (spagenumber!=P_NONE)
447447
{
448-
Bufferbuffer;
448+
Buffersbuf;
449449

450-
if (XLogReadBufferForRedo(record,2,&buffer)==BLK_NEEDS_REDO)
450+
if (XLogReadBufferForRedo(record,2,&sbuf)==BLK_NEEDS_REDO)
451451
{
452-
Pagepage= (Page)BufferGetPage(buffer);
453-
BTPageOpaquepageop= (BTPageOpaque)PageGetSpecialPointer(page);
452+
Pagespage= (Page)BufferGetPage(sbuf);
453+
BTPageOpaquespageop= (BTPageOpaque)PageGetSpecialPointer(spage);
454454

455-
pageop->btpo_prev=rightsib;
455+
spageop->btpo_prev=rightpagenumber;
456456

457-
PageSetLSN(page,lsn);
458-
MarkBufferDirty(buffer);
457+
PageSetLSN(spage,lsn);
458+
MarkBufferDirty(sbuf);
459459
}
460-
if (BufferIsValid(buffer))
461-
UnlockReleaseBuffer(buffer);
460+
if (BufferIsValid(sbuf))
461+
UnlockReleaseBuffer(sbuf);
462462
}
463463
}
464464

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp