mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Standard pgindent run for 8.1.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/genam.h,v 1.52 2005/06/13 23:14:48 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/genam.h,v 1.53 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -82,8 +82,8 @@ extern IndexScanDesc index_beginscan(Relation heapRelation,
|
||||
Snapshot snapshot,
|
||||
int nkeys, ScanKey key);
|
||||
extern IndexScanDesc index_beginscan_multi(Relation indexRelation,
|
||||
Snapshot snapshot,
|
||||
int nkeys, ScanKey key);
|
||||
Snapshot snapshot,
|
||||
int nkeys, ScanKey key);
|
||||
extern void index_rescan(IndexScanDesc scan, ScanKey key);
|
||||
extern void index_endscan(IndexScanDesc scan);
|
||||
extern void index_markpos(IndexScanDesc scan);
|
||||
@@ -92,8 +92,8 @@ extern HeapTuple index_getnext(IndexScanDesc scan, ScanDirection direction);
|
||||
extern bool index_getnext_indexitem(IndexScanDesc scan,
|
||||
ScanDirection direction);
|
||||
extern bool index_getmulti(IndexScanDesc scan,
|
||||
ItemPointer tids, int32 max_tids,
|
||||
int32 *returned_tids);
|
||||
ItemPointer tids, int32 max_tids,
|
||||
int32 *returned_tids);
|
||||
|
||||
extern IndexBulkDeleteResult *index_bulk_delete(Relation indexRelation,
|
||||
IndexBulkDeleteCallback callback,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/gist.h,v 1.49 2005/06/30 17:52:14 teodor Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/gist.h,v 1.50 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -45,11 +45,12 @@ typedef XLogRecPtr GistNSN;
|
||||
|
||||
typedef struct GISTPageOpaqueData
|
||||
{
|
||||
uint32 flags; /* 29 bits are unused for now */
|
||||
BlockNumber rightlink;
|
||||
uint32 flags; /* 29 bits are unused for now */
|
||||
BlockNumber rightlink;
|
||||
|
||||
/* the only meaning - change this value if
|
||||
page split. */
|
||||
/*
|
||||
* the only meaning - change this value if page split.
|
||||
*/
|
||||
GistNSN nsn;
|
||||
} GISTPageOpaqueData;
|
||||
|
||||
@@ -99,19 +100,19 @@ typedef struct GISTENTRY
|
||||
bool leafkey;
|
||||
} GISTENTRY;
|
||||
|
||||
#define GistPageGetOpaque(page) ( (GISTPageOpaque) PageGetSpecialPointer(page) )
|
||||
#define GistPageGetOpaque(page) ( (GISTPageOpaque) PageGetSpecialPointer(page) )
|
||||
|
||||
#define GistPageIsLeaf(page) ( GistPageGetOpaque(page)->flags & F_LEAF)
|
||||
#define GIST_LEAF(entry) (GistPageIsLeaf((entry)->page))
|
||||
#define GistPageSetLeaf(page) ( GistPageGetOpaque(page)->flags |= F_LEAF)
|
||||
#define GistPageSetNonLeaf(page) ( GistPageGetOpaque(page)->flags &= ~F_LEAF)
|
||||
#define GistPageSetNonLeaf(page) ( GistPageGetOpaque(page)->flags &= ~F_LEAF)
|
||||
|
||||
#define GistPageIsDeleted(page) ( GistPageGetOpaque(page)->flags & F_DELETED)
|
||||
#define GistPageIsDeleted(page) ( GistPageGetOpaque(page)->flags & F_DELETED)
|
||||
#define GistPageSetDeleted(page) ( GistPageGetOpaque(page)->flags |= F_DELETED)
|
||||
#define GistPageSetNonDeleted(page) ( GistPageGetOpaque(page)->flags &= ~F_DELETED)
|
||||
#define GistPageSetNonDeleted(page) ( GistPageGetOpaque(page)->flags &= ~F_DELETED)
|
||||
|
||||
#define GistTuplesDeleted(page) ( GistPageGetOpaque(page)->flags & F_TUPLES_DELETED)
|
||||
#define GistMarkTuplesDeleted(page) ( GistPageGetOpaque(page)->flags |= F_TUPLES_DELETED)
|
||||
#define GistTuplesDeleted(page) ( GistPageGetOpaque(page)->flags & F_TUPLES_DELETED)
|
||||
#define GistMarkTuplesDeleted(page) ( GistPageGetOpaque(page)->flags |= F_TUPLES_DELETED)
|
||||
#define GistClearTuplesDeleted(page) ( GistPageGetOpaque(page)->flags &= ~F_TUPLES_DELETED)
|
||||
|
||||
/*
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/gist_private.h,v 1.7 2005/06/30 17:52:14 teodor Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/gist_private.h,v 1.8 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "access/xlogdefs.h"
|
||||
#include "fmgr.h"
|
||||
|
||||
#define GIST_UNLOCK BUFFER_LOCK_UNLOCK
|
||||
#define GIST_UNLOCK BUFFER_LOCK_UNLOCK
|
||||
#define GIST_SHARE BUFFER_LOCK_SHARE
|
||||
#define GIST_EXCLUSIVE BUFFER_LOCK_EXCLUSIVE
|
||||
|
||||
@@ -66,80 +66,83 @@ typedef struct GISTSTATE
|
||||
*/
|
||||
typedef struct GISTScanOpaqueData
|
||||
{
|
||||
GISTSearchStack *stack;
|
||||
GISTSearchStack *markstk;
|
||||
uint16 flags;
|
||||
GISTSTATE *giststate;
|
||||
MemoryContext tempCxt;
|
||||
Buffer curbuf;
|
||||
Buffer markbuf;
|
||||
GISTSearchStack *stack;
|
||||
GISTSearchStack *markstk;
|
||||
uint16 flags;
|
||||
GISTSTATE *giststate;
|
||||
MemoryContext tempCxt;
|
||||
Buffer curbuf;
|
||||
Buffer markbuf;
|
||||
} GISTScanOpaqueData;
|
||||
|
||||
typedef GISTScanOpaqueData *GISTScanOpaque;
|
||||
|
||||
/* XLog stuff */
|
||||
extern const XLogRecPtr XLogRecPtrForTemp;
|
||||
extern const XLogRecPtr XLogRecPtrForTemp;
|
||||
|
||||
#define XLOG_GIST_ENTRY_UPDATE 0x00
|
||||
#define XLOG_GIST_ENTRY_DELETE 0x10
|
||||
#define XLOG_GIST_ENTRY_UPDATE 0x00
|
||||
#define XLOG_GIST_ENTRY_DELETE 0x10
|
||||
#define XLOG_GIST_NEW_ROOT 0x20
|
||||
|
||||
typedef struct gistxlogEntryUpdate {
|
||||
RelFileNode node;
|
||||
BlockNumber blkno;
|
||||
typedef struct gistxlogEntryUpdate
|
||||
{
|
||||
RelFileNode node;
|
||||
BlockNumber blkno;
|
||||
|
||||
uint16 ntodelete;
|
||||
bool isemptypage;
|
||||
bool isemptypage;
|
||||
|
||||
/*
|
||||
* It used to identify completeness of insert.
|
||||
* Sets to leaf itup
|
||||
*/
|
||||
ItemPointerData key;
|
||||
/*
|
||||
* It used to identify completeness of insert. Sets to leaf itup
|
||||
*/
|
||||
ItemPointerData key;
|
||||
|
||||
/* follow:
|
||||
* 1. todelete OffsetNumbers
|
||||
* 2. tuples to insert
|
||||
*/
|
||||
/*
|
||||
* follow: 1. todelete OffsetNumbers 2. tuples to insert
|
||||
*/
|
||||
} gistxlogEntryUpdate;
|
||||
|
||||
#define XLOG_GIST_PAGE_SPLIT 0x30
|
||||
|
||||
typedef struct gistxlogPageSplit {
|
||||
RelFileNode node;
|
||||
BlockNumber origblkno; /*splitted page*/
|
||||
typedef struct gistxlogPageSplit
|
||||
{
|
||||
RelFileNode node;
|
||||
BlockNumber origblkno; /* splitted page */
|
||||
uint16 npage;
|
||||
|
||||
/* see comments on gistxlogEntryUpdate */
|
||||
ItemPointerData key;
|
||||
|
||||
/* follow:
|
||||
* 1. gistxlogPage and array of IndexTupleData per page
|
||||
*/
|
||||
ItemPointerData key;
|
||||
|
||||
/*
|
||||
* follow: 1. gistxlogPage and array of IndexTupleData per page
|
||||
*/
|
||||
} gistxlogPageSplit;
|
||||
|
||||
#define XLOG_GIST_INSERT_COMPLETE 0x40
|
||||
|
||||
typedef struct gistxlogPage {
|
||||
BlockNumber blkno;
|
||||
int num;
|
||||
} gistxlogPage;
|
||||
typedef struct gistxlogPage
|
||||
{
|
||||
BlockNumber blkno;
|
||||
int num;
|
||||
} gistxlogPage;
|
||||
|
||||
#define XLOG_GIST_CREATE_INDEX 0x50
|
||||
#define XLOG_GIST_CREATE_INDEX 0x50
|
||||
|
||||
typedef struct gistxlogInsertComplete {
|
||||
RelFileNode node;
|
||||
typedef struct gistxlogInsertComplete
|
||||
{
|
||||
RelFileNode node;
|
||||
/* follows ItemPointerData key to clean */
|
||||
} gistxlogInsertComplete;
|
||||
|
||||
/* SplitedPageLayout - gistSplit function result */
|
||||
typedef struct SplitedPageLayout {
|
||||
gistxlogPage block;
|
||||
IndexTupleData *list;
|
||||
int lenlist;
|
||||
Buffer buffer; /* to write after all proceed */
|
||||
typedef struct SplitedPageLayout
|
||||
{
|
||||
gistxlogPage block;
|
||||
IndexTupleData *list;
|
||||
int lenlist;
|
||||
Buffer buffer; /* to write after all proceed */
|
||||
|
||||
struct SplitedPageLayout *next;
|
||||
struct SplitedPageLayout *next;
|
||||
} SplitedPageLayout;
|
||||
|
||||
/*
|
||||
@@ -147,39 +150,42 @@ typedef struct SplitedPageLayout {
|
||||
* insertion
|
||||
*/
|
||||
|
||||
typedef struct GISTInsertStack {
|
||||
typedef struct GISTInsertStack
|
||||
{
|
||||
/* current page */
|
||||
BlockNumber blkno;
|
||||
BlockNumber blkno;
|
||||
Buffer buffer;
|
||||
Page page;
|
||||
|
||||
/* log sequence number from page->lsn to
|
||||
recognize page update and compare it with page's nsn
|
||||
to recognize page split*/
|
||||
/*
|
||||
* log sequence number from page->lsn to recognize page update and
|
||||
* compare it with page's nsn to recognize page split
|
||||
*/
|
||||
GistNSN lsn;
|
||||
|
||||
|
||||
/* child's offset */
|
||||
OffsetNumber childoffnum;
|
||||
OffsetNumber childoffnum;
|
||||
|
||||
/* pointer to parent and child */
|
||||
struct GISTInsertStack *parent;
|
||||
struct GISTInsertStack *child;
|
||||
struct GISTInsertStack *parent;
|
||||
struct GISTInsertStack *child;
|
||||
|
||||
/* for gistFindPath */
|
||||
struct GISTInsertStack *next;
|
||||
struct GISTInsertStack *next;
|
||||
} GISTInsertStack;
|
||||
|
||||
#define XLogRecPtrIsInvalid( r ) ( (r).xlogid == 0 && (r).xrecoff == 0 )
|
||||
|
||||
typedef struct {
|
||||
typedef struct
|
||||
{
|
||||
Relation r;
|
||||
IndexTuple *itup; /* in/out, points to compressed entry */
|
||||
int ituplen; /* length of itup */
|
||||
GISTInsertStack *stack;
|
||||
bool needInsertComplete;
|
||||
IndexTuple *itup; /* in/out, points to compressed entry */
|
||||
int ituplen; /* length of itup */
|
||||
GISTInsertStack *stack;
|
||||
bool needInsertComplete;
|
||||
|
||||
/* pointer to heap tuple */
|
||||
ItemPointerData key;
|
||||
ItemPointerData key;
|
||||
} GISTInsertState;
|
||||
|
||||
/*
|
||||
@@ -197,19 +203,19 @@ typedef struct {
|
||||
/*
|
||||
* When we update a relation on which we're doing a scan, we need to
|
||||
* check the scan and fix it if the update affected any of the pages
|
||||
* it touches. Otherwise, we can miss records that we should see.
|
||||
* it touches. Otherwise, we can miss records that we should see.
|
||||
* The only times we need to do this are for deletions and splits. See
|
||||
* the code in gistscan.c for how the scan is fixed. These two
|
||||
* constants tell us what sort of operation changed the index.
|
||||
*/
|
||||
#define GISTOP_DEL 0
|
||||
/* #define GISTOP_SPLIT 1 */
|
||||
/* #define GISTOP_SPLIT 1 */
|
||||
|
||||
#define ATTSIZE(datum, tupdesc, i, isnull) \
|
||||
( \
|
||||
(isnull) ? 0 : \
|
||||
att_addlength(0, (tupdesc)->attrs[(i)-1]->attlen, (datum)) \
|
||||
)
|
||||
( \
|
||||
(isnull) ? 0 : \
|
||||
att_addlength(0, (tupdesc)->attrs[(i)-1]->attlen, (datum)) \
|
||||
)
|
||||
|
||||
/*
|
||||
* mark tuples on inner pages during recovery
|
||||
@@ -230,11 +236,12 @@ extern void freeGISTstate(GISTSTATE *giststate);
|
||||
extern void gistmakedeal(GISTInsertState *state, GISTSTATE *giststate);
|
||||
extern void gistnewroot(Relation r, Buffer buffer, IndexTuple *itup, int len, ItemPointer key);
|
||||
|
||||
extern IndexTuple * gistSplit(Relation r, Buffer buffer, IndexTuple *itup,
|
||||
int *len, SplitedPageLayout **dist, GISTSTATE *giststate);
|
||||
extern IndexTuple *gistSplit(Relation r, Buffer buffer, IndexTuple *itup,
|
||||
int *len, SplitedPageLayout **dist, GISTSTATE *giststate);
|
||||
|
||||
extern GISTInsertStack *gistFindPath(Relation r, BlockNumber child,
|
||||
Buffer (*myReadBuffer) (Relation, BlockNumber));
|
||||
|
||||
extern GISTInsertStack* gistFindPath( Relation r, BlockNumber child,
|
||||
Buffer (*myReadBuffer)(Relation, BlockNumber) );
|
||||
/* gistxlog.c */
|
||||
extern void gist_redo(XLogRecPtr lsn, XLogRecord *record);
|
||||
extern void gist_desc(char *buf, uint8 xl_info, char *rec);
|
||||
@@ -242,12 +249,12 @@ extern void gist_xlog_startup(void);
|
||||
extern void gist_xlog_cleanup(void);
|
||||
extern IndexTuple gist_form_invalid_tuple(BlockNumber blkno);
|
||||
|
||||
extern XLogRecData* formUpdateRdata(RelFileNode node, BlockNumber blkno,
|
||||
OffsetNumber *todelete, int ntodelete, bool emptypage,
|
||||
IndexTuple *itup, int ituplen, ItemPointer key);
|
||||
extern XLogRecData *formUpdateRdata(RelFileNode node, BlockNumber blkno,
|
||||
OffsetNumber *todelete, int ntodelete, bool emptypage,
|
||||
IndexTuple *itup, int ituplen, ItemPointer key);
|
||||
|
||||
extern XLogRecData* formSplitRdata(RelFileNode node, BlockNumber blkno,
|
||||
ItemPointer key, SplitedPageLayout *dist);
|
||||
extern XLogRecData *formSplitRdata(RelFileNode node, BlockNumber blkno,
|
||||
ItemPointer key, SplitedPageLayout *dist);
|
||||
|
||||
extern XLogRecPtr gistxlogInsertCompletion(RelFileNode node, ItemPointerData *keys, int len);
|
||||
|
||||
@@ -256,50 +263,50 @@ extern Datum gistgettuple(PG_FUNCTION_ARGS);
|
||||
extern Datum gistgetmulti(PG_FUNCTION_ARGS);
|
||||
|
||||
/* gistutil.c */
|
||||
extern Buffer gistNewBuffer(Relation r);
|
||||
extern Buffer gistNewBuffer(Relation r);
|
||||
extern OffsetNumber gistfillbuffer(Relation r, Page page, IndexTuple *itup,
|
||||
int len, OffsetNumber off);
|
||||
int len, OffsetNumber off);
|
||||
extern bool gistnospace(Page page, IndexTuple *itvec, int len);
|
||||
extern IndexTuple * gistextractbuffer(Buffer buffer, int *len /* out */ );
|
||||
extern IndexTuple * gistjoinvector(
|
||||
IndexTuple *itvec, int *len,
|
||||
IndexTuple *additvec, int addlen);
|
||||
extern IndexTuple *gistextractbuffer(Buffer buffer, int *len /* out */ );
|
||||
extern IndexTuple *gistjoinvector(
|
||||
IndexTuple *itvec, int *len,
|
||||
IndexTuple *additvec, int addlen);
|
||||
extern IndexTuple gistunion(Relation r, IndexTuple *itvec,
|
||||
int len, GISTSTATE *giststate);
|
||||
int len, GISTSTATE *giststate);
|
||||
extern IndexTuple gistgetadjusted(Relation r,
|
||||
IndexTuple oldtup,
|
||||
IndexTuple addtup,
|
||||
GISTSTATE *giststate);
|
||||
IndexTuple oldtup,
|
||||
IndexTuple addtup,
|
||||
GISTSTATE *giststate);
|
||||
extern int gistfindgroup(GISTSTATE *giststate,
|
||||
GISTENTRY *valvec, GIST_SPLITVEC *spl);
|
||||
GISTENTRY *valvec, GIST_SPLITVEC *spl);
|
||||
extern void gistadjsubkey(Relation r,
|
||||
IndexTuple *itup, int len,
|
||||
GIST_SPLITVEC *v,
|
||||
GISTSTATE *giststate);
|
||||
IndexTuple *itup, int len,
|
||||
GIST_SPLITVEC *v,
|
||||
GISTSTATE *giststate);
|
||||
extern IndexTuple gistFormTuple(GISTSTATE *giststate,
|
||||
Relation r, Datum *attdata, int *datumsize, bool *isnull);
|
||||
Relation r, Datum *attdata, int *datumsize, bool *isnull);
|
||||
|
||||
extern OffsetNumber gistchoose(Relation r, Page p,
|
||||
IndexTuple it,
|
||||
GISTSTATE *giststate);
|
||||
IndexTuple it,
|
||||
GISTSTATE *giststate);
|
||||
extern void gistcentryinit(GISTSTATE *giststate, int nkey,
|
||||
GISTENTRY *e, Datum k,
|
||||
Relation r, Page pg,
|
||||
OffsetNumber o, int b, bool l, bool isNull);
|
||||
GISTENTRY *e, Datum k,
|
||||
Relation r, Page pg,
|
||||
OffsetNumber o, int b, bool l, bool isNull);
|
||||
extern void gistDeCompressAtt(GISTSTATE *giststate, Relation r,
|
||||
IndexTuple tuple, Page p, OffsetNumber o,
|
||||
GISTENTRY *attdata, bool *isnull);
|
||||
extern void gistunionsubkey(Relation r, GISTSTATE *giststate,
|
||||
IndexTuple *itvec, GIST_SPLITVEC *spl, bool isall);
|
||||
IndexTuple tuple, Page p, OffsetNumber o,
|
||||
GISTENTRY *attdata, bool *isnull);
|
||||
extern void gistunionsubkey(Relation r, GISTSTATE *giststate,
|
||||
IndexTuple *itvec, GIST_SPLITVEC *spl, bool isall);
|
||||
extern void GISTInitBuffer(Buffer b, uint32 f);
|
||||
extern void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e,
|
||||
Datum k, Relation r, Page pg, OffsetNumber o,
|
||||
int b, bool l, bool isNull);
|
||||
void gistUserPicksplit(Relation r, GistEntryVector *entryvec, GIST_SPLITVEC *v,
|
||||
IndexTuple *itup, int len, GISTSTATE *giststate);
|
||||
IndexTuple *itup, int len, GISTSTATE *giststate);
|
||||
|
||||
/* gistvacuum.c */
|
||||
extern Datum gistbulkdelete(PG_FUNCTION_ARGS);
|
||||
extern Datum gistvacuumcleanup(PG_FUNCTION_ARGS);
|
||||
|
||||
#endif /* GIST_PRIVATE_H */
|
||||
#endif /* GIST_PRIVATE_H */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/hash.h,v 1.62 2005/06/06 17:01:24 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/hash.h,v 1.63 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
* NOTES
|
||||
* modeled after Margo Seltzer's hash implementation for unix.
|
||||
@@ -58,11 +58,11 @@ typedef struct HashPageOpaqueData
|
||||
uint16 hasho_filler; /* available for future use */
|
||||
|
||||
/*
|
||||
* We presently set hasho_filler to HASHO_FILL (0x1234); this is for
|
||||
* the convenience of pg_filedump, which otherwise would have a hard
|
||||
* time telling HashPageOpaqueData from BTPageOpaqueData. If we ever
|
||||
* need that space for some other purpose, pg_filedump will have to
|
||||
* find another way.
|
||||
* We presently set hasho_filler to HASHO_FILL (0x1234); this is for the
|
||||
* convenience of pg_filedump, which otherwise would have a hard time
|
||||
* telling HashPageOpaqueData from BTPageOpaqueData. If we ever need that
|
||||
* space for some other purpose, pg_filedump will have to find another
|
||||
* way.
|
||||
*/
|
||||
} HashPageOpaqueData;
|
||||
|
||||
@@ -89,10 +89,10 @@ typedef struct HashScanOpaqueData
|
||||
BlockNumber hashso_bucket_blkno;
|
||||
|
||||
/*
|
||||
* We also want to remember which buffers we're currently examining in
|
||||
* the scan. We keep these buffers pinned (but not locked) across
|
||||
* hashgettuple calls, in order to avoid doing a ReadBuffer() for
|
||||
* every tuple in the index.
|
||||
* We also want to remember which buffers we're currently examining in the
|
||||
* scan. We keep these buffers pinned (but not locked) across hashgettuple
|
||||
* calls, in order to avoid doing a ReadBuffer() for every tuple in the
|
||||
* index.
|
||||
*/
|
||||
Buffer hashso_curbuf;
|
||||
Buffer hashso_mrkbuf;
|
||||
@@ -140,8 +140,8 @@ typedef struct HashMetaPageData
|
||||
double hashm_ntuples; /* number of tuples stored in the table */
|
||||
uint16 hashm_ffactor; /* target fill factor (tuples/bucket) */
|
||||
uint16 hashm_bsize; /* index page size (bytes) */
|
||||
uint16 hashm_bmsize; /* bitmap array size (bytes) - must be a
|
||||
* power of 2 */
|
||||
uint16 hashm_bmsize; /* bitmap array size (bytes) - must be a power
|
||||
* of 2 */
|
||||
uint16 hashm_bmshift; /* log2(bitmap array size in BITS) */
|
||||
uint32 hashm_maxbucket; /* ID of maximum bucket in use */
|
||||
uint32 hashm_highmask; /* mask to modulo into entire table */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/heapam.h,v 1.104 2005/08/20 00:39:59 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/heapam.h,v 1.105 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -70,7 +70,6 @@
|
||||
) \
|
||||
) \
|
||||
)
|
||||
|
||||
#else /* defined(DISABLE_COMPLEX_MACRO) */
|
||||
|
||||
extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
||||
@@ -156,19 +155,19 @@ extern void heap_get_latest_tid(Relation relation, Snapshot snapshot,
|
||||
ItemPointer tid);
|
||||
extern void setLastTid(const ItemPointer tid);
|
||||
|
||||
extern Oid heap_insert(Relation relation, HeapTuple tup, CommandId cid,
|
||||
bool use_wal, bool use_fsm);
|
||||
extern Oid heap_insert(Relation relation, HeapTuple tup, CommandId cid,
|
||||
bool use_wal, bool use_fsm);
|
||||
extern HTSU_Result heap_delete(Relation relation, ItemPointer tid,
|
||||
ItemPointer ctid, TransactionId *update_xmax,
|
||||
CommandId cid, Snapshot crosscheck, bool wait);
|
||||
ItemPointer ctid, TransactionId *update_xmax,
|
||||
CommandId cid, Snapshot crosscheck, bool wait);
|
||||
extern HTSU_Result heap_update(Relation relation, ItemPointer otid,
|
||||
HeapTuple newtup,
|
||||
ItemPointer ctid, TransactionId *update_xmax,
|
||||
CommandId cid, Snapshot crosscheck, bool wait);
|
||||
HeapTuple newtup,
|
||||
ItemPointer ctid, TransactionId *update_xmax,
|
||||
CommandId cid, Snapshot crosscheck, bool wait);
|
||||
extern HTSU_Result heap_lock_tuple(Relation relation, HeapTuple tuple,
|
||||
Buffer *buffer, ItemPointer ctid,
|
||||
TransactionId *update_xmax, CommandId cid,
|
||||
LockTupleMode mode, bool nowait);
|
||||
Buffer *buffer, ItemPointer ctid,
|
||||
TransactionId *update_xmax, CommandId cid,
|
||||
LockTupleMode mode, bool nowait);
|
||||
|
||||
extern Oid simple_heap_insert(Relation relation, HeapTuple tup);
|
||||
extern void simple_heap_delete(Relation relation, ItemPointer tid);
|
||||
@@ -188,10 +187,10 @@ extern XLogRecPtr log_heap_move(Relation reln, Buffer oldbuf,
|
||||
|
||||
/* in common/heaptuple.c */
|
||||
extern Size heap_compute_data_size(TupleDesc tupleDesc,
|
||||
Datum *values, bool *isnull);
|
||||
Datum *values, bool *isnull);
|
||||
extern void heap_fill_tuple(TupleDesc tupleDesc,
|
||||
Datum *values, bool *isnull,
|
||||
char *data, uint16 *infomask, bits8 *bit);
|
||||
Datum *values, bool *isnull,
|
||||
char *data, uint16 *infomask, bits8 *bit);
|
||||
extern bool heap_attisnull(HeapTuple tup, int attnum);
|
||||
extern Datum nocachegetattr(HeapTuple tup, int attnum,
|
||||
TupleDesc att, bool *isnull);
|
||||
@@ -200,25 +199,25 @@ extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
||||
extern HeapTuple heap_copytuple(HeapTuple tuple);
|
||||
extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest);
|
||||
extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor,
|
||||
Datum *values, bool *isnull);
|
||||
Datum *values, bool *isnull);
|
||||
extern HeapTuple heap_formtuple(TupleDesc tupleDescriptor,
|
||||
Datum *values, char *nulls);
|
||||
extern HeapTuple heap_modify_tuple(HeapTuple tuple,
|
||||
TupleDesc tupleDesc,
|
||||
Datum *replValues,
|
||||
bool *replIsnull,
|
||||
bool *doReplace);
|
||||
TupleDesc tupleDesc,
|
||||
Datum *replValues,
|
||||
bool *replIsnull,
|
||||
bool *doReplace);
|
||||
extern HeapTuple heap_modifytuple(HeapTuple tuple,
|
||||
TupleDesc tupleDesc,
|
||||
Datum *replValues,
|
||||
char *replNulls,
|
||||
char *replActions);
|
||||
extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc,
|
||||
Datum *values, bool *isnull);
|
||||
Datum *values, bool *isnull);
|
||||
extern void heap_deformtuple(HeapTuple tuple, TupleDesc tupleDesc,
|
||||
Datum *values, char *nulls);
|
||||
extern void heap_freetuple(HeapTuple tuple);
|
||||
extern HeapTuple heap_addheader(int natts, bool withoid,
|
||||
Size structlen, void *structure);
|
||||
Size structlen, void *structure);
|
||||
|
||||
#endif /* HEAPAM_H */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/hio.h,v 1.28 2005/06/20 18:37:01 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/hio.h,v 1.29 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -19,6 +19,6 @@
|
||||
extern void RelationPutHeapTuple(Relation relation, Buffer buffer,
|
||||
HeapTuple tuple);
|
||||
extern Buffer RelationGetBufferForTuple(Relation relation, Size len,
|
||||
Buffer otherBuffer, bool use_fsm);
|
||||
Buffer otherBuffer, bool use_fsm);
|
||||
|
||||
#endif /* HIO_H */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/htup.h,v 1.77 2005/09/02 19:02:20 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/htup.h,v 1.78 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -81,7 +81,7 @@
|
||||
* and Cmin simultaneously, so this is no longer possible.
|
||||
*
|
||||
* A word about t_ctid: whenever a new tuple is stored on disk, its t_ctid
|
||||
* is initialized with its own TID (location). If the tuple is ever updated,
|
||||
* is initialized with its own TID (location). If the tuple is ever updated,
|
||||
* its t_ctid is changed to point to the replacement version of the tuple.
|
||||
* Thus, a tuple is the latest version of its row iff XMAX is invalid or
|
||||
* t_ctid points to itself (in which case, if XMAX is valid, the tuple is
|
||||
@@ -161,15 +161,13 @@ typedef HeapTupleHeaderData *HeapTupleHeader;
|
||||
*/
|
||||
#define HEAP_HASNULL 0x0001 /* has null attribute(s) */
|
||||
#define HEAP_HASVARWIDTH 0x0002 /* has variable-width attribute(s) */
|
||||
#define HEAP_HASEXTERNAL 0x0004 /* has external stored
|
||||
* attribute(s) */
|
||||
#define HEAP_HASCOMPRESSED 0x0008 /* has compressed stored
|
||||
* attribute(s) */
|
||||
#define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */
|
||||
#define HEAP_HASCOMPRESSED 0x0008 /* has compressed stored attribute(s) */
|
||||
#define HEAP_HASEXTENDED 0x000C /* the two above combined */
|
||||
#define HEAP_HASOID 0x0010 /* has an object-id field */
|
||||
/* 0x0020 is presently unused */
|
||||
#define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */
|
||||
#define HEAP_XMAX_SHARED_LOCK 0x0080 /* xmax is shared locker */
|
||||
#define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */
|
||||
#define HEAP_XMAX_SHARED_LOCK 0x0080 /* xmax is shared locker */
|
||||
/* if either LOCK bit is set, xmax hasn't deleted the tuple, only locked it */
|
||||
#define HEAP_IS_LOCKED (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_SHARED_LOCK)
|
||||
#define HEAP_XMIN_COMMITTED 0x0100 /* t_xmin committed */
|
||||
@@ -178,10 +176,10 @@ typedef HeapTupleHeaderData *HeapTupleHeader;
|
||||
#define HEAP_XMAX_INVALID 0x0800 /* t_xmax invalid/aborted */
|
||||
#define HEAP_XMAX_IS_MULTI 0x1000 /* t_xmax is a MultiXactId */
|
||||
#define HEAP_UPDATED 0x2000 /* this is UPDATEd version of row */
|
||||
#define HEAP_MOVED_OFF 0x4000 /* moved to another place by
|
||||
* VACUUM FULL */
|
||||
#define HEAP_MOVED_IN 0x8000 /* moved from another place by
|
||||
* VACUUM FULL */
|
||||
#define HEAP_MOVED_OFF 0x4000 /* moved to another place by VACUUM
|
||||
* FULL */
|
||||
#define HEAP_MOVED_IN 0x8000 /* moved from another place by VACUUM
|
||||
* FULL */
|
||||
#define HEAP_MOVED (HEAP_MOVED_OFF | HEAP_MOVED_IN)
|
||||
|
||||
#define HEAP_XACT_MASK 0xFFC0 /* visibility-related bits */
|
||||
@@ -371,7 +369,7 @@ do { \
|
||||
* * Part of a palloc'd tuple: the HeapTupleData itself and the tuple
|
||||
* form a single palloc'd chunk. t_data points to the memory location
|
||||
* immediately following the HeapTupleData struct (at offset HEAPTUPLESIZE),
|
||||
* and t_datamcxt is the containing context. This is used as the output
|
||||
* and t_datamcxt is the containing context. This is used as the output
|
||||
* format of heap_form_tuple and related routines.
|
||||
*
|
||||
* * Separately allocated tuple: t_data points to a palloc'd chunk that
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/itup.h,v 1.43 2005/03/27 18:38:27 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/itup.h,v 1.44 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -22,7 +22,7 @@
|
||||
/*
|
||||
* Index tuple header structure
|
||||
*
|
||||
* All index tuples start with IndexTupleData. If the HasNulls bit is set,
|
||||
* All index tuples start with IndexTupleData. If the HasNulls bit is set,
|
||||
* this is followed by an IndexAttributeBitMapData. The index attribute
|
||||
* values follow, beginning at a MAXALIGN boundary.
|
||||
*
|
||||
@@ -129,7 +129,7 @@ typedef IndexAttributeBitMapData *IndexAttributeBitMap;
|
||||
|
||||
/* routines in indextuple.c */
|
||||
extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor,
|
||||
Datum *values, bool *isnull);
|
||||
Datum *values, bool *isnull);
|
||||
extern Datum nocache_index_getattr(IndexTuple tup, int attnum,
|
||||
TupleDesc tupleDesc, bool *isnull);
|
||||
extern IndexTuple CopyIndexTuple(IndexTuple source);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/multixact.h,v 1.6 2005/08/20 23:26:29 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/multixact.h,v 1.7 2005/10/15 02:49:42 momjian Exp $
|
||||
*/
|
||||
#ifndef MULTIXACT_H
|
||||
#define MULTIXACT_H
|
||||
@@ -29,10 +29,10 @@
|
||||
|
||||
typedef struct xl_multixact_create
|
||||
{
|
||||
MultiXactId mid; /* new MultiXact's ID */
|
||||
MultiXactOffset moff; /* its starting offset in members file */
|
||||
int32 nxids; /* number of member XIDs */
|
||||
TransactionId xids[1]; /* VARIABLE LENGTH ARRAY */
|
||||
MultiXactId mid; /* new MultiXact's ID */
|
||||
MultiXactOffset moff; /* its starting offset in members file */
|
||||
int32 nxids; /* number of member XIDs */
|
||||
TransactionId xids[1]; /* VARIABLE LENGTH ARRAY */
|
||||
} xl_multixact_create;
|
||||
|
||||
#define MinSizeOfMultiXactCreate offsetof(xl_multixact_create, xids)
|
||||
@@ -44,7 +44,7 @@ extern bool MultiXactIdIsRunning(MultiXactId multi);
|
||||
extern void MultiXactIdWait(MultiXactId multi);
|
||||
extern bool ConditionalMultiXactIdWait(MultiXactId multi);
|
||||
extern void MultiXactIdSetOldestMember(void);
|
||||
extern int GetMultiXactIdMembers(MultiXactId multi, TransactionId **xids);
|
||||
extern int GetMultiXactIdMembers(MultiXactId multi, TransactionId **xids);
|
||||
|
||||
extern void AtEOXact_MultiXact(void);
|
||||
|
||||
@@ -54,13 +54,13 @@ extern void BootStrapMultiXact(void);
|
||||
extern void StartupMultiXact(void);
|
||||
extern void ShutdownMultiXact(void);
|
||||
extern void MultiXactGetCheckptMulti(bool is_shutdown,
|
||||
MultiXactId *nextMulti,
|
||||
MultiXactOffset *nextMultiOffset);
|
||||
MultiXactId *nextMulti,
|
||||
MultiXactOffset *nextMultiOffset);
|
||||
extern void CheckPointMultiXact(void);
|
||||
extern void MultiXactSetNextMXact(MultiXactId nextMulti,
|
||||
MultiXactOffset nextMultiOffset);
|
||||
MultiXactOffset nextMultiOffset);
|
||||
extern void MultiXactAdvanceNextMXact(MultiXactId minMulti,
|
||||
MultiXactOffset minMultiOffset);
|
||||
MultiXactOffset minMultiOffset);
|
||||
|
||||
extern void multixact_redo(XLogRecPtr lsn, XLogRecord *record);
|
||||
extern void multixact_desc(char *buf, uint8 xl_info, char *rec);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/nbtree.h,v 1.86 2005/06/06 17:01:24 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/nbtree.h,v 1.87 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -193,8 +193,7 @@ typedef BTItemData *BTItem;
|
||||
#define XLOG_BTREE_SPLIT_R_ROOT 0x60 /* as above, new item on right */
|
||||
#define XLOG_BTREE_DELETE 0x70 /* delete leaf btitem */
|
||||
#define XLOG_BTREE_DELETE_PAGE 0x80 /* delete an entire page */
|
||||
#define XLOG_BTREE_DELETE_PAGE_META 0x90 /* same, plus update
|
||||
* metapage */
|
||||
#define XLOG_BTREE_DELETE_PAGE_META 0x90 /* same, plus update metapage */
|
||||
#define XLOG_BTREE_NEWROOT 0xA0 /* new root page */
|
||||
#define XLOG_BTREE_NEWMETA 0xB0 /* update metadata page */
|
||||
|
||||
@@ -392,8 +391,8 @@ typedef struct BTScanOpaqueData
|
||||
/* these fields are set by _bt_preprocess_keys(): */
|
||||
bool qual_ok; /* false if qual can never be satisfied */
|
||||
int numberOfKeys; /* number of preprocessed scan keys */
|
||||
int numberOfRequiredKeys; /* number of keys that must be
|
||||
* matched to continue the scan */
|
||||
int numberOfRequiredKeys; /* number of keys that must be matched
|
||||
* to continue the scan */
|
||||
ScanKey keyData; /* array of preprocessed scan keys */
|
||||
} BTScanOpaqueData;
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/relscan.h,v 1.40 2005/10/07 14:55:35 alvherre Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/relscan.h,v 1.41 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -77,9 +77,9 @@ typedef struct IndexScanDescData
|
||||
|
||||
/*
|
||||
* If keys_are_unique and got_tuple are both true, we stop calling the
|
||||
* index AM; it is then necessary for index_getnext to keep track of
|
||||
* the logical scan position for itself. It does that using
|
||||
* unique_tuple_pos: -1 = before row, 0 = on row, +1 = after row.
|
||||
* index AM; it is then necessary for index_getnext to keep track of the
|
||||
* logical scan position for itself. It does that using unique_tuple_pos:
|
||||
* -1 = before row, 0 = on row, +1 = after row.
|
||||
*/
|
||||
int unique_tuple_pos; /* logical position */
|
||||
int unique_tuple_mark; /* logical marked position */
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/slru.h,v 1.13 2005/08/20 23:26:29 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/slru.h,v 1.14 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -42,9 +42,9 @@ typedef struct SlruSharedData
|
||||
|
||||
/*
|
||||
* Info for each buffer slot. Page number is undefined when status is
|
||||
* EMPTY. lru_count is essentially the number of page switches since
|
||||
* last use of this page; the page with highest lru_count is the best
|
||||
* candidate to replace.
|
||||
* EMPTY. lru_count is essentially the number of page switches since last
|
||||
* use of this page; the page with highest lru_count is the best candidate
|
||||
* to replace.
|
||||
*/
|
||||
char *page_buffer[NUM_SLRU_BUFFERS];
|
||||
SlruPageStatus page_status[NUM_SLRU_BUFFERS];
|
||||
@@ -53,9 +53,9 @@ typedef struct SlruSharedData
|
||||
LWLockId buffer_locks[NUM_SLRU_BUFFERS];
|
||||
|
||||
/*
|
||||
* latest_page_number is the page number of the current end of the
|
||||
* log; this is not critical data, since we use it only to avoid
|
||||
* swapping out the latest page.
|
||||
* latest_page_number is the page number of the current end of the log;
|
||||
* this is not critical data, since we use it only to avoid swapping out
|
||||
* the latest page.
|
||||
*/
|
||||
int latest_page_number;
|
||||
} SlruSharedData;
|
||||
@@ -71,21 +71,21 @@ typedef struct SlruCtlData
|
||||
SlruShared shared;
|
||||
|
||||
/*
|
||||
* This flag tells whether to fsync writes (true for pg_clog, false
|
||||
* for pg_subtrans).
|
||||
* This flag tells whether to fsync writes (true for pg_clog, false for
|
||||
* pg_subtrans).
|
||||
*/
|
||||
bool do_fsync;
|
||||
|
||||
/*
|
||||
* Decide which of two page numbers is "older" for truncation
|
||||
* purposes. We need to use comparison of TransactionIds here in order
|
||||
* to do the right thing with wraparound XID arithmetic.
|
||||
* Decide which of two page numbers is "older" for truncation purposes. We
|
||||
* need to use comparison of TransactionIds here in order to do the right
|
||||
* thing with wraparound XID arithmetic.
|
||||
*/
|
||||
bool (*PagePrecedes) (int, int);
|
||||
|
||||
/*
|
||||
* Dir is set during SimpleLruInit and does not change thereafter.
|
||||
* Since it's always the same, it doesn't need to be in shared memory.
|
||||
* Dir is set during SimpleLruInit and does not change thereafter. Since
|
||||
* it's always the same, it doesn't need to be in shared memory.
|
||||
*/
|
||||
char Dir[64];
|
||||
} SlruCtlData;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/transam.h,v 1.55 2005/08/12 01:36:03 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/transam.h,v 1.56 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -59,7 +59,7 @@
|
||||
* using the OID generator. (We start the generator at 10000.)
|
||||
*
|
||||
* OIDs beginning at 16384 are assigned from the OID generator
|
||||
* during normal multiuser operation. (We force the generator up to
|
||||
* during normal multiuser operation. (We force the generator up to
|
||||
* 16384 as soon as we are in normal operation.)
|
||||
*
|
||||
* The choices of 10000 and 16384 are completely arbitrary, and can be moved
|
||||
@@ -87,9 +87,9 @@ typedef struct VariableCacheData
|
||||
Oid nextOid; /* next OID to assign */
|
||||
uint32 oidCount; /* OIDs available before must do XLOG work */
|
||||
TransactionId nextXid; /* next XID to assign */
|
||||
TransactionId xidWarnLimit; /* start complaining here */
|
||||
TransactionId xidStopLimit; /* refuse to advance nextXid beyond here */
|
||||
TransactionId xidWrapLimit; /* where the world ends */
|
||||
TransactionId xidWarnLimit; /* start complaining here */
|
||||
TransactionId xidStopLimit; /* refuse to advance nextXid beyond here */
|
||||
TransactionId xidWrapLimit; /* where the world ends */
|
||||
NameData limit_datname; /* database that needs vacuumed first */
|
||||
} VariableCacheData;
|
||||
|
||||
@@ -124,7 +124,7 @@ extern bool TransactionIdFollowsOrEquals(TransactionId id1, TransactionId id2);
|
||||
extern TransactionId GetNewTransactionId(bool isSubXact);
|
||||
extern TransactionId ReadNewTransactionId(void);
|
||||
extern void SetTransactionIdLimit(TransactionId oldest_datfrozenxid,
|
||||
Name oldest_datname);
|
||||
Name oldest_datname);
|
||||
extern Oid GetNewObjectId(void);
|
||||
|
||||
#endif /* TRAMSAM_H */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/tupmacs.h,v 1.28 2005/05/06 17:24:55 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/tupmacs.h,v 1.29 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -66,7 +66,6 @@
|
||||
: \
|
||||
PointerGetDatum((char *) (T)) \
|
||||
)
|
||||
|
||||
#else /* SIZEOF_DATUM != 8 */
|
||||
|
||||
#define fetch_att(T,attbyval,attlen) \
|
||||
@@ -159,7 +158,6 @@
|
||||
break; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#else /* SIZEOF_DATUM != 8 */
|
||||
|
||||
#define store_att_byval(T,newdatum,attlen) \
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/twophase.h,v 1.5 2005/08/20 23:26:29 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/twophase.h,v 1.6 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -25,7 +25,7 @@
|
||||
typedef struct GlobalTransactionData *GlobalTransaction;
|
||||
|
||||
/* GUC variable */
|
||||
extern int max_prepared_xacts;
|
||||
extern int max_prepared_xacts;
|
||||
|
||||
extern Size TwoPhaseShmemSize(void);
|
||||
extern void TwoPhaseShmemInit(void);
|
||||
@@ -33,8 +33,8 @@ extern void TwoPhaseShmemInit(void);
|
||||
extern PGPROC *TwoPhaseGetDummyProc(TransactionId xid);
|
||||
|
||||
extern GlobalTransaction MarkAsPreparing(TransactionId xid, const char *gid,
|
||||
TimestampTz prepared_at,
|
||||
Oid owner, Oid databaseid);
|
||||
TimestampTz prepared_at,
|
||||
Oid owner, Oid databaseid);
|
||||
|
||||
extern void StartPrepare(GlobalTransaction gxact);
|
||||
extern void EndPrepare(GlobalTransaction gxact);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/twophase_rmgr.h,v 1.1 2005/06/17 22:32:48 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/twophase_rmgr.h,v 1.2 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -15,7 +15,7 @@
|
||||
#define TWOPHASE_RMGR_H
|
||||
|
||||
typedef void (*TwoPhaseCallback) (TransactionId xid, uint16 info,
|
||||
void *recdata, uint32 len);
|
||||
void *recdata, uint32 len);
|
||||
typedef uint8 TwoPhaseRmgrId;
|
||||
|
||||
/*
|
||||
@@ -24,8 +24,8 @@ typedef uint8 TwoPhaseRmgrId;
|
||||
#define TWOPHASE_RM_END_ID 0
|
||||
#define TWOPHASE_RM_LOCK_ID 1
|
||||
#define TWOPHASE_RM_INVAL_ID 2
|
||||
#define TWOPHASE_RM_FLATFILES_ID 3
|
||||
#define TWOPHASE_RM_NOTIFY_ID 4
|
||||
#define TWOPHASE_RM_FLATFILES_ID 3
|
||||
#define TWOPHASE_RM_NOTIFY_ID 4
|
||||
#define TWOPHASE_RM_MAX_ID TWOPHASE_RM_NOTIFY_ID
|
||||
|
||||
extern const TwoPhaseCallback twophase_recover_callbacks[];
|
||||
@@ -34,6 +34,6 @@ extern const TwoPhaseCallback twophase_postabort_callbacks[];
|
||||
|
||||
|
||||
extern void RegisterTwoPhaseRecord(TwoPhaseRmgrId rmid, uint16 info,
|
||||
const void *data, uint32 len);
|
||||
const void *data, uint32 len);
|
||||
|
||||
#endif /* TWOPHASE_RMGR_H */
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/xact.h,v 1.78 2005/06/29 22:51:57 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/xact.h,v 1.79 2005/10/15 02:49:42 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -61,7 +61,7 @@ typedef enum
|
||||
} SubXactEvent;
|
||||
|
||||
typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid,
|
||||
SubTransactionId parentSubid, void *arg);
|
||||
SubTransactionId parentSubid, void *arg);
|
||||
|
||||
|
||||
/* ----------------
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.68 2005/08/20 23:26:29 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.69 2005/10/15 02:49:42 momjian Exp $
|
||||
*/
|
||||
#ifndef XLOG_H
|
||||
#define XLOG_H
|
||||
@@ -31,11 +31,11 @@
|
||||
* where there can be zero to three backup blocks (as signaled by xl_info flag
|
||||
* bits). XLogRecord structs always start on MAXALIGN boundaries in the WAL
|
||||
* files, and we round up SizeOfXLogRecord so that the rmgr data is also
|
||||
* guaranteed to begin on a MAXALIGN boundary. However, no padding is added
|
||||
* guaranteed to begin on a MAXALIGN boundary. However, no padding is added
|
||||
* to align BkpBlock structs or backup block data.
|
||||
*
|
||||
* NOTE: xl_len counts only the rmgr data, not the XLogRecord header,
|
||||
* and also not any backup blocks. xl_tot_len counts everything. Neither
|
||||
* and also not any backup blocks. xl_tot_len counts everything. Neither
|
||||
* length field is rounded up to an alignment boundary.
|
||||
*/
|
||||
typedef struct XLogRecord
|
||||
@@ -69,8 +69,7 @@ typedef struct XLogRecord
|
||||
* record. (Could support 4 if we cared to dedicate all the xl_info bits for
|
||||
* this purpose; currently bit 0 of xl_info is unused and available.)
|
||||
*/
|
||||
#define XLR_BKP_BLOCK_MASK 0x0E /* all info bits used for bkp
|
||||
* blocks */
|
||||
#define XLR_BKP_BLOCK_MASK 0x0E /* all info bits used for bkp blocks */
|
||||
#define XLR_MAX_BKP_BLOCKS 3
|
||||
#define XLR_SET_BKP_BLOCK(iblk) (0x08 >> (iblk))
|
||||
#define XLR_BKP_BLOCK_1 XLR_SET_BKP_BLOCK(0) /* 0x08 */
|
||||
@@ -86,7 +85,7 @@ typedef struct XLogRecord
|
||||
/* Sync methods */
|
||||
#define SYNC_METHOD_FSYNC 0
|
||||
#define SYNC_METHOD_FDATASYNC 1
|
||||
#define SYNC_METHOD_OPEN 2 /* for O_SYNC and O_DSYNC */
|
||||
#define SYNC_METHOD_OPEN 2 /* for O_SYNC and O_DSYNC */
|
||||
#define SYNC_METHOD_FSYNC_WRITETHROUGH 3
|
||||
extern int sync_method;
|
||||
|
||||
@@ -109,7 +108,7 @@ extern int sync_method;
|
||||
* value (ignoring InvalidBuffer) appearing in the rdata chain.
|
||||
*
|
||||
* When buffer is valid, caller must set buffer_std to indicate whether the
|
||||
* page uses standard pd_lower/pd_upper header fields. If this is true, then
|
||||
* page uses standard pd_lower/pd_upper header fields. If this is true, then
|
||||
* XLOG is allowed to omit the free space between pd_lower and pd_upper from
|
||||
* the backed-up page image. Note that even when buffer_std is false, the
|
||||
* page MUST have an LSN field as its first eight bytes!
|
||||
|
||||
Reference in New Issue
Block a user