mirror of
https://github.com/postgres/postgres.git
synced 2025-08-21 10:42:50 +03:00
Revert "Skip WAL for new relfilenodes, under wal_level=minimal."
This reverts commit cb2fd7eac2
. Per
numerous buildfarm members, it was incompatible with parallel query, and
a test case assumed LP64. Back-patch to 9.5 (all supported versions).
Discussion: https://postgr.es/m/20200321224920.GB1763544@rfd.leadboat.com
This commit is contained in:
@@ -448,8 +448,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);
|
||||
|
@@ -26,7 +26,6 @@
|
||||
/* #define XLOG_GIST_INSERT_COMPLETE 0x40 */ /* not used anymore */
|
||||
/* #define XLOG_GIST_CREATE_INDEX 0x50 */ /* not used anymore */
|
||||
#define XLOG_GIST_PAGE_DELETE 0x60
|
||||
#define XLOG_GIST_ASSIGN_LSN 0x70 /* nop, assign new LSN */
|
||||
|
||||
/*
|
||||
* Backup Blk 0: updated page.
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
|
||||
/* "options" flag bits for heap_insert */
|
||||
#define HEAP_INSERT_SKIP_WAL TABLE_INSERT_SKIP_WAL
|
||||
#define HEAP_INSERT_SKIP_FSM TABLE_INSERT_SKIP_FSM
|
||||
#define HEAP_INSERT_FROZEN TABLE_INSERT_FROZEN
|
||||
#define HEAP_INSERT_NO_LOGICAL TABLE_INSERT_NO_LOGICAL
|
||||
|
@@ -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);
|
||||
|
@@ -128,7 +128,7 @@ typedef struct TM_FailureData
|
||||
} TM_FailureData;
|
||||
|
||||
/* "options" flag bits for table_tuple_insert */
|
||||
/* TABLE_INSERT_SKIP_WAL was 0x0001; RelationNeedsWAL() now governs */
|
||||
#define TABLE_INSERT_SKIP_WAL 0x0001
|
||||
#define TABLE_INSERT_SKIP_FSM 0x0002
|
||||
#define TABLE_INSERT_FROZEN 0x0004
|
||||
#define TABLE_INSERT_NO_LOGICAL 0x0008
|
||||
@@ -410,8 +410,9 @@ typedef struct TableAmRoutine
|
||||
|
||||
/*
|
||||
* Perform operations necessary to complete insertions made via
|
||||
* tuple_insert and multi_insert with a BulkInsertState specified. In-tree
|
||||
* access methods ceased to use this.
|
||||
* tuple_insert and multi_insert with a BulkInsertState specified. This
|
||||
* may for example be used to flush the relation, when the
|
||||
* TABLE_INSERT_SKIP_WAL option was used.
|
||||
*
|
||||
* Typically callers of tuple_insert and multi_insert will just pass all
|
||||
* the flags that apply to them, and each AM has to decide which of them
|
||||
@@ -1100,6 +1101,10 @@ table_compute_xid_horizon_for_tuples(Relation rel,
|
||||
* The options bitmask allows the caller to specify options that may change the
|
||||
* behaviour of the AM. The AM will ignore options that it does not support.
|
||||
*
|
||||
* If the TABLE_INSERT_SKIP_WAL option is specified, the new tuple doesn't
|
||||
* need to be logged to WAL, even for a non-temp relation. It is the AMs
|
||||
* choice whether this optimization is supported.
|
||||
*
|
||||
* If the TABLE_INSERT_SKIP_FSM option is specified, AMs are free to not reuse
|
||||
* free space in the relation. This can save some cycles when we know the
|
||||
* relation is new and doesn't contain useful amounts of free space.
|
||||
@@ -1319,7 +1324,9 @@ table_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot,
|
||||
|
||||
/*
|
||||
* Perform operations necessary to complete insertions made via
|
||||
* tuple_insert and multi_insert with a BulkInsertState specified.
|
||||
* tuple_insert and multi_insert with a BulkInsertState specified. This
|
||||
* e.g. may e.g. used to flush the relation when inserting with
|
||||
* TABLE_INSERT_SKIP_WAL specified.
|
||||
*/
|
||||
static inline void
|
||||
table_finish_bulk_insert(Relation rel, int options)
|
||||
|
Reference in New Issue
Block a user