diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/access/gin.h | 3 | ||||
-rw-r--r-- | src/include/access/ginxlog.h | 2 | ||||
-rw-r--r-- | src/include/access/gist.h | 7 | ||||
-rw-r--r-- | src/include/access/gist_private.h | 7 | ||||
-rw-r--r-- | src/include/access/gistxlog.h | 2 | ||||
-rw-r--r-- | src/include/access/spgxlog.h | 2 | ||||
-rw-r--r-- | src/include/access/xlogdefs.h | 7 | ||||
-rw-r--r-- | src/include/access/xloginsert.h | 3 |
8 files changed, 26 insertions, 7 deletions
diff --git a/src/include/access/gin.h b/src/include/access/gin.h index 61fa6970395..4f0fa037827 100644 --- a/src/include/access/gin.h +++ b/src/include/access/gin.h @@ -71,6 +71,7 @@ extern int gin_pending_list_limit; /* ginutil.c */ extern void ginGetStats(Relation index, GinStatsData *stats); -extern void ginUpdateStats(Relation index, const GinStatsData *stats); +extern void ginUpdateStats(Relation index, const GinStatsData *stats, + bool is_build); #endif /* GIN_H */ diff --git a/src/include/access/ginxlog.h b/src/include/access/ginxlog.h index 9bd4e0b9baa..2c5d743cace 100644 --- a/src/include/access/ginxlog.h +++ b/src/include/access/ginxlog.h @@ -16,8 +16,6 @@ #include "lib/stringinfo.h" #include "storage/off.h" -#define XLOG_GIN_CREATE_INDEX 0x00 - #define XLOG_GIN_CREATE_PTREE 0x10 typedef struct ginxlogCreatePostingTree diff --git a/src/include/access/gist.h b/src/include/access/gist.h index ce8bfd83ea4..6902f4115b7 100644 --- a/src/include/access/gist.h +++ b/src/include/access/gist.h @@ -50,6 +50,13 @@ typedef XLogRecPtr GistNSN; /* + * A bogus LSN / NSN value used during index build. Must be smaller than any + * real or fake unlogged LSN, so that after an index build finishes, all the + * splits are considered completed. + */ +#define GistBuildLSN ((XLogRecPtr) 1) + +/* * For on-disk compatibility with pre-9.3 servers, NSN is stored as two * 32-bit fields on disk, same as LSNs. */ diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h index 02dc285a78a..78e2e3fb312 100644 --- a/src/include/access/gist_private.h +++ b/src/include/access/gist_private.h @@ -244,6 +244,7 @@ typedef struct Relation r; Relation heapRel; Size freespace; /* free space to be left */ + bool is_build; GISTInsertStack *stack; } GISTInsertState; @@ -393,7 +394,8 @@ extern void gistdoinsert(Relation r, IndexTuple itup, Size freespace, GISTSTATE *GISTstate, - Relation heapRel); + Relation heapRel, + bool is_build); /* A List of these is returned from gistplacetopage() in *splitinfo */ typedef struct @@ -409,7 +411,8 @@ extern bool gistplacetopage(Relation rel, Size freespace, GISTSTATE *giststate, Buffer leftchildbuf, List **splitinfo, bool markleftchild, - Relation heapRel); + Relation heapRel, + bool is_build); extern SplitedPageLayout *gistSplit(Relation r, Page page, IndexTuple *itup, int len, GISTSTATE *giststate); diff --git a/src/include/access/gistxlog.h b/src/include/access/gistxlog.h index 2f87b67a53a..9990d97cbd3 100644 --- a/src/include/access/gistxlog.h +++ b/src/include/access/gistxlog.h @@ -23,7 +23,7 @@ * FSM */ #define XLOG_GIST_PAGE_SPLIT 0x30 /* #define XLOG_GIST_INSERT_COMPLETE 0x40 */ /* not used anymore */ -#define XLOG_GIST_CREATE_INDEX 0x50 + /* #define XLOG_GIST_CREATE_INDEX 0x50 */ /* not used anymore */ #define XLOG_GIST_PAGE_DELETE 0x60 /* diff --git a/src/include/access/spgxlog.h b/src/include/access/spgxlog.h index 6527fc9eb14..ee8fc6fd6b2 100644 --- a/src/include/access/spgxlog.h +++ b/src/include/access/spgxlog.h @@ -18,7 +18,7 @@ #include "storage/off.h" /* XLOG record types for SPGiST */ -#define XLOG_SPGIST_CREATE_INDEX 0x00 +/* #define XLOG_SPGIST_CREATE_INDEX 0x00 */ /* not used anymore */ #define XLOG_SPGIST_ADD_LEAF 0x10 #define XLOG_SPGIST_MOVE_LEAFS 0x20 #define XLOG_SPGIST_ADD_NODE 0x30 diff --git a/src/include/access/xlogdefs.h b/src/include/access/xlogdefs.h index 383968c4e3f..cadecab721c 100644 --- a/src/include/access/xlogdefs.h +++ b/src/include/access/xlogdefs.h @@ -29,6 +29,13 @@ typedef uint64 XLogRecPtr; #define XLogRecPtrIsInvalid(r) ((r) == InvalidXLogRecPtr) /* + * First LSN to use for "fake" LSNs. + * + * Values smaller than this can be used for special per-AM purposes. + */ +#define FirstNormalUnloggedLSN ((XLogRecPtr) 1000) + +/* * XLogSegNo - physical log file sequence number. */ typedef uint64 XLogSegNo; diff --git a/src/include/access/xloginsert.h b/src/include/access/xloginsert.h index e16257228ac..30c4ff7bea1 100644 --- a/src/include/access/xloginsert.h +++ b/src/include/access/xloginsert.h @@ -16,6 +16,7 @@ #include "storage/block.h" #include "storage/buf.h" #include "storage/relfilenode.h" +#include "utils/relcache.h" /* * The minimum size of the WAL construction working area. If you need to @@ -54,6 +55,8 @@ extern bool XLogCheckBufferNeedsBackup(Buffer buffer); extern XLogRecPtr log_newpage(RelFileNode *rnode, ForkNumber forkNum, BlockNumber blk, char *page, bool page_std); extern XLogRecPtr log_newpage_buffer(Buffer buffer, bool page_std); +extern void log_newpage_range(Relation rel, ForkNumber forkNum, + BlockNumber startblk, BlockNumber endblk, bool page_std); extern XLogRecPtr XLogSaveBufferForHint(Buffer buffer, bool buffer_std); extern void InitXLogInsert(void); |