Make RecordTransactionCommit() respect wal_level.
authorRobert Haas
Fri, 13 Aug 2010 15:42:21 +0000 (15:42 +0000)
committerRobert Haas
Fri, 13 Aug 2010 15:42:21 +0000 (15:42 +0000)
Since the only purpose of WAL-loggin SharedInvalidationMessages is to support
Hot Standby operation, they needn't be included when wal_level < hot_standby.

Back-patch to 9.0.

Review by Heikki Linnakanagas and Fujii Masao.

src/backend/access/transam/xact.c

index 37764891d7f26837c5e24754dcbcf699f379ef07..0491d2c8d91b836442af3ee1fa23faa1f04b3294 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.296 2010/08/12 23:24:53 rhaas Exp $
+ *   $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.297 2010/08/13 15:42:21 rhaas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -915,15 +915,16 @@ RecordTransactionCommit(void)
    bool        haveNonTemp;
    int         nchildren;
    TransactionId *children;
-   int         nmsgs;
+   int         nmsgs = 0;
    SharedInvalidationMessage *invalMessages = NULL;
-   bool        RelcacheInitFileInval;
+   bool        RelcacheInitFileInval = false;
 
    /* Get data needed for commit record */
    nrels = smgrGetPendingDeletes(true, &rels, &haveNonTemp);
    nchildren = xactGetCommittedChildren(&children);
-   nmsgs = xactGetCommittedInvalidationMessages(&invalMessages,
-                                                &RelcacheInitFileInval);
+   if (XLogStandbyInfoActive())
+       nmsgs = xactGetCommittedInvalidationMessages(&invalMessages,
+                                                    &RelcacheInitFileInval);
 
    /*
     * If we haven't been assigned an XID yet, we neither can, nor do we want