diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/access/heapam.h | 13 | ||||
-rw-r--r-- | src/include/access/hio.h | 21 | ||||
-rw-r--r-- | src/include/access/tuptoaster.h | 4 | ||||
-rw-r--r-- | src/include/storage/bufmgr.h | 3 |
4 files changed, 34 insertions, 7 deletions
diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index b24edea6e40..1b78b40cc59 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/heapam.h,v 1.139 2008/10/08 01:14:44 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/heapam.h,v 1.140 2008/11/06 20:51:15 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -25,6 +25,12 @@ #include "utils/snapshot.h" +/* "options" flag bits for heap_insert */ +#define HEAP_INSERT_SKIP_WAL 0x0001 +#define HEAP_INSERT_SKIP_FSM 0x0002 + +typedef struct BulkInsertStateData *BulkInsertState; + typedef enum { LockTupleShared, @@ -86,8 +92,11 @@ extern void heap_get_latest_tid(Relation relation, Snapshot snapshot, ItemPointer tid); extern void setLastTid(const ItemPointer tid); +extern BulkInsertState GetBulkInsertState(void); +extern void FreeBulkInsertState(BulkInsertState); + extern Oid heap_insert(Relation relation, HeapTuple tup, CommandId cid, - bool use_wal, bool use_fsm); + int options, BulkInsertState bistate); extern HTSU_Result heap_delete(Relation relation, ItemPointer tid, ItemPointer ctid, TransactionId *update_xmax, CommandId cid, Snapshot crosscheck, bool wait); diff --git a/src/include/access/hio.h b/src/include/access/hio.h index a089bddbf3f..813347dccbe 100644 --- a/src/include/access/hio.h +++ b/src/include/access/hio.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/hio.h,v 1.36 2008/06/19 00:46:06 alvherre Exp $ + * $PostgreSQL: pgsql/src/include/access/hio.h,v 1.37 2008/11/06 20:51:15 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -18,9 +18,26 @@ #include "utils/relcache.h" #include "storage/buf.h" + +/* + * state for bulk inserts --- private to heapam.c and hio.c + * + * If current_buf isn't InvalidBuffer, then we are holding an extra pin + * on that buffer. + * + * "typedef struct BulkInsertStateData *BulkInsertState" is in heapam.h + */ +typedef struct BulkInsertStateData +{ + BufferAccessStrategy strategy; /* our BULKWRITE strategy object */ + Buffer current_buf; /* current insertion target page */ +} BulkInsertStateData; + + extern void RelationPutHeapTuple(Relation relation, Buffer buffer, HeapTuple tuple); extern Buffer RelationGetBufferForTuple(Relation relation, Size len, - Buffer otherBuffer, bool use_fsm); + Buffer otherBuffer, int options, + struct BulkInsertStateData *bistate); #endif /* HIO_H */ diff --git a/src/include/access/tuptoaster.h b/src/include/access/tuptoaster.h index a87aee62dfc..3cf7aad2b87 100644 --- a/src/include/access/tuptoaster.h +++ b/src/include/access/tuptoaster.h @@ -6,7 +6,7 @@ * * Copyright (c) 2000-2008, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/access/tuptoaster.h,v 1.41 2008/07/13 20:45:47 tgl Exp $ + * $PostgreSQL: pgsql/src/include/access/tuptoaster.h,v 1.42 2008/11/06 20:51:15 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -93,7 +93,7 @@ */ extern HeapTuple toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, - bool use_wal, bool use_fsm); + int options); /* ---------- * toast_delete - diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h index 56f584a78ba..f2252c8f460 100644 --- a/src/include/storage/bufmgr.h +++ b/src/include/storage/bufmgr.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/storage/bufmgr.h,v 1.116 2008/10/31 15:05:00 heikki Exp $ + * $PostgreSQL: pgsql/src/include/storage/bufmgr.h,v 1.117 2008/11/06 20:51:15 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -28,6 +28,7 @@ typedef enum BufferAccessStrategyType BAS_NORMAL, /* Normal random access */ BAS_BULKREAD, /* Large read-only scan (hint bit updates are * ok) */ + BAS_BULKWRITE, /* Large multi-block write (e.g. COPY IN) */ BAS_VACUUM /* VACUUM */ } BufferAccessStrategyType; |