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

Commit60cbd77

Browse files
Remove nbtree BTreeTupleSetAltHeapTID() function.
Since heap TID is supposed to be just another key attribute to theimplementation, it doesn't make much sense to have separateBTreeTupleSetNAtts() and BTreeTupleSetAltHeapTID() functions. Merge thetwo functions together. This slightly simplifies _bt_truncate().
1 parentc655077 commit60cbd77

File tree

4 files changed

+26
-28
lines changed

4 files changed

+26
-28
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2413,7 +2413,7 @@ _bt_newroot(Relation rel, Buffer lbuf, Buffer rbuf)
24132413
left_item= (IndexTuple)palloc(left_item_sz);
24142414
left_item->t_info=left_item_sz;
24152415
BTreeTupleSetDownLink(left_item,lbkno);
2416-
BTreeTupleSetNAtts(left_item,0);
2416+
BTreeTupleSetNAtts(left_item,0, false);
24172417

24182418
/*
24192419
* Create downlink item for right page. The key for it is obtained from
@@ -2571,7 +2571,7 @@ _bt_pgaddtup(Page page,
25712571
{
25722572
trunctuple=*itup;
25732573
trunctuple.t_info=sizeof(IndexTupleData);
2574-
BTreeTupleSetNAtts(&trunctuple,0);
2574+
BTreeTupleSetNAtts(&trunctuple,0, false);
25752575
itup=&trunctuple;
25762576
itemsize=sizeof(IndexTupleData);
25772577
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ _bt_sortaddtup(Page page,
771771
{
772772
trunctuple=*itup;
773773
trunctuple.t_info=sizeof(IndexTupleData);
774-
BTreeTupleSetNAtts(&trunctuple,0);
774+
BTreeTupleSetNAtts(&trunctuple,0, false);
775775
itup=&trunctuple;
776776
itemsize=sizeof(IndexTupleData);
777777
}
@@ -1045,7 +1045,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
10451045
Assert(state->btps_lowkey==NULL);
10461046
state->btps_lowkey=palloc0(sizeof(IndexTupleData));
10471047
state->btps_lowkey->t_info=sizeof(IndexTupleData);
1048-
BTreeTupleSetNAtts(state->btps_lowkey,0);
1048+
BTreeTupleSetNAtts(state->btps_lowkey,0, false);
10491049
}
10501050

10511051
/*

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2239,7 +2239,7 @@ _bt_truncate(Relation rel, IndexTuple lastleft, IndexTuple firstright,
22392239
*/
22402240
if (keepnatts <=nkeyatts)
22412241
{
2242-
BTreeTupleSetNAtts(pivot,keepnatts);
2242+
BTreeTupleSetNAtts(pivot,keepnatts, false);
22432243
returnpivot;
22442244
}
22452245

@@ -2262,11 +2262,13 @@ _bt_truncate(Relation rel, IndexTuple lastleft, IndexTuple firstright,
22622262
/* Cannot leak memory here */
22632263
pfree(pivot);
22642264

2265-
/* Store heap TID in enlarged pivot tuple */
2265+
/*
2266+
* Store all of firstright's key attribute values plus a tiebreaker heap
2267+
* TID value in enlarged pivot tuple
2268+
*/
22662269
tidpivot->t_info &= ~INDEX_SIZE_MASK;
22672270
tidpivot->t_info |=newsize;
2268-
BTreeTupleSetNAtts(tidpivot,nkeyatts);
2269-
BTreeTupleSetAltHeapTID(tidpivot);
2271+
BTreeTupleSetNAtts(tidpivot,nkeyatts, true);
22702272
pivotheaptid=BTreeTupleGetHeapTID(tidpivot);
22712273

22722274
/*

‎src/include/access/nbtree.h

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -460,32 +460,28 @@ BTreeTupleSetDownLink(IndexTuple pivot, BlockNumber blkno)
460460
)
461461

462462
/*
463-
* Set number of attributes in tuple, making it into a pivot tuple
463+
* Set number of key attributes in tuple.
464+
*
465+
* The heap TID tiebreaker attribute bit may also be set here, indicating that
466+
* a heap TID value will be stored at the end of the tuple (i.e. using the
467+
* special pivot tuple representation).
464468
*/
465469
staticinlinevoid
466-
BTreeTupleSetNAtts(IndexTupleitup,intnatts)
470+
BTreeTupleSetNAtts(IndexTupleitup,uint16nkeyatts,boolheaptid)
467471
{
468-
Assert(natts <=INDEX_MAX_KEYS);
472+
Assert(nkeyatts <=INDEX_MAX_KEYS);
473+
Assert((nkeyatts&BT_RESERVED_OFFSET_MASK)==0);
474+
Assert(!heaptid||nkeyatts>0);
475+
Assert(!BTreeTupleIsPivot(itup)||nkeyatts==0);
469476

470477
itup->t_info |=INDEX_ALT_TID_MASK;
471-
/* BT_IS_POSTING bit may be unset -- tuple always becomes a pivot tuple */
472-
ItemPointerSetOffsetNumber(&itup->t_tid,natts);
473-
Assert(BTreeTupleIsPivot(itup));
474-
}
475-
476-
/*
477-
* Set the bit indicating heap TID attribute present in pivot tuple
478-
*/
479-
staticinlinevoid
480-
BTreeTupleSetAltHeapTID(IndexTuplepivot)
481-
{
482-
OffsetNumberexisting;
483478

484-
Assert(BTreeTupleIsPivot(pivot));
479+
if (heaptid)
480+
nkeyatts |=BT_PIVOT_HEAP_TID_ATTR;
485481

486-
existing=ItemPointerGetOffsetNumberNoCheck(&pivot->t_tid);
487-
ItemPointerSetOffsetNumber(&pivot->t_tid,
488-
existing |BT_PIVOT_HEAP_TID_ATTR);
482+
/* BT_IS_POSTING bit is deliberately unset here */
483+
ItemPointerSetOffsetNumber(&itup->t_tid,nkeyatts);
484+
Assert(BTreeTupleIsPivot(itup));
489485
}
490486

491487
/*
@@ -505,7 +501,7 @@ static inline void
505501
BTreeTupleSetTopParent(IndexTupleleafhikey,BlockNumberblkno)
506502
{
507503
ItemPointerSetBlockNumber(&leafhikey->t_tid,blkno);
508-
BTreeTupleSetNAtts(leafhikey,0);
504+
BTreeTupleSetNAtts(leafhikey,0, false);
509505
}
510506

511507
/*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp