]> granicus.if.org Git - postgresql/commitdiff
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;
 }