mirror of
https://github.com/postgres/postgres.git
synced 2025-09-05 02:22:28 +03:00
Add an optional parameter to pg_start_backup() that specifies whether to do
the checkpoint in immediate or lazy mode. This is to address complaints that pg_start_backup() takes a long time even when there's no need to minimize its I/O consumption.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.334 2009/03/11 23:19:24 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.335 2009/04/07 00:31:26 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -6914,6 +6914,7 @@ Datum
|
||||
pg_start_backup(PG_FUNCTION_ARGS)
|
||||
{
|
||||
text *backupid = PG_GETARG_TEXT_P(0);
|
||||
bool fast = PG_GETARG_BOOL(1);
|
||||
char *backupidstr;
|
||||
XLogRecPtr checkpointloc;
|
||||
XLogRecPtr startpoint;
|
||||
@@ -6983,9 +6984,11 @@ pg_start_backup(PG_FUNCTION_ARGS)
|
||||
* have different checkpoint positions and hence different history
|
||||
* file names, even if nothing happened in between.
|
||||
*
|
||||
* We don't use CHECKPOINT_IMMEDIATE, hence this can take awhile.
|
||||
* We use CHECKPOINT_IMMEDIATE only if requested by user (via
|
||||
* passing fast = true). Otherwise this can take awhile.
|
||||
*/
|
||||
RequestCheckpoint(CHECKPOINT_FORCE | CHECKPOINT_WAIT);
|
||||
RequestCheckpoint(CHECKPOINT_FORCE | CHECKPOINT_WAIT |
|
||||
(fast ? CHECKPOINT_IMMEDIATE : 0));
|
||||
|
||||
/*
|
||||
* Now we need to fetch the checkpoint record location, and also its
|
||||
|
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/catalog/system_views.sql,v 1.59 2009/02/06 21:15:11 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/catalog/system_views.sql,v 1.60 2009/04/07 00:31:26 tgl Exp $
|
||||
*/
|
||||
|
||||
CREATE VIEW pg_roles AS
|
||||
@@ -403,6 +403,12 @@ CREATE VIEW pg_user_mappings AS
|
||||
|
||||
REVOKE ALL on pg_user_mapping FROM public;
|
||||
|
||||
--
|
||||
-- We have a few function definitions in here, too.
|
||||
-- At some point there might be enough to justify breaking them out into
|
||||
-- a separate "system_functions.sql" file.
|
||||
--
|
||||
|
||||
-- Tsearch debug function. Defined here because it'd be pretty unwieldy
|
||||
-- to put it into pg_proc.h
|
||||
|
||||
@@ -464,3 +470,16 @@ LANGUAGE SQL STRICT STABLE;
|
||||
|
||||
COMMENT ON FUNCTION ts_debug(text) IS
|
||||
'debug function for current text search configuration';
|
||||
|
||||
--
|
||||
-- Redeclare built-in functions that need default values attached to their
|
||||
-- arguments. It's impractical to set those up directly in pg_proc.h because
|
||||
-- of the complexity and platform-dependency of the expression tree
|
||||
-- representation. (Note that internal functions still have to have entries
|
||||
-- in pg_proc.h; we are merely causing their proargnames and proargdefaults
|
||||
-- to get filled in.)
|
||||
--
|
||||
|
||||
CREATE OR REPLACE FUNCTION
|
||||
pg_start_backup(label text, fast boolean DEFAULT false)
|
||||
RETURNS text STRICT VOLATILE LANGUAGE internal AS 'pg_start_backup';
|
||||
|
Reference in New Issue
Block a user