Skip to content

Commit 1edaaca

Browse files
author
Artur Zakirov
committed
Remove inline functions to work with generic XLog
1 parent d60581e commit 1edaaca

File tree

6 files changed

+55
-109
lines changed

6 files changed

+55
-109
lines changed

rum.h

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -765,41 +765,6 @@ extern Datum rum_ts_distance(PG_FUNCTION_ARGS);
765765
/* GUC parameters */
766766
extern PGDLLIMPORT int RumFuzzySearchLimit;
767767

768-
/*
769-
* Functions to handle generic XLOG
770-
*/
771-
static inline GenericXLogState *
772-
RumGenericXLogStart(Relation relation, bool isbuild)
773-
{
774-
if (!isbuild)
775-
return GenericXLogStart(relation);
776-
return NULL;
777-
}
778-
779-
static inline Page
780-
RumGenericXLogRegisterBuffer(GenericXLogState *state, Buffer buffer, int flags,
781-
bool isbuild)
782-
{
783-
if (!isbuild)
784-
return GenericXLogRegisterBuffer(state, buffer, flags);
785-
return BufferGetPage(buffer);
786-
}
787-
788-
static inline XLogRecPtr
789-
RumGenericXLogFinish(GenericXLogState *state, bool isbuild)
790-
{
791-
if (!isbuild)
792-
return GenericXLogFinish(state);
793-
return InvalidXLogRecPtr;
794-
}
795-
796-
static inline void
797-
RumGenericXLogAbort(GenericXLogState *state, bool isbuild)
798-
{
799-
if (!isbuild)
800-
GenericXLogAbort(state);
801-
}
802-
803768
/*
804769
* Functions for reading ItemPointers with additional information. Used in
805770
* various .c files and have to be inline for being fast.

rumbtree.c

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -399,12 +399,11 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack * stack,
399399

400400
if (btree->isEnoughSpace(btree, stack->buffer, stack->off))
401401
{
402-
state = RumGenericXLogStart(index, btree->rumstate->isBuild);
403-
page = RumGenericXLogRegisterBuffer(state, stack->buffer, 0,
404-
btree->rumstate->isBuild);
402+
state = GenericXLogStart(index);
403+
page = GenericXLogRegisterBuffer(state, stack->buffer, 0);
405404

406405
btree->placeToPage(btree, page, stack->off);
407-
RumGenericXLogFinish(state, btree->rumstate->isBuild);
406+
GenericXLogFinish(state);
408407

409408
LockBuffer(stack->buffer, RUM_UNLOCK);
410409
freeRumBtreeStack(stack);
@@ -431,13 +430,11 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack * stack,
431430
{
432431
Buffer lbuffer;
433432

434-
state = RumGenericXLogStart(index, btree->rumstate->isBuild);
433+
state = GenericXLogStart(index);
435434

436-
page = RumGenericXLogRegisterBuffer(state, stack->buffer, 0,
437-
btree->rumstate->isBuild);
438-
rpage = RumGenericXLogRegisterBuffer(state, rbuffer,
439-
GENERIC_XLOG_FULL_IMAGE,
440-
btree->rumstate->isBuild);
435+
page = GenericXLogRegisterBuffer(state, stack->buffer, 0);
436+
rpage = GenericXLogRegisterBuffer(state, rbuffer,
437+
GENERIC_XLOG_FULL_IMAGE);
441438

442439
/*
443440
* newlpage is a pointer to memory page, it doesn't associate
@@ -451,9 +448,8 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack * stack,
451448
* pointer on root to left and right page
452449
*/
453450
lbuffer = RumNewBuffer(btree->index);
454-
lpage = RumGenericXLogRegisterBuffer(state, lbuffer,
455-
GENERIC_XLOG_FULL_IMAGE,
456-
btree->rumstate->isBuild);
451+
lpage = GenericXLogRegisterBuffer(state, lbuffer,
452+
GENERIC_XLOG_FULL_IMAGE);
457453

458454
RumPageGetOpaque(rpage)->rightlink = InvalidBlockNumber;
459455
RumPageGetOpaque(newlpage)->leftlink = InvalidBlockNumber;
@@ -466,7 +462,7 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack * stack,
466462
btree->fillRoot(btree, stack->buffer, lbuffer, rbuffer,
467463
page, lpage, rpage);
468464

