7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.49 1999/07/19 07:07 :19 momjian Exp $
10
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.50 1999/08/09 01:39 :19 vadim Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -392,17 +392,18 @@ _bt_insertonpg(Relation rel,
392
392
bool is_root = lpageop -> btpo_flags & BTP_ROOT ;
393
393
394
394
/*
395
- * If we have to split leaf page in the chain of duplicates by new
396
- * duplicate then we try to look at our right sibling first .
395
+ * Instead of splitting leaf page in the chain of duplicates
396
+ * by new duplicate, insert it into some right page .
397
397
*/
398
398
if ((lpageop -> btpo_flags & BTP_CHAIN ) &&
399
399
(lpageop -> btpo_flags & BTP_LEAF ) && keys_equal )
400
400
{
401
- bool use_left = true;
402
-
403
401
rbuf = _bt_getbuf (rel , lpageop -> btpo_next , BT_WRITE );
404
402
rpage = BufferGetPage (rbuf );
405
403
rpageop = (BTPageOpaque ) PageGetSpecialPointer (rpage );
404
+ /*
405
+ * some checks
406
+ */
406
407
if (!P_RIGHTMOST (rpageop )) /* non-rightmost page */
407
408
{ /* If we have the same hikey here then
408
409
* it's yet another page in chain. */
@@ -418,32 +419,20 @@ _bt_insertonpg(Relation rel,
418
419
BTGreaterStrategyNumber ))
419
420
elog (FATAL , "btree: hikey is out of order" );
420
421
else if (rpageop -> btpo_flags & BTP_CHAIN )
421
-
422
422
/*
423
423
* If hikey > scankey then it's last page in chain and
424
424
* BTP_CHAIN must be OFF
425
425
*/
426
426
elog (FATAL , "btree: lost last page in the chain of duplicates" );
427
-
428
- /* if there is room here then we use this page. */
429
- if (PageGetFreeSpace (rpage ) > itemsz )
430
- use_left = false;
431
427
}
432
428
else
433
429
/* rightmost page */
434
430
{
435
431
Assert (!(rpageop -> btpo_flags & BTP_CHAIN ));
436
- /* if there is room here then we use this page. */
437
- if (PageGetFreeSpace (rpage ) > itemsz )
438
- use_left = false;
439
- }
440
- if (!use_left ) /* insert on the right page */
441
- {
442
- _bt_relbuf (rel , buf , BT_WRITE );
443
- return (_bt_insertonpg (rel , rbuf , stack , keysz ,
444
- scankey , btitem , afteritem ));
445
432
}
446
- _bt_relbuf (rel , rbuf , BT_WRITE );
433
+ _bt_relbuf (rel , buf , BT_WRITE );
434
+ return (_bt_insertonpg (rel , rbuf , stack , keysz ,
435
+ scankey , btitem , afteritem ));
447
436
}
448
437
449
438
/*
0 commit comments