Skip to content

Commit 70f51e7

Browse files
committed
undo reloption changes
1 parent 1deb41b commit 70f51e7

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
};
@@ -1889,9 +1880,7 @@ default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
18891880
{"vacuum_index_cleanup", RELOPT_TYPE_ENUM,
18901881
offsetof(StdRdOptions, vacuum_index_cleanup)},
18911882
{"vacuum_truncate", RELOPT_TYPE_BOOL,
1892-
offsetof(StdRdOptions, vacuum_truncate)},
1893-
{"reduce_fpi", RELOPT_TYPE_BOOL,
1894-
offsetof(StdRdOptions, reduce_fpi)}
1883+
offsetof(StdRdOptions, vacuum_truncate)}
18951884
};
18961885

18971886
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
@@ -2165,8 +2165,7 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid,
21652165
* write the whole page to the xlog, we don't need to store
21662166
* xl_heap_header in the xlog.
21672167
*/
2168-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD | bufflags,
2169-
relation);
2168+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD | bufflags);
21702169
XLogRegisterBufData(0, (char *) &xlhdr, SizeOfNeonHeapHeader);
21712170
/* PG73FORMAT: write bitmap [+ padding] [+ oid] + data */
21722171
XLogRegisterBufData(0,
@@ -3077,7 +3076,7 @@ heap_delete(Relation relation, ItemPointer tid,
30773076
XLogBeginInsert();
30783077
XLogRegisterData((char *) &xlrec, SizeOfNeonHeapDelete);
30793078

3080-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
3079+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
30813080

30823081
/*
30833082
* Log replica identity of the deleted tuple if there is one
@@ -3847,7 +3846,7 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
38473846
XLogRecPtr recptr;
38483847

38493848
XLogBeginInsert();
3850-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
3849+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
38513850

38523851
xlrec.offnum = ItemPointerGetOffsetNumber(&oldtup.t_self);
38533852
xlrec.xmax = xmax_lock_old_tuple;
@@ -5180,7 +5179,7 @@ heap_lock_tuple(Relation relation, HeapTuple tuple,
51805179
XLogRecPtr recptr;
51815180

51825181
XLogBeginInsert();
5183-
XLogRegisterBufferForRelation(0, *buffer, REGBUF_STANDARD, relation);
5182+
XLogRegisterBuffer(0, *buffer, REGBUF_STANDARD);
51845183

51855184
xlrec.offnum = ItemPointerGetOffsetNumber(&tuple->t_self);
51865185
xlrec.xmax = xid;
@@ -5933,7 +5932,7 @@ heap_lock_updated_tuple_rec(Relation rel, ItemPointer tid, TransactionId xid,
59335932
Page page = BufferGetPage(buf);
59345933

59355934
XLogBeginInsert();
5936-
XLogRegisterBufferForRelation(0, buf, REGBUF_STANDARD, rel);
5935+
XLogRegisterBuffer(0, buf, REGBUF_STANDARD);
59375936

59385937
xlrec.offnum = ItemPointerGetOffsetNumber(&mytup.t_self);
59395938
xlrec.xmax = new_xmax;
@@ -6095,7 +6094,7 @@ heap_finish_speculative(Relation relation, ItemPointer tid)
60956094
XLogSetRecordFlags(XLOG_INCLUDE_ORIGIN);
60966095

60976096
XLogRegisterData((char *) &xlrec, SizeOfHeapConfirm);
6098-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6097+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
60996098

61006099
recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_CONFIRM);
61016100

@@ -6252,7 +6251,7 @@ heap_abort_speculative(Relation relation, ItemPointer tid)
62526251

62536252
XLogBeginInsert();
62546253
XLogRegisterData((char *) &xlrec, SizeOfNeonHeapDelete);
6255-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6254+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
62566255

62576256
/* No replica identity & replication origin logged */
62586257

@@ -6496,7 +6495,7 @@ heap_inplace_update_and_unlock(Relation relation,
64966495
XLogBeginInsert();
64976496
XLogRegisterData((char *) &xlrec, SizeOfHeapInplace);
64986497

6499-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6498+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
65006499
XLogRegisterBufData(0, (char *) htup + htup->t_hoff, newlen);
65016500

65026501
/* inplace updates aren't decoded atm, don't log the origin */
@@ -6599,7 +6598,7 @@ heap_inplace_update(Relation relation, HeapTuple tuple)
65996598
XLogBeginInsert();
66006599
XLogRegisterData((char *) &xlrec, SizeOfHeapInplace);
66016600

6602-
XLogRegisterBufferForRelation(0, buffer, REGBUF_STANDARD, relation);
6601+
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
66036602
XLogRegisterBufData(0, (char *) htup + htup->t_hoff, newlen);
66046603

66056604
/* inplace updates aren't decoded atm, don't log the origin */
@@ -8821,7 +8820,7 @@ log_heap_visible(Relation rel, Buffer heap_buffer, Buffer vm_buffer,
88218820
flags = REGBUF_STANDARD;
88228821
if (!XLogHintBitIsNeeded())
88238822
flags |= REGBUF_NO_IMAGE;
8824-
XLogRegisterBufferForRelation(1, heap_buffer, flags, rel);
8823+
XLogRegisterBuffer(1, heap_buffer, flags);
88258824

88268825
recptr = XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_VISIBLE);
88278826

@@ -8962,11 +8961,9 @@ log_heap_update(Relation reln, Buffer oldbuf,
89628961
if (need_tuple_data)
89638962
bufflags |= REGBUF_KEEP_DATA;
89648963

8965-
XLogRegisterBufferForRelation(0, newbuf, bufflags, reln);
8964+
XLogRegisterBuffer(0, newbuf, bufflags);
89668965
if (oldbuf != newbuf)
8967-
{
8968-
XLogRegisterBufferForRelation(1, oldbuf, REGBUF_STANDARD, reln);
8969-
}
8966+
XLogRegisterBuffer(1, oldbuf, REGBUF_STANDARD);
89708967

89718968
XLogRegisterData((char *) &xlrec, SizeOfNeonHeapUpdate);
89728969

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);
@@ -15020,51 +15019,6 @@ ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, const char *tablespacen
1502015019
tab->newTableSpace = tablespaceId;
1502115020
}
1502215021

15023-
/*
15024-
* InvalidateReduceFPIChildren
15025-
*
15026-
* When reduce_fpi changes on a heap table, invalidate relcache entries for
15027-
* all child relations (indexes and toast tables) so they re-derive the new
15028-
* value from the parent.
15029-
*/
15030-
static void
15031-
InvalidateReduceFPIChildren(Relation rel)
15032-
{
15033-
List *indexoidlist;
15034-
ListCell *indexoidscan;
15035-
15036-
/* Invalidate all indexes on this relation */
15037-
indexoidlist = RelationGetIndexList(rel);
15038-
foreach(indexoidscan, indexoidlist)
15039-
{
15040-
Oid indexoid = lfirst_oid(indexoidscan);
15041-
15042-
CacheInvalidateRelcacheByRelid(indexoid);
15043-
}
15044-
list_free(indexoidlist);
15045-
15046-
/* Invalidate toast table and its indexes */
15047-
if (OidIsValid(rel->rd_rel->reltoastrelid))
15048-
{
15049-
Oid toastrelid = rel->rd_rel->reltoastrelid;
15050-
Relation toastrel;
15051-
15052-
CacheInvalidateRelcacheByRelid(toastrelid);
15053-
15054-
/* Also invalidate toast table's indexes */
15055-
toastrel = table_open(toastrelid, AccessShareLock);
15056-
indexoidlist = RelationGetIndexList(toastrel);
15057-
foreach(indexoidscan, indexoidlist)
15058-
{
15059-
Oid indexoid = lfirst_oid(indexoidscan);
15060-
15061-
CacheInvalidateRelcacheByRelid(indexoid);
15062-
}
15063-
list_free(indexoidlist);
15064-
table_close(toastrel, AccessShareLock);
15065-
}
15066-
}
15067-
1506815022
/*
1506915023
* Set, reset, or replace reloptions.
1507015024
*/
@@ -15203,36 +15157,6 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
1520315157

1520415158
ReleaseSysCache(tuple);
1520515159

15206-
/*
15207-
* If this is a heap relation and reduce_fpi was changed, invalidate
15208-
* relcache for all indexes and toast relations so they pick up the new
15209-
* value in their rd_reduce_fpi field.
15210-
*/
15211-
/*
15212-
* For regular tables, if reduce_fpi changed, we need to invalidate
15213-
* child relations (indexes and toast) so they re-derive the new value.
15214-
*/
15215-
if (rel->rd_rel->relkind == RELKIND_RELATION)
15216-
{
15217-
ListCell *cell;
15218-
bool reduce_fpi_changed = false;
15219-
15220-
/* Check if reduce_fpi was in the ALTER statement */
15221-
foreach(cell, defList)
15222-
{
15223-
DefElem *defel = (DefElem *) lfirst(cell);
15224-
15225-
if (strcmp(defel->defname, "reduce_fpi") == 0)
15226-
{
15227-
reduce_fpi_changed = true;
15228-
break;
15229-
}
15230-
}
15231-
15232-
if (reduce_fpi_changed)
15233-
InvalidateReduceFPIChildren(rel);
15234-
}
15235-
1523615160
/* repeat the whole exercise for the toast table, if there's one */
1523715161
if (OidIsValid(rel->rd_rel->reltoastrelid))
1523815162
{

0 commit comments

Comments
 (0)