aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/access/tuptoaster.h52
-rw-r--r--src/include/catalog/catversion.h4
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