@@ -256,20 +256,20 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
256
256
XLogRecPtr lsn = record -> EndRecPtr ;
257
257
xl_btree_split * xlrec = (xl_btree_split * ) XLogRecGetData (record );
258
258
bool isleaf = (xlrec -> level == 0 );
259
- Buffer lbuf ;
259
+ Buffer buf ;
260
260
Buffer rbuf ;
261
261
Page rpage ;
262
262
BTPageOpaque ropaque ;
263
263
char * datapos ;
264
264
Size datalen ;
265
- BlockNumber leftsib ;
266
- BlockNumber rightsib ;
267
- BlockNumber rnext ;
265
+ BlockNumber origpagenumber ;
266
+ BlockNumber rightpagenumber ;
267
+ BlockNumber spagenumber ;
268
268
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 ;
273
273
274
274
/*
275
275
* Clear the incomplete split flag on the left sibling of the child page
@@ -287,8 +287,8 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
287
287
_bt_pageinit (rpage , BufferGetPageSize (rbuf ));
288
288
ropaque = (BTPageOpaque ) PageGetSpecialPointer (rpage );
289
289
290
- ropaque -> btpo_prev = leftsib ;
291
- ropaque -> btpo_next = rnext ;
290
+ ropaque -> btpo_prev = origpagenumber ;
291
+ ropaque -> btpo_next = spagenumber ;
292
292
ropaque -> btpo .level = xlrec -> level ;
293
293
ropaque -> btpo_flags = isleaf ? BTP_LEAF : 0 ;
294
294
ropaque -> btpo_cycleid = 0 ;
@@ -298,8 +298,8 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
298
298
PageSetLSN (rpage , lsn );
299
299
MarkBufferDirty (rbuf );
300
300
301
- /* Now reconstruct left (original) sibling page */
302
- if (XLogReadBufferForRedo (record , 0 , & lbuf ) == BLK_NEEDS_REDO )
301
+ /* Now reconstruct original page (left half of split) */
302
+ if (XLogReadBufferForRedo (record , 0 , & buf ) == BLK_NEEDS_REDO )
303
303
{
304
304
/*
305
305
* To retain the same physical order of the tuples that they had, we
@@ -309,15 +309,15 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
309
309
* checking possible. See also _bt_restore_page(), which does the
310
310
* same for the right page.
311
311
*/
312
- Page lpage = (Page ) BufferGetPage (lbuf );
313
- BTPageOpaque lopaque = (BTPageOpaque ) PageGetSpecialPointer (lpage );
312
+ Page origpage = (Page ) BufferGetPage (buf );
313
+ BTPageOpaque oopaque = (BTPageOpaque ) PageGetSpecialPointer (origpage );
314
314
OffsetNumber off ;
315
315
IndexTuple newitem = NULL ,
316
316
left_hikey = NULL ,
317
317
nposting = NULL ;
318
318
Size newitemsz = 0 ,
319
319
left_hikeysz = 0 ;
320
- Page newlpage ;
320
+ Page leftpage ;
321
321
OffsetNumber leftoff ,
322
322
replacepostingoff = InvalidOffsetNumber ;
323
323
@@ -340,8 +340,8 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
340
340
341
341
/* Use mutable, aligned newitem copy in _bt_swap_posting() */
342
342
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 );
345
345
nposting = _bt_swap_posting (newitem , oposting ,
346
346
xlrec -> postingoff );
347
347
}
@@ -359,16 +359,16 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
359
359
360
360
Assert (datalen == 0 );
361
361
362
- newlpage = PageGetTempPageCopySpecial (lpage );
362
+ leftpage = PageGetTempPageCopySpecial (origpage );
363
363
364
- /* Set high key */
364
+ /* Add high key tuple from WAL record to temp page */
365
365
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" );
369
369
leftoff = OffsetNumberNext (leftoff );
370
370
371
- for (off = P_FIRSTDATAKEY (lopaque ); off < xlrec -> firstrightoff ; off ++ )
371
+ for (off = P_FIRSTDATAKEY (oopaque ); off < xlrec -> firstrightoff ; off ++ )
372
372
{
373
373
ItemId itemid ;
374
374
Size itemsz ;
@@ -379,7 +379,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
379
379
{
380
380
Assert (newitemonleft ||
381
381
xlrec -> firstrightoff == xlrec -> newitemoff );
382
- if (PageAddItem (newlpage , (Item ) nposting ,
382
+ if (PageAddItem (leftpage , (Item ) nposting ,
383
383
MAXALIGN (IndexTupleSize (nposting )), leftoff ,
384
384
false, false) == InvalidOffsetNumber )
385
385
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)
390
390
/* add the new item if it was inserted on left page */
391
391
else if (newitemonleft && off == xlrec -> newitemoff )
392
392
{
393
- if (PageAddItem (newlpage , (Item ) newitem , newitemsz , leftoff ,
393
+ if (PageAddItem (leftpage , (Item ) newitem , newitemsz , leftoff ,
394
394
false, false) == InvalidOffsetNumber )
395
395
elog (ERROR , "failed to add new item to left page after split" );
396
396
leftoff = OffsetNumberNext (leftoff );
397
397
}
398
398
399
- itemid = PageGetItemId (lpage , off );
399
+ itemid = PageGetItemId (origpage , off );
400
400
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 ,
403
403
false, false) == InvalidOffsetNumber )
404
404
elog (ERROR , "failed to add old item to left page after split" );
405
405
leftoff = OffsetNumberNext (leftoff );
@@ -408,31 +408,31 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
408
408
/* cope with possibility that newitem goes at the end */
409
409
if (newitemonleft && off == xlrec -> newitemoff )
410
410
{
411
- if (PageAddItem (newlpage , (Item ) newitem , newitemsz , leftoff ,
411
+ if (PageAddItem (leftpage , (Item ) newitem , newitemsz , leftoff ,
412
412
false, false) == InvalidOffsetNumber )
413
413
elog (ERROR , "failed to add new item to left page after split" );
414
414
leftoff = OffsetNumberNext (leftoff );
415
415
}
416
416
417
- PageRestoreTempPage (newlpage , lpage );
417
+ PageRestoreTempPage (leftpage , origpage );
418
418
419
419
/* Fix opaque fields */
420
- lopaque -> btpo_flags = BTP_INCOMPLETE_SPLIT ;
420
+ oopaque -> btpo_flags = BTP_INCOMPLETE_SPLIT ;
421
421
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 ;
425
425
426
- PageSetLSN (lpage , lsn );
427
- MarkBufferDirty (lbuf );
426
+ PageSetLSN (origpage , lsn );
427
+ MarkBufferDirty (buf );
428
428
}
429
429
430
430
/*
431
431
* We no longer need the buffers. They must be released together, so that
432
432
* readers cannot observe two inconsistent halves.
433
433
*/
434
- if (BufferIsValid (lbuf ))
435
- UnlockReleaseBuffer (lbuf );
434
+ if (BufferIsValid (buf ))
435
+ UnlockReleaseBuffer (buf );
436
436
UnlockReleaseBuffer (rbuf );
437
437
438
438
/*
@@ -443,22 +443,22 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
443
443
* replay, because no other index update can be in progress, and readers
444
444
* will cope properly when following an obsolete left-link.
445
445
*/
446
- if (rnext != P_NONE )
446
+ if (spagenumber != P_NONE )
447
447
{
448
- Buffer buffer ;
448
+ Buffer sbuf ;
449
449
450
- if (XLogReadBufferForRedo (record , 2 , & buffer ) == BLK_NEEDS_REDO )
450
+ if (XLogReadBufferForRedo (record , 2 , & sbuf ) == BLK_NEEDS_REDO )
451
451
{
452
- Page page = (Page ) BufferGetPage (buffer );
453
- BTPageOpaque pageop = (BTPageOpaque ) PageGetSpecialPointer (page );
452
+ Page spage = (Page ) BufferGetPage (sbuf );
453
+ BTPageOpaque spageop = (BTPageOpaque ) PageGetSpecialPointer (spage );
454
454
455
- pageop -> btpo_prev = rightsib ;
455
+ spageop -> btpo_prev = rightpagenumber ;
456
456
457
- PageSetLSN (page , lsn );
458
- MarkBufferDirty (buffer );
457
+ PageSetLSN (spage , lsn );
458
+ MarkBufferDirty (sbuf );
459
459
}
460
- if (BufferIsValid (buffer ))
461
- UnlockReleaseBuffer (buffer );
460
+ if (BufferIsValid (sbuf ))
461
+ UnlockReleaseBuffer (sbuf );
462
462
}
463
463
}
464
464
0 commit comments