Skip to content

Commit 4ea1fc4

Browse files
knizhnikMMeent
authored andcommitted
Revert "Update last written LSN for gin/gist index metadata (#182)" (#183)
This reverts commit 7517d1c. Revert "Large last written lsn cache (#177)" This reverts commit 595ac69.
1 parent 687a916 commit 4ea1fc4

File tree

10 files changed

+37
-256
lines changed

10 files changed

+37
-256
lines changed

contrib/neon/pagestore_smgr.c

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ zenith_wallog_page(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
558558
* Remember the LSN on this page. When we read the page again, we must
559559
* read the same or newer version of it.
560560
*/
561-
SetLastWrittenLSNForBlock(lsn, reln->smgr_rnode.node.relNode, blocknum);
561+
SetLastWrittenPageLSN(lsn);
562562
}
563563

564564

@@ -603,7 +603,7 @@ zm_adjust_lsn(XLogRecPtr lsn)
603603
* Return LSN for requesting pages and number of blocks from page server
604604
*/
605605
static XLogRecPtr
606-
zenith_get_request_lsn(bool *latest, Oid rnode, BlockNumber blkno)
606+
zenith_get_request_lsn(bool *latest)
607607
{
608608
XLogRecPtr lsn;
609609

@@ -630,9 +630,9 @@ zenith_get_request_lsn(bool *latest, Oid rnode, BlockNumber blkno)
630630
* so our request cannot concern those.
631631
*/
632632
*latest = true;
633-
lsn = GetLastWrittenLSN(rnode, blkno);
633+
lsn = GetLastWrittenPageLSN();
634634
Assert(lsn != InvalidXLogRecPtr);
635-
elog(DEBUG1, "zenith_get_request_lsn GetLastWrittenLSN lsn %X/%X ",
635+
elog(DEBUG1, "zenith_get_request_lsn GetLastWrittenPageLSN lsn %X/%X ",
636636
(uint32) ((lsn) >> 32), (uint32) (lsn));
637637

638638
lsn = zm_adjust_lsn(lsn);
@@ -716,7 +716,7 @@ zenith_exists(SMgrRelation reln, ForkNumber forkNum)
716716
return false;
717717
}
718718

719-
request_lsn = zenith_get_request_lsn(&latest, reln->smgr_rnode.node.relNode, REL_METADATA_PSEUDO_BLOCKNO);
719+
request_lsn = zenith_get_request_lsn(&latest);
720720
{
721721
ZenithExistsRequest request = {
722722
.req.tag = T_ZenithExistsRequest,
@@ -791,7 +791,7 @@ zenith_create(SMgrRelation reln, ForkNumber forkNum, bool isRedo)
791791
*
792792
* FIXME: This is currently not just an optimization, but required for
793793
* correctness. Postgres can call smgrnblocks() on the newly-created
794-
* relation. Currently, we don't call SetLastWrittenLSN() when a new
794+
* relation. Currently, we don't call SetLastWrittenPageLSN() when a new
795795
* relation created, so if we didn't remember the size in the relsize
796796
* cache, we might call smgrnblocks() on the newly-created relation before
797797
* the creation WAL record hass been received by the page server.
@@ -904,8 +904,6 @@ zenith_extend(SMgrRelation reln, ForkNumber forkNum, BlockNumber blkno,
904904
if (IS_LOCAL_REL(reln))
905905
mdextend(reln, forkNum, blkno, buffer, skipFsync);
906906
#endif
907-
908-
SetLastWrittenLSNForRelation(lsn, reln->smgr_rnode.node.relNode);
909907
}
910908

911909
/*
@@ -1081,7 +1079,7 @@ zenith_read(SMgrRelation reln, ForkNumber forkNum, BlockNumber blkno,
10811079
elog(ERROR, "unknown relpersistence '%c'", reln->smgr_relpersistence);
10821080
}
10831081

1084-
request_lsn = zenith_get_request_lsn(&latest, reln->smgr_rnode.node.relNode, blkno);
1082+
request_lsn = zenith_get_request_lsn(&latest);
10851083
zenith_read_at_lsn(reln->smgr_rnode.node, forkNum, blkno, request_lsn, latest, buffer);
10861084

10871085
#ifdef DEBUG_COMPARE_LOCAL
@@ -1286,7 +1284,7 @@ zenith_nblocks(SMgrRelation reln, ForkNumber forknum)
12861284
return n_blocks;
12871285
}
12881286

1289-
request_lsn = zenith_get_request_lsn(&latest, reln->smgr_rnode.node.relNode, REL_METADATA_PSEUDO_BLOCKNO);
1287+
request_lsn = zenith_get_request_lsn(&latest);
12901288
{
12911289
ZenithNblocksRequest request = {
12921290
.req.tag = T_ZenithNblocksRequest,
@@ -1346,7 +1344,7 @@ zenith_dbsize(Oid dbNode)
13461344
XLogRecPtr request_lsn;
13471345
bool latest;
13481346

1349-
request_lsn = zenith_get_request_lsn(&latest, InvalidOid, REL_METADATA_PSEUDO_BLOCKNO);
1347+
request_lsn = zenith_get_request_lsn(&latest);
13501348
{
13511349
ZenithDbSizeRequest request = {
13521350
.req.tag = T_ZenithDbSizeRequest,
@@ -1433,11 +1431,7 @@ zenith_truncate(SMgrRelation reln, ForkNumber forknum, BlockNumber nblocks)
14331431
*/
14341432
XLogFlush(lsn);
14351433

1436-
/*
1437-
* Truncate may affect several chunks of relations. So we should either update last written LSN for all of them,
1438-
* either update LSN for "dummy" metadata block. Second approach seems to be more efficient.
1439-
*/
1440-
SetLastWrittenLSNForRelation(lsn, reln->smgr_rnode.node.relNode);
1434+
SetLastWrittenPageLSN(lsn);
14411435

14421436
#ifdef DEBUG_COMPARE_LOCAL
14431437
if (IS_LOCAL_REL(reln))

src/backend/access/gin/gininsert.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,8 @@ ginbuild(Relation heap, Relation index, IndexInfo *indexInfo)
421421
log_newpage_range(index, MAIN_FORKNUM,
422422
0, RelationGetNumberOfBlocks(index),
423423
true);
424-
SetLastWrittenLSNForBlockRange(XactLastRecEnd, index->rd_smgr->smgr_rnode.node.relNode, 0, RelationGetNumberOfBlocks(index));
425-
SetLastWrittenLSNForRelation(XactLastRecEnd, index->rd_smgr->smgr_rnode.node.relNode);
426424
}
425+
SetLastWrittenPageLSN(XactLastRecEnd);
427426

428427
smgr_end_unlogged_build(index->rd_smgr);
429428

src/backend/access/gist/gistbuild.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -335,11 +335,9 @@ gistbuild(Relation heap, Relation index, IndexInfo *indexInfo)
335335
log_newpage_range(index, MAIN_FORKNUM,
336336
0, RelationGetNumberOfBlocks(index),
337337
true);
338-
SetLastWrittenLSNForBlockRange(XactLastRecEnd,
339-
index->rd_smgr->smgr_rnode.node.relNode,
340-
0, RelationGetNumberOfBlocks(index));
341-
SetLastWrittenLSNForRelation(XactLastRecEnd, index->rd_smgr->smgr_rnode.node.relNode);
342338
}
339+
SetLastWrittenPageLSN(XactLastRecEnd);
340+
343341
smgr_end_unlogged_build(index->rd_smgr);
344342
}
345343

@@ -469,9 +467,7 @@ gist_indexsortbuild(GISTBuildState *state)
469467

470468
lsn = log_newpage(&state->indexrel->rd_node, MAIN_FORKNUM, GIST_ROOT_BLKNO,
471469
pagestate->page, true);
472-
SetLastWrittenLSNForBlock(lsn, state->indexrel->rd_smgr->smgr_rnode.node.relNode,
473-
GIST_ROOT_BLKNO);
474-
SetLastWrittenLSNForRelation(lsn, state->indexrel->rd_smgr->smgr_rnode.node.relNode);
470+
SetLastWrittenPageLSN(lsn);
475471
}
476472

477473
pfree(pagestate->page);

src/backend/access/spgist/spginsert.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,8 @@ spgbuild(Relation heap, Relation index, IndexInfo *indexInfo)
143143
log_newpage_range(index, MAIN_FORKNUM,
144144
0, RelationGetNumberOfBlocks(index),
145145
true);
146-
SetLastWrittenLSNForBlockRange(XactLastRecEnd, index->rd_smgr->smgr_rnode.node.relNode,
147-
0, RelationGetNumberOfBlocks(index));
148-
SetLastWrittenLSNForRelation(XactLastRecEnd, index->rd_smgr->smgr_rnode.node.relNode);
149146
}
147+
SetLastWrittenPageLSN(XactLastRecEnd);
150148

151149
smgr_end_unlogged_build(index->rd_smgr);
152150

0 commit comments

Comments
 (0)