469-
RumGenericXLogFinish(state, btree->rumstate->isBuild);
465+
GenericXLogFinish(state);
470466

471467
UnlockReleaseBuffer(rbuffer);
472468
UnlockReleaseBuffer(lbuffer);
@@ -489,12 +485,10 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack * stack,
489485
{
490486
/* split non-root page */
491487

492-
state = RumGenericXLogStart(index, btree->rumstate->isBuild);
488+
state = GenericXLogStart(index);
493489

494-
lpage = RumGenericXLogRegisterBuffer(state, stack->buffer, 0,
495-
btree->rumstate->isBuild);
496-
rpage = RumGenericXLogRegisterBuffer(state, rbuffer, 0,
497-
btree->rumstate->isBuild);
490+
lpage = GenericXLogRegisterBuffer(state, stack->buffer, 0);
491+
rpage = GenericXLogRegisterBuffer(state, rbuffer, 0);
498492

499493
/*
500494
* newlpage is a pointer to memory page, it doesn't associate
@@ -510,7 +504,7 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack * stack,
510504

511505
PageRestoreTempPage(newlpage, lpage);
512506

513-
RumGenericXLogFinish(state, btree->rumstate->isBuild);
507+
GenericXLogFinish(state);
514508

515509
UnlockReleaseBuffer(rbuffer);
516510
}

rumfast.c

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ writeListPage(RumState *rumstate, Buffer buffer,
5858
off;
5959
GenericXLogState *state;
6060

61-
state = RumGenericXLogStart(rumstate->index, rumstate->isBuild);
61+
state = GenericXLogStart(rumstate->index);
6262

63-
page = RumGenericXLogRegisterBuffer(state, buffer, 0, rumstate->isBuild);
63+
page = GenericXLogRegisterBuffer(state, buffer, 0);
6464
RumInitPage(page, RUM_LIST, BufferGetPageSize(buffer));
6565

6666
off = FirstOffsetNumber;
@@ -97,7 +97,7 @@ writeListPage(RumState *rumstate, Buffer buffer,
9797

9898
/* get free space before releasing buffer */
9999
freesize = PageGetExactFreeSpace(page);
100-
RumGenericXLogFinish(state, rumstate->isBuild);
100+
GenericXLogFinish(state);
101101
UnlockReleaseBuffer(buffer);
102102

103103
return freesize;
@@ -193,7 +193,7 @@ rumHeapTupleFastInsert(RumState * rumstate, RumTupleCollector * collector)
193193
if (collector->ntuples == 0)
194194
return;
195195

196-
state = RumGenericXLogStart(rumstate->index, rumstate->isBuild);
196+
state = GenericXLogStart(rumstate->index);
197197
metabuffer = ReadBuffer(index, RUM_METAPAGE_BLKNO);
198198

199199
if (collector->sumsize + collector->ntuples * sizeof(ItemIdData) > RumListPageSize)
@@ -236,8 +236,7 @@ rumHeapTupleFastInsert(RumState * rumstate, RumTupleCollector * collector)
236236
* metapage was unlocked, see above
237237
*/
238238
LockBuffer(metabuffer, RUM_EXCLUSIVE);
239-
metapage = RumGenericXLogRegisterBuffer(state, metabuffer, 0,
240-
rumstate->isBuild);
239+
metapage = GenericXLogRegisterBuffer(state, metabuffer, 0);
241240
metadata = RumPageGetMeta(metapage);
242241

243242
if (metadata->head == InvalidBlockNumber)
@@ -260,8 +259,7 @@ rumHeapTupleFastInsert(RumState * rumstate, RumTupleCollector * collector)
260259

261260
buffer = ReadBuffer(index, metadata->tail);
262261
LockBuffer(buffer, RUM_EXCLUSIVE);
263-
page = RumGenericXLogRegisterBuffer(state, buffer, 0,
264-
rumstate->isBuild);
262+
page = GenericXLogRegisterBuffer(state, buffer, 0);
265263

266264
Assert(RumPageGetOpaque(page)->rightlink == InvalidBlockNumber);
267265

@@ -284,13 +282,12 @@ rumHeapTupleFastInsert(RumState * rumstate, RumTupleCollector * collector)
284282
uint32 i;
285283
Size tupsize;
286284

287-
metapage = RumGenericXLogRegisterBuffer(state, metabuffer, 0,
288-
rumstate->isBuild);
285+
metapage = GenericXLogRegisterBuffer(state, metabuffer, 0);
289286
metadata = RumPageGetMeta(metapage);
290287

291288
buffer = ReadBuffer(index, metadata->tail);
292289
LockBuffer(buffer, RUM_EXCLUSIVE);
293-
page = RumGenericXLogRegisterBuffer(state, buffer, 0, rumstate->isBuild);
290+
page = GenericXLogRegisterBuffer(state, buffer, 0);
294291

295292
off = (PageIsEmpty(page)) ? FirstOffsetNumber :
296293
OffsetNumberNext(PageGetMaxOffsetNumber(page));
@@ -309,7 +306,7 @@ rumHeapTupleFastInsert(RumState * rumstate, RumTupleCollector * collector)
309306

310307
if (l == InvalidOffsetNumber)
311308
{
312-
RumGenericXLogAbort(state, rumstate->isBuild);
309+
GenericXLogAbort(state);
313310
elog(ERROR, "failed to add item to index page in \"%s\"",
314311
RelationGetRelationName(index));
315312
}
@@ -332,7 +329,7 @@ rumHeapTupleFastInsert(RumState * rumstate, RumTupleCollector * collector)
332329
if (metadata->nPendingPages * RUM_PAGE_FREESIZE > work_mem * 1024L)
333330
needCleanup = true;
334331

335-
RumGenericXLogFinish(state, rumstate->isBuild);
332+
GenericXLogFinish(state);
336333

337334
if (buffer != InvalidBuffer)
338335
UnlockReleaseBuffer(buffer);
@@ -508,10 +505,9 @@ shiftList(RumState *rumstate, Buffer metabuffer, BlockNumber newHead,
508505
BlockNumber blknoToDelete;
509506
GenericXLogState *metastate;
510507

511-
metastate = RumGenericXLogStart(rumstate->index, rumstate->isBuild);
512-
metapage = RumGenericXLogRegisterBuffer(metastate, metabuffer,
513-
GENERIC_XLOG_FULL_IMAGE,
514-
rumstate->isBuild);
508+
metastate = GenericXLogStart(rumstate->index);
509+
metapage = GenericXLogRegisterBuffer(metastate, metabuffer,
510+
GENERIC_XLOG_FULL_IMAGE);
515511
metadata = RumPageGetMeta(metapage);
516512
blknoToDelete = metadata->head;
517513

@@ -535,7 +531,7 @@ shiftList(RumState *rumstate, Buffer metabuffer, BlockNumber newHead,
535531

536532
if (RumPageIsDeleted(page))
537533
{
538-
RumGenericXLogAbort(metastate, rumstate->isBuild);
534+
GenericXLogAbort(metastate);
539535
/* concurrent cleanup process is detected */
540536
for (i = 0; i < nDeleted; i++)
541537
UnlockReleaseBuffer(buffers[i]);
@@ -565,23 +561,22 @@ shiftList(RumState *rumstate, Buffer metabuffer, BlockNumber newHead,
565561
metadata->nPendingHeapTuples = 0;
566562
}
567563

568-
MarkBufferDirty(metabuffer);
564+
// MarkBufferDirty(metabuffer);
569565

570566
for (i = 0; i < nDeleted; i++)
571567
{
572-
state = RumGenericXLogStart(rumstate->index, rumstate->isBuild);
573-
page = RumGenericXLogRegisterBuffer(state, buffers[i], 0,
574-
rumstate->isBuild);
568+
state = GenericXLogStart(rumstate->index);
569+
page = GenericXLogRegisterBuffer(state, buffers[i], 0);
575570

576571
RumPageGetOpaque(page)->flags = RUM_DELETED;
577-
RumGenericXLogFinish(state, rumstate->isBuild);
572+
GenericXLogFinish(state);
578573
}
579574

580575
for (i = 0; i < nDeleted; i++)
581576
UnlockReleaseBuffer(buffers[i]);
582577
} while (blknoToDelete != newHead);
583578

584-
RumGenericXLogFinish(metastate, rumstate->isBuild);
579+
GenericXLogFinish(metastate);
585580

586581
return false;
587582
}

ruminsert.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,9 @@ createPostingTree(RumState * rumstate, OffsetNumber attnum, Relation index,
4949
ItemPointerData prev_iptr = {{0, 0}, 0};
5050
GenericXLogState *state;
5151

52-
state = RumGenericXLogStart(index, rumstate->isBuild);
52+
state = GenericXLogStart(index);
5353

54-
page = RumGenericXLogRegisterBuffer(state, buffer, GENERIC_XLOG_FULL_IMAGE,
55-
rumstate->isBuild);
54+
page = GenericXLogRegisterBuffer(state, buffer, GENERIC_XLOG_FULL_IMAGE);
5655
RumInitPage(page, RUM_DATA | RUM_LEAF, BufferGetPageSize(buffer));
5756

5857
blkno = BufferGetBlockNumber(buffer);
@@ -69,7 +68,7 @@ createPostingTree(RumState * rumstate, OffsetNumber attnum, Relation index,
6968
Assert(RumDataPageFreeSpacePre(page, ptr) >= 0);
7069
updateItemIndexes(page, attnum, rumstate);
7170

72-
RumGenericXLogFinish(state, rumstate->isBuild);
71+
GenericXLogFinish(state);
7372

7473
UnlockReleaseBuffer(buffer);
7574

rumutil.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -487,8 +487,7 @@ RumInitBuffer(GenericXLogState *state, Buffer buffer, uint32 flags, bool isBuild
487487
{
488488
Page page;
489489

490-
page = RumGenericXLogRegisterBuffer(state, buffer, GENERIC_XLOG_FULL_IMAGE,
491-
isBuild);
490+
page = GenericXLogRegisterBuffer(state, buffer, GENERIC_XLOG_FULL_IMAGE);
492491

493492
RumInitPage(page, flags, BufferGetPageSize(buffer));
494493
}
@@ -500,8 +499,8 @@ RumInitMetabuffer(GenericXLogState *state, Buffer metaBuffer, bool isBuild)
500499
RumMetaPageData *metadata;
501500

502501
/* Initialize contents of meta page */
503-
metaPage = RumGenericXLogRegisterBuffer(state, metaBuffer,
504-
GENERIC_XLOG_FULL_IMAGE, isBuild);
502+
metaPage = GenericXLogRegisterBuffer(state, metaBuffer,
503+
GENERIC_XLOG_FULL_IMAGE);
505504

506505
RumInitPage(metaPage, RUM_META, BufferGetPageSize(metaBuffer));
507506
metadata = RumPageGetMeta(metaPage);
@@ -850,19 +849,19 @@ rumUpdateStats(Relation index, const GinStatsData *stats, bool isBuild)
850849
RumMetaPageData *metadata;
851850
GenericXLogState *state;
852851

853-
state = RumGenericXLogStart(index, isBuild);
852+
state = GenericXLogStart(index);
854853

855854
metabuffer = ReadBuffer(index, RUM_METAPAGE_BLKNO);
856855
LockBuffer(metabuffer, RUM_EXCLUSIVE);
857-
metapage = RumGenericXLogRegisterBuffer(state, metabuffer, 0, isBuild);
856+
metapage = GenericXLogRegisterBuffer(state, metabuffer, 0);
858857
metadata = RumPageGetMeta(metapage);
859858

860859
metadata->nTotalPages = stats->nTotalPages;
861860
metadata->nEntryPages = stats->nEntryPages;
862861
metadata->nDataPages = stats->nDataPages;
863862
metadata->nEntries = stats->nEntries;
864863

865-
RumGenericXLogFinish(state, isBuild);
864+
GenericXLogFinish(state);
866865

867866
UnlockReleaseBuffer(metabuffer);
868867
}

0 commit comments

Comments
 (0)