Make RecordTransactionCommit() respect wal_level.
authorRobert Haas <rhaas@postgresql.org>
Fri, 13 Aug 2010 15:45:17 +0000 (15:45 +0000)
committerRobert Haas <rhaas@postgresql.org>
Fri, 13 Aug 2010 15:45:17 +0000 (15:45 +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 a8fdede534007c5bf7426045f8710c78d3646a04..8436deaa1f507739f582ff0fd624eb2110b31cbb 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.293.2.3 2010/08/12 23:25:45 rhaas Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.293.2.4 2010/08/13 15:45:17 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