Skip to content

Commit a8c6ae6

Browse files
committed
undo reloption changes
1 parent 6a37555 commit a8c6ae6

File tree

10 files changed

+44
-281
lines changed

10 files changed

+44
-281
lines changed

src/backend/access/common/reloptions.c

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,6 @@ static relopt_bool boolRelOpts[] =
166166
},
167167
true
168168
},
169-
{
170-
{
171-
"reduce_fpi",
172-
"Reduces full page images in WAL for this table",
173-
RELOPT_KIND_HEAP, /* regular tables only - indexes/toast derive from parent */
174-
ShareUpdateExclusiveLock /* applies only to subsequent WAL writes, like fillfactor */
175-
},
176-
false
177-
},
178169
/* list terminator */
179170
{{NULL}}
180171
};
@@ -1898,9 +1889,7 @@ default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
18981889
{"vacuum_index_cleanup", RELOPT_TYPE_ENUM,
18991890
offsetof(StdRdOptions, vacuum_index_cleanup)},
19001891
{"vacuum_truncate", RELOPT_TYPE_BOOL,
1901-
offsetof(StdRdOptions, vacuum_truncate)},
1902-
{"reduce_fpi", RELOPT_TYPE_BOOL,
1903-
offsetof(StdRdOptions, reduce_fpi)}
1892+
offsetof(StdRdOptions, vacuum_truncate)}
19041893
};
19051894

