Minor editorialization: don't flush plan cache without need.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 5 Jun 2007 21:50:19 +0000 (21:50 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 5 Jun 2007 21:50:19 +0000 (21:50 +0000)
src/backend/utils/misc/guc.c

index 3428d0a172f3e0e75e984445f147f836104b7cc9..6e412e328a11a7100e89962b8af33f9138296d20 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.394 2007/06/05 20:00:41 wieck Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.395 2007/06/05 21:50:19 tgl Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -6270,32 +6270,27 @@ assign_defaultxactisolevel(const char *newval, bool doit, GucSource source)
 static const char *
 assign_session_replication_role(const char *newval, bool doit, GucSource source)
 {
+   int     newrole;
+
    if (pg_strcasecmp(newval, "origin") == 0)
-   {
-       if (doit)
-       {
-           ResetPlanCache();
-           SessionReplicationRole = SESSION_REPLICATION_ROLE_ORIGIN;
-       }
-   }
+       newrole = SESSION_REPLICATION_ROLE_ORIGIN;
    else if (pg_strcasecmp(newval, "replica") == 0)
-   {
-       if (doit)
-       {
-           ResetPlanCache();
-           SessionReplicationRole = SESSION_REPLICATION_ROLE_REPLICA;
-       }
-   }
+       newrole = SESSION_REPLICATION_ROLE_REPLICA;
    else if (pg_strcasecmp(newval, "local") == 0)
-   {
-       if (doit)
-       {
-           ResetPlanCache();
-           SessionReplicationRole = SESSION_REPLICATION_ROLE_LOCAL;
-       }
-   }
+       newrole = SESSION_REPLICATION_ROLE_LOCAL;
    else
        return NULL;
+
+   /*
+    * Must flush the plan cache when changing replication role; but don't
+    * flush unnecessarily.
+    */
+   if (doit && SessionReplicationRole != newrole)
+   {
+       ResetPlanCache();
+       SessionReplicationRole = newrole;
+   }
+
    return newval;
 }