diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/access/tuptoaster.h | 52 | ||||
-rw-r--r-- | src/include/catalog/catversion.h | 4 |
2 files changed, 44 insertions, 12 deletions
diff --git a/src/include/access/tuptoaster.h b/src/include/access/tuptoaster.h index 91149f5f836..23f31aec522 100644 --- a/src/include/access/tuptoaster.h +++ b/src/include/access/tuptoaster.h @@ -6,7 +6,7 @@ * * Copyright (c) 2000, PostgreSQL Development Team * - * $Id: tuptoaster.h,v 1.7 2000/07/22 11:18:47 wieck Exp $ + * $Id: tuptoaster.h,v 1.8 2000/08/04 04:16:10 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -20,25 +20,57 @@ #include "access/tupmacs.h" #include "utils/rel.h" + +/* + * This enables de-toasting of index entries. Needed until VACUUM is + * smart enough to rebuild indexes from scratch. + */ #define TOAST_INDEX_HACK -#define TOAST_MAX_CHUNK_SIZE ((MaxTupleSize - \ - MAXALIGN( \ - MAXALIGN(offsetof(HeapTupleHeaderData, t_bits)) + \ - MAXALIGN(sizeof(Oid)) + \ - MAXALIGN(sizeof(int32)) + \ - MAXALIGN(VARHDRSZ))) / 4) +/* + * These symbols control toaster activation. If a tuple is larger than + * TOAST_TUPLE_THRESHOLD, we will try to toast it down to no more than + * TOAST_TUPLE_TARGET bytes. Both numbers include all tuple header and + * alignment-padding overhead. + * + * The numbers need not be the same, though they currently are. + */ +#define TOAST_TUPLE_THRESHOLD (MaxTupleSize / 4) + +#define TOAST_TUPLE_TARGET (MaxTupleSize / 4) + + +/* + * When we store an oversize datum externally, we divide it into chunks + * containing at most TOAST_MAX_CHUNK_SIZE data bytes. This number *must* + * be small enough that the completed toast-table tuple (including the + * ID and sequence fields and all overhead) is no more than MaxTupleSize + * bytes. It *should* be small enough to make toast-table tuples no more + * than TOAST_TUPLE_THRESHOLD bytes, else heapam.c will uselessly invoke + * the toaster on toast-table tuples. + * + * NB: you cannot change this value without forcing initdb, at least not + * if your DB contains any multi-chunk toasted values. + */ +#define TOAST_MAX_CHUNK_SIZE (TOAST_TUPLE_THRESHOLD - \ + MAXALIGN( \ + MAXALIGN(offsetof(HeapTupleHeaderData, t_bits)) + \ + sizeof(Oid) + \ + sizeof(int32) + \ + VARHDRSZ)) /* ---------- * heap_tuple_toast_attrs() - * * Called by heap_insert(), heap_update() and heap_delete(). - * Outdates not any longer needed toast entries referenced - * by oldtup and creates new ones until newtup is smaller - * that ~2K (or running out of toastable values). + * Outdates any no-longer-needed toast entries referenced + * by oldtup and creates new ones until newtup is no more than + * TOAST_TUPLE_TARGET (or we run out of toastable values). * Possibly modifies newtup by replacing the t_data part! + * + * oldtup is NULL if insert, newtup is NULL if delete. * ---------- */ extern void heap_tuple_toast_attrs(Relation rel, diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index 0a8b0d43cce..c9ac2c39aba 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -37,7 +37,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: catversion.h,v 1.38 2000/07/30 22:13:59 tgl Exp $ + * $Id: catversion.h,v 1.39 2000/08/04 04:16:17 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 200007301 +#define CATALOG_VERSION_NO 200008031 #endif |