19061895
return (bytea *) build_reloptions(reloptions, validate, kind,

src/backend/access/heap/heapam.c

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2200,8 +2200,7 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
22002200
* write the whole page to the xlog, we don't need to store
22012201
* xl_heap_header in the xlog.
22022202
*/
2203-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD | bufflags,
2204-
relation);
2203+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD | bufflags);
22052204
XLogRegisterBufData(0, (char *) &xlhdr, SizeOfNeonHeapHeader);
22062205
/* PG73FORMAT: write bitmap [+ padding] [+ oid] + data */
22072206
XLogRegisterBufData(0,
@@ -3116,7 +3115,7 @@ heap_delete(Relation relation, ItemPointer tid,
31163115
XLogBeginInsert();
31173116
XLogRegisterData((char *) &xlrec, SizeOfNeonHeapDelete);
31183117

3119-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
3118+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
31203119

31213120
/*
31223121
* Log replica identity of the deleted tuple if there is one
@@ -3888,7 +3887,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
38883887
XLogRecPtr recptr;
38893888

38903889
XLogBeginInsert();
3891-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
3890+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
38923891

38933892
xlrec.offnum = ItemPointerGetOffsetNumber(&oldtup.t_self);
38943893
xlrec.xmax = xmax_lock_old_tuple;
@@ -5221,7 +5220,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
52215220
XLogRecPtr recptr;
52225221

52235222
XLogBeginInsert();
5224-
XLogRegisterBufferForRelation(0, *buffer, REGBUF_STANDARD, relation);
5223+
XLogRegisterBuffer(0, *buffer, REGBUF_STANDARD);
52255224

52265225
xlrec.offnum = ItemPointerGetOffsetNumber(&tuple->t_self);
52275226
xlrec.xmax = xid;
@@ -5974,7 +5973,7 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid,
59745973
Page page = BufferGetPage(buf);
59755974

59765975
XLogBeginInsert();
5977-
XLogRegisterBufferForRelation(0, buf, REGBUF_STANDARD, rel);
5976+
XLogRegisterBuffer(0, buf, REGBUF_STANDARD);
59785977

59795978
xlrec.offnum = ItemPointerGetOffsetNumber(&mytup.t_self);
59805979
xlrec.xmax = new_xmax;
@@ -6136,7 +6135,7 @@ heap_finish_speculative(Relation relation, ItemPointer tid)
61366135
XLogSetRecordFlags(XLOG_INCLUDE_ORIGIN);
61376136

61386137
XLogRegisterData((char *) &xlrec, SizeOfHeapConfirm);
6139-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6138+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
61406139

61416140
recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_CONFIRM);
61426141

@@ -6293,7 +6292,7 @@ heap_abort_speculative(Relation relation, ItemPointer tid)
62936292

62946293
XLogBeginInsert();
62956294
XLogRegisterData((char *) &xlrec, SizeOfNeonHeapDelete);
6296-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6295+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
62976296

62986297
/* No replica identity & replication origin logged */
62996298

@@ -6537,7 +6536,7 @@ heap_inplace_update_and_unlock(Relation relation,
65376536
XLogBeginInsert();
65386537
XLogRegisterData((char *) &xlrec, SizeOfHeapInplace);
65396538

6540-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6539+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
65416540
XLogRegisterBufData(0, (char *) htup + htup->t_hoff, newlen);
65426541

65436542
/* inplace updates aren't decoded atm, don't log the origin */
@@ -6640,7 +6639,7 @@ heap_inplace_update(Relation relation, HeapTuple tuple)
66406639
XLogBeginInsert();
66416640
XLogRegisterData((char *) &xlrec, SizeOfHeapInplace);
66426641

6643-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6642+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
66446643
XLogRegisterBufData(0, (char *) htup + htup->t_hoff, newlen);
66456644

66466645
/* inplace updates aren't decoded atm, don't log the origin */
@@ -8862,7 +8861,7 @@ log_heap_visible(Relation rel, Buffer heap_buffer, Buffer vm_buffer,
88628861
flags = REGBUF_STANDARD;
88638862
if (!XLogHintBitIsNeeded())
88648863
flags |= REGBUF_NO_IMAGE;
8865-
XLogRegisterBufferForRelation(1, heap_buffer, flags, rel);
8864+
XLogRegisterBuffer(1, heap_buffer, flags);
88668865

88678866
recptr = XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_VISIBLE);
88688867

@@ -9003,11 +9002,9 @@ log_heap_update(Relation reln, Buffer oldbuf,
90039002
if (need_tuple_data)
90049003
bufflags |= REGBUF_KEEP_DATA;
90059004

9006-
XLogRegisterBufferForRelation(0, newbuf, bufflags, reln);
9005+
XLogRegisterBuffer(0, newbuf, bufflags);
90079006
if (oldbuf != newbuf)
9008-
{
9009-
XLogRegisterBufferForRelation(1, oldbuf, REGBUF_STANDARD, reln);
9010-
}
9007+
XLogRegisterBuffer(1, oldbuf, REGBUF_STANDARD);
90119008

90129009
XLogRegisterData((char *) &xlrec, SizeOfNeonHeapUpdate);
90139010

src/backend/access/nbtree/nbtdedup.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ _bt_dedup_pass(Relation rel, Buffer buf, IndexTuple newitem, Size newitemsz,
251251
xlrec_dedup.nintervals = state->nintervals;
252252

253253
XLogBeginInsert();
254-
XLogRegisterBufferForRelation(0, buf, REGBUF_STANDARD, rel);
254+
XLogRegisterBuffer(0, buf, REGBUF_STANDARD);
255255
XLogRegisterData((char *) &xlrec_dedup, SizeOfBtreeDedup);
256256

257257
/*

src/backend/access/nbtree/nbtinsert.c

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,13 +1337,13 @@ _bt_insertonpg(Relation rel,
13371337
Assert(isleaf);
13381338
xlinfo = XLOG_BTREE_INSERT_POST;
13391339
}
1340-
else
1341-
{
1342-
/* Internal page insert, which finishes a split on cbuf */
1343-
xlinfo = XLOG_BTREE_INSERT_UPPER;
1344-
XLogRegisterBufferForRelation(1, cbuf, REGBUF_STANDARD, rel);
1340+
else
1341+
{
1342+
/* Internal page insert, which finishes a split on cbuf */
1343+
xlinfo = XLOG_BTREE_INSERT_UPPER;
1344+
XLogRegisterBuffer(1, cbuf, REGBUF_STANDARD);
13451345

1346-
if (BufferIsValid(metabuf))
1346+
if (BufferIsValid(metabuf))
13471347
{
13481348
/* Actually, it's an internal page insert + meta update */
13491349
xlinfo = XLOG_BTREE_INSERT_META;
@@ -1357,16 +1357,15 @@ _bt_insertonpg(Relation rel,
13571357
xlmeta.last_cleanup_num_delpages = metad->btm_last_cleanup_num_delpages;
13581358
xlmeta.allequalimage = metad->btm_allequalimage;
13591359

1360-
XLogRegisterBufferForRelation(2, metabuf,
1361-
REGBUF_WILL_INIT | REGBUF_STANDARD,
1362-
rel);
1360+
XLogRegisterBuffer(2, metabuf,
1361+
REGBUF_WILL_INIT | REGBUF_STANDARD);
13631362
XLogRegisterBufData(2, (char *) &xlmeta,
13641363
sizeof(xl_btree_metadata));
13651364
}
1366-
}
1365+
}
13671366

1368-
XLogRegisterBufferForRelation(0, buf, REGBUF_STANDARD, rel);
1369-
if (postingoff == 0)
1367+
XLogRegisterBuffer(0, buf, REGBUF_STANDARD);
1368+
if (postingoff == 0)
13701369
{
13711370
/* Just log itup from caller */
13721371
XLogRegisterBufData(0, (char *) itup, IndexTupleSize(itup));
@@ -2017,13 +2016,13 @@ _bt_split(Relation rel, Relation heaprel, BTScanInsert itup_key, Buffer buf,
20172016
bufflags |= REGBUF_FORCE_IMAGE;
20182017
}
20192018

2020-
XLogRegisterBufferForRelation(0, buf, bufflags, rel);
2021-
XLogRegisterBufferForRelation(1, rbuf, REGBUF_WILL_INIT, rel);
2019+
XLogRegisterBuffer(0, buf, bufflags);
2020+
XLogRegisterBuffer(1, rbuf, REGBUF_WILL_INIT);
20222021
/* Log original right sibling, since we've changed its prev-pointer */
20232022
if (!isrightmost)
2024-
XLogRegisterBufferForRelation(2, sbuf, REGBUF_STANDARD, rel);
2023+
XLogRegisterBuffer(2, sbuf, REGBUF_STANDARD);
20252024
if (!isleaf)
2026-
XLogRegisterBufferForRelation(3, cbuf, REGBUF_STANDARD, rel);
2025+
XLogRegisterBuffer(3, cbuf, REGBUF_STANDARD);
20272026

20282027
/*
20292028
* Log the new item, if it was inserted on the left page. (If it was
@@ -2602,9 +2601,9 @@ _bt_newlevel(Relation rel, Relation heaprel, Buffer lbuf, Buffer rbuf)
26022601
XLogBeginInsert();
26032602
XLogRegisterData((char *) &xlrec, SizeOfBtreeNewroot);
26042603

2605-
XLogRegisterBufferForRelation(0, rootbuf, REGBUF_WILL_INIT, rel);
2606-
XLogRegisterBufferForRelation(1, lbuf, REGBUF_STANDARD, rel);
2607-
XLogRegisterBufferForRelation(2, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD, rel);
2604+
XLogRegisterBuffer(0, rootbuf, REGBUF_WILL_INIT);
2605+
XLogRegisterBuffer(1, lbuf, REGBUF_STANDARD);
2606+
XLogRegisterBuffer(2, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD);
26082607

26092608
Assert(metad->btm_version >= BTREE_NOVAC_VERSION);
26102609
md.version = metad->btm_version;

src/backend/access/nbtree/nbtpage.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ _bt_set_cleanup_info(Relation rel, BlockNumber num_delpages)
288288
XLogRecPtr recptr;
289289

290290
XLogBeginInsert();
291-
XLogRegisterBufferForRelation(0, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD, rel);
291+
XLogRegisterBuffer(0, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD);
292292

293293
Assert(metad->btm_version >= BTREE_NOVAC_VERSION);
294294
md.version = metad->btm_version;
@@ -476,8 +476,8 @@ _bt_getroot(Relation rel, Relation heaprel, int access)
476476
xl_btree_metadata md;
477477

478478
XLogBeginInsert();
479-
XLogRegisterBufferForRelation(0, rootbuf, REGBUF_WILL_INIT, rel);
480-
XLogRegisterBufferForRelation(2, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD, rel);
479+
XLogRegisterBuffer(0, rootbuf, REGBUF_WILL_INIT);
480+
XLogRegisterBuffer(2, metabuf, REGBUF_WILL_INIT | REGBUF_STANDARD);
481481

482482
Assert(metad->btm_version >= BTREE_NOVAC_VERSION);
483483
md.version = metad->btm_version;
@@ -1233,7 +1233,7 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
12331233
xlrec_vacuum.nupdated = nupdatable;
12341234

12351235
XLogBeginInsert();
1236-
XLogRegisterBufferForRelation(0, buf, REGBUF_STANDARD, rel);
1236+
XLogRegisterBuffer(0, buf, REGBUF_STANDARD);
12371237
XLogRegisterData((char *) &xlrec_vacuum, SizeOfBtreeVacuum);
12381238

12391239
if (ndeletable > 0)
@@ -1352,7 +1352,7 @@ _bt_delitems_delete(Relation rel, Buffer buf,
13521352
xlrec_delete.isCatalogRel = isCatalogRel;
13531353

13541354
XLogBeginInsert();
1355-
XLogRegisterBufferForRelation(0, buf, REGBUF_STANDARD, rel);
1355+
XLogRegisterBuffer(0, buf, REGBUF_STANDARD);
13561356
XLogRegisterData((char *) &xlrec_delete, SizeOfBtreeDelete);
13571357

13581358
if (ndeletable > 0)
@@ -2261,8 +2261,8 @@ _bt_mark_page_halfdead(Relation rel, Relation heaprel, Buffer leafbuf,
22612261
xlrec.topparent = InvalidBlockNumber;
22622262

22632263
XLogBeginInsert();
2264-
XLogRegisterBufferForRelation(0, leafbuf, REGBUF_WILL_INIT, rel);
2265-
XLogRegisterBufferForRelation(1, subtreeparent, REGBUF_STANDARD, rel);
2264+
XLogRegisterBuffer(0, leafbuf, REGBUF_WILL_INIT);
2265+
XLogRegisterBuffer(1, subtreeparent, REGBUF_STANDARD);
22662266

22672267
page = BufferGetPage(leafbuf);
22682268
opaque = BTPageGetOpaque(page);
@@ -2676,12 +2676,12 @@ _bt_unlink_halfdead_page(Relation rel, Buffer leafbuf, BlockNumber scanblkno,
26762676

26772677
XLogBeginInsert();
26782678

2679-
XLogRegisterBufferForRelation(0, buf, REGBUF_WILL_INIT, rel);
2679+
XLogRegisterBuffer(0, buf, REGBUF_WILL_INIT);
26802680
if (BufferIsValid(lbuf))
2681-
XLogRegisterBufferForRelation(1, lbuf, REGBUF_STANDARD, rel);
2682-
XLogRegisterBufferForRelation(2, rbuf, REGBUF_STANDARD, rel);
2681+
XLogRegisterBuffer(1, lbuf, REGBUF_STANDARD);
2682+
XLogRegisterBuffer(2, rbuf, REGBUF_STANDARD);
26832683
if (target != leafblkno)
2684-
XLogRegisterBufferForRelation(3, leafbuf, REGBUF_WILL_INIT, rel);
2684+
XLogRegisterBuffer(3, leafbuf, REGBUF_WILL_INIT);
26852685

26862686
/* information stored on the target/to-be-unlinked block */
26872687
xlrec.leftsib = leftsib;

src/backend/access/transam/xloginsert.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
645645
*/
646646
XLogRecPtr page_lsn = PageGetLSN(regbuf->page);
647647

648-
if (suppress_fpi && (regbuf->flags & REGBUF_REDUCE_FPI))
648+
if (suppress_fpi)
649649
needs_backup = false;
650650
else
651651
needs_backup = (page_lsn <= RedoRecPtr);

src/backend/commands/tablecmds.c

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,6 @@ static void ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel,
612612
const char *tablespacename, LOCKMODE lockmode);
613613
static void ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode);
614614
static void ATExecSetTableSpaceNoStorage(Relation rel, Oid newTableSpace);
615-
static void InvalidateReduceFPIChildren(Relation rel);
616615
static void ATExecSetRelOptions(Relation rel, List *defList,
617616
AlterTableType operation,
618617
LOCKMODE lockmode);
@@ -15043,51 +15042,6 @@ ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, const char *tablespacen
1504315042
tab->newTableSpace = tablespaceId;
1504415043
}
1504515044

15046-
/*
15047-
* InvalidateReduceFPIChildren
15048-
*
15049-
* When reduce_fpi changes on a heap table, invalidate relcache entries for
15050-
* all child relations (indexes and toast tables) so they re-derive the new
15051-
* value from the parent.
15052-
*/
15053-
static void
15054-
InvalidateReduceFPIChildren(Relation rel)
15055-
{
15056-
List *indexoidlist;
15057-
ListCell *indexoidscan;
15058-
15059-
/* Invalidate all indexes on this relation */
15060-
indexoidlist = RelationGetIndexList(rel);
15061-
foreach(indexoidscan, indexoidlist)
15062-
{
15063-
Oid indexoid = lfirst_oid(indexoidscan);
15064-
15065-
CacheInvalidateRelcacheByRelid(indexoid);
15066-
}
15067-
list_free(indexoidlist);
15068-
15069-
/* Invalidate toast table and its indexes */
15070-
if (OidIsValid(rel->rd_rel->reltoastrelid))
15071-
{
15072-
Oid toastrelid = rel->rd_rel->reltoastrelid;
15073-
Relation toastrel;
15074-
15075-
CacheInvalidateRelcacheByRelid(toastrelid);
15076-
15077-
/* Also invalidate toast table's indexes */
15078-
toastrel = table_open(toastrelid, AccessShareLock);
15079-
indexoidlist = RelationGetIndexList(toastrel);
15080-
foreach(indexoidscan, indexoidlist)
15081-
{
15082-
Oid indexoid = lfirst_oid(indexoidscan);
15083-
15084-
CacheInvalidateRelcacheByRelid(indexoid);
15085-
}
15086-
list_free(indexoidlist);
15087-
table_close(toastrel, AccessShareLock);
15088-
}
15089-
}
15090-
1509115045
/*
1509215046
* Set, reset, or replace reloptions.
1509315047
*/
@@ -15226,36 +15180,6 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
1522615180

1522715181
ReleaseSysCache(tuple);
1522815182

15229-
/*
15230-
* If this is a heap relation and reduce_fpi was changed, invalidate
15231-
* relcache for all indexes and toast relations so they pick up the new
15232-
* value in their rd_reduce_fpi field.
15233-
*/
15234-
/*
15235-
* For regular tables, if reduce_fpi changed, we need to invalidate
15236-
* child relations (indexes and toast) so they re-derive the new value.
15237-
*/
15238-
if (rel->rd_rel->relkind == RELKIND_RELATION)
15239-
{
15240-
ListCell *cell;
15241-
bool reduce_fpi_changed = false;
15242-
15243-
/* Check if reduce_fpi was in the ALTER statement */
15244-
foreach(cell, defList)
15245-
{
15246-
DefElem *defel = (DefElem *) lfirst(cell);
15247-
15248-
if (strcmp(defel->defname, "reduce_fpi") == 0)
15249-
{
15250-
reduce_fpi_changed = true;
15251-
break;
15252-
}
15253-
}
15254-
15255-
if (reduce_fpi_changed)
15256-
InvalidateReduceFPIChildren(rel);
15257-
}
15258-
1525915183
/* repeat the whole exercise for the toast table, if there's one */
1526015184
if (OidIsValid(rel->rd_rel->reltoastrelid))
1526115185
{

0 commit comments

Comments
 (0)