From e0e8b9634555f876570d3c1596a50419848a1046 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 28 Jan 2010 07:31:42 +0000 Subject: [PATCH] Change a few remaining calls of XLogArchivingActive() to use XLogIsNeeded() instead, to determine if an otherwise non-logged operation needs to be logged in WAL for standby servers. Fujii Masao --- src/backend/commands/tablecmds.c | 7 ++++--- src/backend/commands/vacuumlazy.c | 4 ++-- src/include/access/xlog.h | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index e1b4532583..89447d3678 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.318 2010/01/22 16:40:18 rhaas Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.319 2010/01/28 07:31:42 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -2998,7 +2998,8 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) * Prepare a BulkInsertState and options for heap_insert. Because * we're building a new heap, we can skip WAL-logging and fsync it * to disk at the end instead (unless WAL-logging is required for - * archiving). The FSM is empty too, so don't bother using it. + * archiving or streaming replication). The FSM is empty too, + * so don't bother using it. */ if (newrel) { @@ -3006,7 +3007,7 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) bistate = GetBulkInsertState(); hi_options = HEAP_INSERT_SKIP_FSM; - if (!XLogArchivingActive()) + if (!XLogIsNeeded()) hi_options |= HEAP_INSERT_SKIP_WAL; } else diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index dc80a23fa0..3c7dc2a3d4 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -29,7 +29,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.127 2010/01/02 16:57:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.128 2010/01/28 07:31:42 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -288,7 +288,7 @@ vacuum_log_cleanup_info(Relation rel, LVRelStats *vacrelstats) * No need to log changes for temp tables, they do not contain * data visible on the standby server. */ - if (rel->rd_istemp || !XLogArchivingActive()) + if (rel->rd_istemp || !XLogIsNeeded()) return; (void) log_heap_cleanup_info(rel->rd_node, vacrelstats->latestRemovedXid); diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index ca4d7f289a..d7aeb2fe06 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.98 2010/01/20 19:43:40 heikki Exp $ + * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.99 2010/01/28 07:31:42 heikki Exp $ */ #ifndef XLOG_H #define XLOG_H @@ -186,7 +186,6 @@ extern int MaxStandbyDelay; #define XLogArchivingActive() (XLogArchiveMode) #define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0') -#define XLogStandbyInfoActive() (XLogRequestRecoveryConnections && XLogArchiveMode) /* * This is in walsender.c, but declared here so that we don't need to include @@ -200,6 +199,9 @@ extern int MaxWalSenders; */ #define XLogIsNeeded() (XLogArchivingActive() || (MaxWalSenders > 0)) +/* Do we need to WAL-log information required only for Hot Standby? */ +#define XLogStandbyInfoActive() (XLogRequestRecoveryConnections && XLogIsNeeded()) + #ifdef WAL_DEBUG extern bool XLOG_DEBUG; #endif