Skip to content

Commit 67491bc

Browse files
committed
prettifing
1 parent eec6099 commit 67491bc

File tree

5 files changed

+36
-141
lines changed

5 files changed

+36
-141
lines changed

src/backend/access/gist/gistvacuum.c

Lines changed: 36 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -108,21 +108,6 @@ typedef struct GistBDItem
108108
struct GistBDItem *next;
109109
} GistBDItem;
110110

111-
typedef enum
112-
{
113-
NOT_NEED_TO_PROCESS, /* without action */
114-
PROCESSED, /* action is done */
115-
NEED_TO_PROCESS,
116-
NEED_TO_DELETE
117-
} GistBlockInfoFlag;
118-
119-
typedef struct GistBlockInfo {
120-
BlockNumber parent;
121-
BlockNumber leftblock; /* block that has rightlink on blkno */
122-
GistBlockInfoFlag flag;
123-
bool hasRightLink;
124-
} GistBlockInfo;
125-
126111
static void
127112
pushStackIfSplited(Page page, GistBDItem *stack)
128113
{
@@ -296,8 +281,6 @@ gistbulkdelete(IndexVacuumInfo * info, IndexBulkDeleteResult * stats, IndexBulkD
296281
vacuum_delay_point();
297282
}
298283

299-
300-
elog(NOTICE,"Rescan list length %d", length(rescanList));
301284
/* rescan inner pages that had empty child pages */
302285
foreach(cell,rescanList)
303286
{
@@ -311,7 +294,6 @@ gistbulkdelete(IndexVacuumInfo * info, IndexBulkDeleteResult * stats, IndexBulkD
311294
Buffer buftodelete[MaxOffsetNumber];
312295
int ntodelete = 0;
313296

314-
elog(NOTICE,"Deleting for inner %d",(BlockNumber)lfirst_int(cell));
315297
buffer = ReadBufferExtended(rel, MAIN_FORKNUM, (BlockNumber)lfirst_int(cell),
316298
RBM_NORMAL, info->strategy);
317299
LockBuffer(buffer, GIST_EXCLUSIVE);
@@ -322,7 +304,7 @@ gistbulkdelete(IndexVacuumInfo * info, IndexBulkDeleteResult * stats, IndexBulkD
322304

323305
maxoff = PageGetMaxOffsetNumber(page);
324306

325-
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
307+
for (i = OffsetNumberNext(FirstOffsetNumber); i <= maxoff; i = OffsetNumberNext(i))
326308
{
327309
Buffer leafBuffer;
328310
Page leafPage;
@@ -335,9 +317,11 @@ gistbulkdelete(IndexVacuumInfo * info, IndexBulkDeleteResult * stats, IndexBulkD
335317
LockBuffer(leafBuffer, GIST_EXCLUSIVE);
336318
gistcheckpage(rel, leafBuffer);
337319
leafPage = (Page) BufferGetPage(leafBuffer);
320+
Assert(GistPageIsLeaf(leafPage));
338321

339-
if (PageGetMaxOffsetNumber(leafPage) == InvalidOffsetNumber
340-
&& !(GistFollowRight(leafPage) || GistPageGetNSN(page) < GistPageGetNSN(leafPage)))
322+
if (PageGetMaxOffsetNumber(leafPage) == InvalidOffsetNumber /* Nothing left to split */
323+
&& !(GistFollowRight(leafPage) || GistPageGetNSN(page) < GistPageGetNSN(leafPage)) /* No follow-right */
324+
&& ntodelete < maxoff-1) /* We must keep at leaf one leaf page per each */
341325
{
342326
buftodelete[ntodelete] = leafBuffer;
343327
todelete[ntodelete++] = i;
@@ -347,51 +331,48 @@ gistbulkdelete(IndexVacuumInfo * info, IndexBulkDeleteResult * stats, IndexBulkD
347331
}
348332

349333
if (ntodelete)
350-
{
351-
START_CRIT_SECTION();
352-
353-
MarkBufferDirty(buffer);
334+
{
335+
/* Drop references from internal page */
336+
TransactionId txid = GetCurrentTransactionId();
337+
START_CRIT_SECTION();
354338

339+
MarkBufferDirty(buffer);
355340
PageIndexMultiDelete(page, todelete, ntodelete);
356-
GistMarkTuplesDeleted(page);
357341

358-
if (RelationNeedsWAL(rel))
359-
{
360-
XLogRecPtr recptr;
342+
if (RelationNeedsWAL(rel))
343+
{
344+
XLogRecPtr recptr;
361345

362-
recptr = gistXLogUpdate(buffer,
363-
todelete, ntodelete,
364-
NULL, 0, InvalidBuffer);
346+
recptr = gistXLogUpdate(buffer, todelete, ntodelete, NULL, 0, InvalidBuffer);
365347
PageSetLSN(page, recptr);
366-
}
367-
else
368-
PageSetLSN(page, gistGetFakeLSN(rel));
369-
370-
END_CRIT_SECTION();
371-
372-
for (i = 0; i < ntodelete; i++)
373-
{
374-
Page leafPage = (Page)BufferGetPage(buftodelete[i]);
375-
PageHeader header = (PageHeader)leafPage;
348+
}
349+
else
350+
PageSetLSN(page, gistGetFakeLSN(rel));
376351

377-
header->pd_prune_xid = GetCurrentTransactionId();
352+
/* Mark pages as deleted */
353+
for (i = 0; i < ntodelete; i++)
354+
{
355+
Page leafPage = (Page)BufferGetPage(buftodelete[i]);
356+
PageHeader header = (PageHeader)leafPage;
378357

379-
GistPageSetDeleted(leafPage);
380-
stats->pages_deleted++;
358+
header->pd_prune_xid = txid;
381359

382-
if (RelationNeedsWAL(rel))
383-
{
384-
XLogRecPtr recptr;
360+
GistPageSetDeleted(leafPage);
361+
MarkBufferDirty(buftodelete[i]);
362+
stats->pages_deleted++;
385363

386-
recptr = gistXLogSetDeleted(rel->rd_node, buftodelete[i], header->pd_prune_xid);
387-
PageSetLSN(leafPage, recptr);
388-
}
389-
else
390-
PageSetLSN(leafPage, gistGetFakeLSN(rel));
364+
if (RelationNeedsWAL(rel))
365+
{
366+
XLogRecPtr recptr = gistXLogSetDeleted(rel->rd_node, buftodelete[i], header->pd_prune_xid);
367+
PageSetLSN(leafPage, recptr);
368+
}
369+
else
370+
PageSetLSN(leafPage, gistGetFakeLSN(rel));
391371

392-
UnlockReleaseBuffer(buftodelete[i]);
393-
}
372+
UnlockReleaseBuffer(buftodelete[i]);
394373
}
374+
END_CRIT_SECTION();
375+
}
395376

396377
UnlockReleaseBuffer(buffer);
397378
}

src/backend/access/gist/gistxlog.c

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -60,27 +60,6 @@ gistRedoClearFollowRight(XLogReaderState *record, uint8 block_id)
6060
UnlockReleaseBuffer(buffer);
6161
}
6262

63-
static void
64-
gistRedoRightlinkChange(XLogReaderState *record)
65-
{
66-
XLogRecPtr lsn = record->EndRecPtr;
67-
gistxlogPageRightlinkChange *xldata = (gistxlogPageRightlinkChange *) XLogRecGetData(record);
68-
Buffer buffer;
69-
Page page;
70-
BlockNumber newright;
71-
GISTPageOpaque opaque;
72-
73-
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
74-
{
75-
newright = xldata->newRightLink;
76-
page = BufferGetPage(buffer);
77-
opaque = GistPageGetOpaque(page);
78-
opaque->rightlink = newright;
79-
PageSetLSN(page, lsn);
80-
MarkBufferDirty(buffer);
81-
}
82-
}
83-
8463
static void
8564
gistRedoPageSetDeleted(XLogReaderState *record)
8665
{
@@ -370,9 +349,6 @@ gist_redo(XLogReaderState *record)
370349
case XLOG_GIST_PAGE_DELETE:
371350
gistRedoPageSetDeleted(record);
372351
break;
373-
case XLOG_GIST_RIGHTLINK_CHANGE:
374-
gistRedoRightlinkChange(record);
375-
break;
376352
default:
377353
elog(PANIC, "gist_redo: unknown op code %u", info);
378354
}
@@ -508,24 +484,6 @@ gistXLogSetDeleted(RelFileNode node, Buffer buffer, TransactionId xid) {
508484
return recptr;
509485
}
510486

511-
XLogRecPtr
512-
gistXLogRightLinkChange(RelFileNode node, Buffer buffer,
513-
BlockNumber newRightLink)
514-
{
515-
gistxlogPageRightlinkChange xlrec;
516-
XLogRecPtr recptr;
517-
518-
xlrec.newRightLink = newRightLink;
519-
520-
XLogBeginInsert();
521-
XLogRegisterData((char *) &xlrec, sizeof(gistxlogPageRightlinkChange));
522-
523-
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
524-
/* new tuples */
525-
recptr = XLogInsert(RM_GIST_ID, XLOG_GIST_RIGHTLINK_CHANGE);
526-
return recptr;
527-
}
528-
529487
/*
530488
* Write XLOG record describing a page update. The update can include any
531489
* number of deletions and/or insertions of tuples on a single index page.

src/include/access/gist_private.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,6 @@ extern void gist_xlog_cleanup(void);
418418
extern XLogRecPtr gistXLogSetDeleted(RelFileNode node, Buffer buffer,
419419
TransactionId xid);
420420

421-
extern XLogRecPtr gistXLogRightLinkChange(RelFileNode node, Buffer buffer,
422-
BlockNumber newRightLink) ;
423-
424421
extern XLogRecPtr gistXLogUpdate(Buffer buffer,
425422
OffsetNumber *todelete, int ntodelete,
426423
IndexTuple *itup, int ntup,

src/include/access/gistxlog.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
/* #define XLOG_GIST_INSERT_COMPLETE 0x40 */ /* not used anymore */
2626
#define XLOG_GIST_CREATE_INDEX 0x50
2727
#define XLOG_GIST_PAGE_DELETE 0x60
28-
#define XLOG_GIST_RIGHTLINK_CHANGE 0x70
2928

3029
/*
3130
* Backup Blk 0: updated page.
@@ -67,13 +66,6 @@ typedef struct gistxlogPageDelete
6766
TransactionId id;
6867
} gistxlogPageDelete;
6968

70-
typedef struct gistxlogPageRightlinkChange
71-
{
72-
BlockNumber newRightLink;
73-
74-
} gistxlogPageRightlinkChange;
75-
76-
7769
/* despite the name, gistxlogPage is not part of any xlog record */
7870
typedef struct gistxlogPage
7971
{

test.sh

Lines changed: 0 additions & 33 deletions
This file was deleted.

0 commit comments

Comments
 (0)