diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/access/gist_private.h | 2 | ||||
| -rw-r--r-- | src/include/access/gistxlog.h | 1 | ||||
| -rw-r--r-- | src/include/access/heapam.h | 1 | ||||
| -rw-r--r-- | src/include/access/rewriteheap.h | 2 | ||||
| -rw-r--r-- | src/include/catalog/storage.h | 6 | ||||
| -rw-r--r-- | src/include/nodes/parsenodes.h | 3 | ||||
| -rw-r--r-- | src/include/storage/bufmgr.h | 4 | ||||
| -rw-r--r-- | src/include/storage/lock.h | 3 | ||||
| -rw-r--r-- | src/include/storage/smgr.h | 1 | ||||
| -rw-r--r-- | src/include/utils/rel.h | 57 | ||||
| -rw-r--r-- | src/include/utils/relcache.h | 8 |
11 files changed, 17 insertions, 71 deletions
diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h index 355572d3f7e..41f496c2580 100644 --- a/src/include/access/gist_private.h +++ b/src/include/access/gist_private.h @@ -425,8 +425,6 @@ extern XLogRecPtr gistXLogSplit(bool page_is_leaf, BlockNumber origrlink, GistNSN oldnsn, Buffer leftchild, bool markfollowright); -extern XLogRecPtr gistXLogAssignLSN(void); - /* gistget.c */ extern bool gistgettuple(IndexScanDesc scan, ScanDirection dir); extern int64 gistgetbitmap(IndexScanDesc scan, TIDBitmap *tbm); diff --git a/src/include/access/gistxlog.h b/src/include/access/gistxlog.h index 9ff3dee5198..1a2b9496d0d 100644 --- a/src/include/access/gistxlog.h +++ b/src/include/access/gistxlog.h @@ -23,7 +23,6 @@ /* #define XLOG_GIST_INSERT_COMPLETE 0x40 */ /* not used anymore */ #define XLOG_GIST_CREATE_INDEX 0x50 /* #define XLOG_GIST_PAGE_DELETE 0x60 */ /* not used anymore */ -#define XLOG_GIST_ASSIGN_LSN 0x70 /* nop, assign new LSN */ /* * Backup Blk 0: updated page. diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index 96b8466a204..40e153f71ad 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -25,6 +25,7 @@ /* "options" flag bits for heap_insert */ +#define HEAP_INSERT_SKIP_WAL 0x0001 #define HEAP_INSERT_SKIP_FSM 0x0002 #define HEAP_INSERT_FROZEN 0x0004 #define HEAP_INSERT_SPECULATIVE 0x0008 diff --git a/src/include/access/rewriteheap.h b/src/include/access/rewriteheap.h index c3cc36897bc..6d7f669cbca 100644 --- a/src/include/access/rewriteheap.h +++ b/src/include/access/rewriteheap.h @@ -23,7 +23,7 @@ typedef struct RewriteStateData *RewriteState; extern RewriteState begin_heap_rewrite(Relation OldHeap, Relation NewHeap, TransactionId OldestXmin, TransactionId FreezeXid, - MultiXactId MultiXactCutoff); + MultiXactId MultiXactCutoff, bool use_wal); extern void end_heap_rewrite(RewriteState state); extern void rewrite_heap_tuple(RewriteState state, HeapTuple oldTuple, HeapTuple newTuple); diff --git a/src/include/catalog/storage.h b/src/include/catalog/storage.h index cb7a42ba395..ef52d858038 100644 --- a/src/include/catalog/storage.h +++ b/src/include/catalog/storage.h @@ -18,22 +18,16 @@ #include "storage/relfilenode.h" #include "utils/relcache.h" -/* GUC variables */ -extern int wal_skip_threshold; - extern void RelationCreateStorage(RelFileNode rnode, char relpersistence); extern void RelationDropStorage(Relation rel); extern void RelationPreserveStorage(RelFileNode rnode, bool atCommit); -extern void RelationPreTruncate(Relation rel); extern void RelationTruncate(Relation rel, BlockNumber nblocks); -extern bool RelFileNodeSkippingWAL(RelFileNode rnode); /* * These functions used to be in storage/smgr/smgr.c, which explains the * naming */ extern void smgrDoPendingDeletes(bool isCommit); -extern void smgrDoPendingSyncs(bool isCommit); extern int smgrGetPendingDeletes(bool forCommit, RelFileNode **ptr); extern void AtSubCommit_smgr(void); extern void AtSubAbort_smgr(void); diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 42acb722ae3..62d3683be5e 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -2738,9 +2738,6 @@ typedef struct IndexStmt bool transformed; /* true when transformIndexStmt is finished */ bool concurrent; /* should this be a concurrent index build? */ bool if_not_exists; /* just do nothing if index already exists? */ - SubTransactionId oldCreateSubid; /* rd_createSubid of oldNode */ - SubTransactionId oldFirstRelfilenodeSubid; /* rd_firstRelfilenodeSubid of - * oldNode */ } IndexStmt; /* ---------------------- diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h index 7a11c241a83..3cce3906a0e 100644 --- a/src/include/storage/bufmgr.h +++ b/src/include/storage/bufmgr.h @@ -50,9 +50,6 @@ typedef enum /* forward declared, to avoid having to expose buf_internals.h here */ struct WritebackContext; -/* forward declared, to avoid including smgr.h here */ -struct SMgrRelationData; - /* in globals.c ... this duplicates miscadmin.h */ extern PGDLLIMPORT int NBuffers; @@ -193,7 +190,6 @@ extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation, ForkNumber forkNum); extern void FlushOneBuffer(Buffer buffer); extern void FlushRelationBuffers(Relation rel); -extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels); extern void FlushDatabaseBuffers(Oid dbid); extern void DropRelFileNodeBuffers(RelFileNodeBackend rnode, ForkNumber forkNum, BlockNumber firstDelBlock); diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index 57863722ce2..ff4df7fec51 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -540,9 +540,6 @@ extern void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks); extern void LockReleaseSession(LOCKMETHODID lockmethodid); extern void LockReleaseCurrentOwner(LOCALLOCK **locallocks, int nlocks); extern void LockReassignCurrentOwner(LOCALLOCK **locallocks, int nlocks); -#ifdef USE_ASSERT_CHECKING -extern HTAB *GetLockMethodLocalHash(void); -#endif extern bool LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock); extern VirtualTransactionId *GetLockConflicts(const LOCKTAG *locktag, diff --git a/src/include/storage/smgr.h b/src/include/storage/smgr.h index af2e96525dd..0298ed1a2bc 100644 --- a/src/include/storage/smgr.h +++ b/src/include/storage/smgr.h @@ -91,7 +91,6 @@ extern void smgrcloseall(void); extern void smgrclosenode(RelFileNodeBackend rnode); extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo); extern void smgrdounlink(SMgrRelation reln, bool isRedo); -extern void smgrdosyncall(SMgrRelation *rels, int nrels); extern void smgrdounlinkall(SMgrRelation *rels, int nrels, bool isRedo); extern void smgrdounlinkfork(SMgrRelation reln, ForkNumber forknum, bool isRedo); extern void smgrextend(SMgrRelation reln, ForkNumber forknum, diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index f02d2b561b9..11a635964fd 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -66,43 +66,25 @@ typedef struct RelationData /*---------- * rd_createSubid is the ID of the highest subtransaction the rel has - * survived into or zero if the rel or its rd_node was created before the - * current top transaction. (IndexStmt.oldNode leads to the case of a new - * rel with an old rd_node.) rd_firstRelfilenodeSubid is the ID of the - * highest subtransaction an rd_node change has survived into or zero if - * rd_node matches the value it had at the start of the current top - * transaction. (Rolling back the subtransaction that - * rd_firstRelfilenodeSubid denotes would restore rd_node to the value it - * had at the start of the current top transaction. Rolling back any - * lower subtransaction would not.) Their accuracy is critical to - * RelationNeedsWAL(). - * - * rd_newRelfilenodeSubid is the ID of the highest subtransaction the - * most-recent relfilenode change has survived into or zero if not changed - * in the current transaction (or we have forgotten changing it). This - * field is accurate when non-zero, but it can be zero when a relation has - * multiple new relfilenodes within a single transaction, with one of them - * occurring in a subsequently aborted subtransaction, e.g. + * survived into; or zero if the rel was not created in the current top + * transaction. This can be now be relied on, whereas previously it could + * be "forgotten" in earlier releases. Likewise, rd_newRelfilenodeSubid is + * the ID of the highest subtransaction the relfilenode change has + * survived into, or zero if not changed in the current transaction (or we + * have forgotten changing it). rd_newRelfilenodeSubid can be forgotten + * when a relation has multiple new relfilenodes within a single + * transaction, with one of them occurring in a subsequently aborted + * subtransaction, e.g. * BEGIN; * TRUNCATE t; * SAVEPOINT save; * TRUNCATE t; * ROLLBACK TO save; * -- rd_newRelfilenodeSubid is now forgotten - * - * If every rd_*Subid field is zero, they are read-only outside - * relcache.c. Files that trigger rd_node changes by updating - * pg_class.reltablespace and/or pg_class.relfilenode call - * RelationAssumeNewRelfilenode() to update rd_*Subid. - * - * rd_droppedSubid is the ID of the highest subtransaction that a drop of - * the rel has survived into. In entries visible outside relcache.c, this - * is always zero. */ SubTransactionId rd_createSubid; /* rel was created in current xact */ - SubTransactionId rd_newRelfilenodeSubid; /* highest subxact changing - * rd_node to current value */ - /* see end for rd_firstRelfilenodeSubid and rd_droppedSubid */ + SubTransactionId rd_newRelfilenodeSubid; /* new relfilenode assigned in + * current xact */ Form_pg_class rd_rel; /* RELATION tuple */ TupleDesc rd_att; /* tuple descriptor */ @@ -215,10 +197,6 @@ typedef struct RelationData /* placed here to avoid ABI break before v12: */ bool rd_partcheckvalid; /* true if list has been computed */ MemoryContext rd_partcheckcxt; /* private cxt for rd_partcheck, if any */ - - SubTransactionId rd_firstRelfilenodeSubid; /* highest subxact changing - * rd_node to any value */ - SubTransactionId rd_droppedSubid; /* dropped with another Subid set */ } RelationData; @@ -538,16 +516,9 @@ typedef struct ViewOptions /* * RelationNeedsWAL * True if relation needs WAL. - * - * Returns false if wal_level = minimal and this relation is created or - * truncated in the current transaction. See "Skipping WAL for New - * RelFileNode" in src/backend/access/transam/README. - */ -#define RelationNeedsWAL(relation) \ - ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT && \ - (XLogIsNeeded() || \ - (relation->rd_createSubid == InvalidSubTransactionId && \ - relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId))) + */ +#define RelationNeedsWAL(relation) \ + ((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT) /* * RelationUsesLocalBuffers diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h index 50005f91667..54394303a85 100644 --- a/src/include/utils/relcache.h +++ b/src/include/utils/relcache.h @@ -108,11 +108,10 @@ extern Relation RelationBuildLocalRelation(const char *relname, char relkind); /* - * Routines to manage assignment of new relfilenode to a relation + * Routine to manage assignment of new relfilenode to a relation */ extern void RelationSetNewRelfilenode(Relation relation, char persistence, TransactionId freezeXid, MultiXactId minmulti); -extern void RelationAssumeNewRelfilenode(Relation relation); /* * Routines for flushing/rebuilding relcache entries in various scenarios @@ -125,11 +124,6 @@ extern void RelationCacheInvalidate(void); extern void RelationCloseSmgrByOid(Oid relationId); -#ifdef USE_ASSERT_CHECKING -extern void AssertPendingSyncs_RelationCache(void); -#else -#define AssertPendingSyncs_RelationCache() do {} while (0) -#endif extern void AtEOXact_RelationCache(bool isCommit); extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid); |
