mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
Decouple the values of TOAST_TUPLE_THRESHOLD and TOAST_MAX_CHUNK_SIZE.
Add the latter to the values checked in pg_control, since it can't be changed without invalidating toast table content. This commit in itself shouldn't change any behavior, but it lays some necessary groundwork for experimentation with these toast-control numbers. Note: while TOAST_TUPLE_THRESHOLD can now be changed without initdb, some thought still needs to be given to needs_toast_table() in toasting.c before unleashing random changes.
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.265 2007/03/03 20:02:26 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.266 2007/04/03 04:14:26 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -28,6 +28,7 @@
|
||||
#include "access/multixact.h"
|
||||
#include "access/subtrans.h"
|
||||
#include "access/transam.h"
|
||||
#include "access/tuptoaster.h"
|
||||
#include "access/twophase.h"
|
||||
#include "access/xact.h"
|
||||
#include "access/xlog_internal.h"
|
||||
@ -3634,6 +3635,8 @@ WriteControlFile(void)
|
||||
ControlFile->nameDataLen = NAMEDATALEN;
|
||||
ControlFile->indexMaxKeys = INDEX_MAX_KEYS;
|
||||
|
||||
ControlFile->toast_max_chunk_size = TOAST_MAX_CHUNK_SIZE;
|
||||
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
ControlFile->enableIntTimes = TRUE;
|
||||
#else
|
||||
@ -3824,6 +3827,13 @@ ReadControlFile(void)
|
||||
" but the server was compiled with INDEX_MAX_KEYS %d.",
|
||||
ControlFile->indexMaxKeys, INDEX_MAX_KEYS),
|
||||
errhint("It looks like you need to recompile or initdb.")));
|
||||
if (ControlFile->toast_max_chunk_size != TOAST_MAX_CHUNK_SIZE)
|
||||
ereport(FATAL,
|
||||
(errmsg("database files are incompatible with server"),
|
||||
errdetail("The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d,"
|
||||
" but the server was compiled with TOAST_MAX_CHUNK_SIZE %d.",
|
||||
ControlFile->toast_max_chunk_size, (int) TOAST_MAX_CHUNK_SIZE),
|
||||
errhint("It looks like you need to recompile or initdb.")));
|
||||
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
if (ControlFile->enableIntTimes != TRUE)
|
||||
|
Reference in New Issue
Block a user