Tom Lane wrote:
> Bruce Momjian <[EMAIL PROTECTED]> writes:
> > diff -c -c -r1.294 postgres.c
> > *** src/backend/tcop/postgres.c    25 Sep 2002 20:31:40 -0000    1.294
> > --- src/backend/tcop/postgres.c    26 Sep 2002 05:15:41 -0000
> > ***************
> > *** 1281,1288 ****
> >                            * -d 0 allows user to prevent postmaster debug
> >                            * from propagating to backend.
> >                            */
> > !                         SetConfigOption("server_min_messages", "notice",
> > !                                         ctx, gucsource);
> >                   }
> >                   break;
>   
> > --- 1281,1287 ----
> >                            * -d 0 allows user to prevent postmaster debug
> >                            * from propagating to backend.
> >                            */
> > !                         ResetPGVariable("server_min_messages");
> >                   }
> >                   break;
>   

Turns out I had to revert this change.  There isn't a username at this
point in the code so the ResetPGVariable username test fails, and even
then, I don't think there is any way to set a variable to the value
before -d5 set it.

> If you want "export PGOPTIONS=-d0" to do what the comment says, you'd
> also need to Reset all of the other GUC variables that -dN might have
> set.  However, I'm not sure that I agree with the goal in the first
> place.  If the admin has set debugging on the postmaster command line,
> should it really be possible for users to turn it off so easily?

I see what you are saying, that you can pass -d0 from the client and
undo the -d5.  Yes, I was wondering about that because even on the
command line, if you do -d5 -d0, you still get those extra options.

OK, attached patch applied.  The restriction that you can't lower the
debug level with PGOPTIONS is a separate issue.  What I clearly didn't
want to do was to reset those other options for -d0, and I didn't have
to do that for -d0 to work as advertised.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/tcop/postgres.c,v
retrieving revision 1.296
diff -c -c -r1.296 postgres.c
*** src/backend/tcop/postgres.c 27 Sep 2002 03:34:15 -0000      1.296
--- src/backend/tcop/postgres.c 27 Sep 2002 03:49:34 -0000
***************
*** 1136,1141 ****
--- 1136,1142 ----
        const char *DBName = NULL;
        bool            secure;
        int                     errs = 0;
+       int                     debug_flag = 0;
        GucContext      ctx;
        GucSource       gucsource;
        char       *tmp;
***************
*** 1250,1255 ****
--- 1251,1257 ----
  
                        case 'd':                       /* debug level */
                                {
+                                       debug_flag = atoi(optarg);
                                        /* Set server debugging level. */
                                        if (atoi(optarg) != 0)
                                        {
***************
*** 1259,1283 ****
                                                SetConfigOption("server_min_messages", 
debugstr, ctx, gucsource);
                                                pfree(debugstr);
  
-                                               /*
-                                                * -d is not the same as setting
-                                                * client_min_messages because it 
enables other
-                                                * output options.
-                                                */
-                                               if (atoi(optarg) >= 1)
-                                                       
SetConfigOption("log_connections", "true", ctx, gucsource);
-                                               if (atoi(optarg) >= 2)
-                                                       
SetConfigOption("log_statement", "true", ctx, gucsource);
-                                               if (atoi(optarg) >= 3)
-                                                       
SetConfigOption("debug_print_parse", "true", ctx, gucsource);
-                                               if (atoi(optarg) >= 4)
-                                                       
SetConfigOption("debug_print_plan", "true", ctx, gucsource);
-                                               if (atoi(optarg) >= 5)
-                                                       
SetConfigOption("debug_print_rewritten", "true", ctx, gucsource);
                                        }
                                        else
                                                /*
!                                                * -d 0 allows user to prevent 
postmaster debug
                                                 * from propagating to backend.  It 
would be nice
                                                 * to set it to the postgresql.conf 
value here.
                                                 */
--- 1261,1270 ----
                                                SetConfigOption("server_min_messages", 
debugstr, ctx, gucsource);
                                                pfree(debugstr);
  
                                        }
                                        else
                                                /*
!                                                * -d0 allows user to prevent 
postmaster debug
                                                 * from propagating to backend.  It 
would be nice
                                                 * to set it to the postgresql.conf 
value here.
                                                 */
***************
*** 1519,1524 ****
--- 1506,1527 ----
                                errs++;
                                break;
                }
+ 
+       /*
+        * -d is not the same as setting
+        * server_min_messages because it enables other
+        * output options.
+        */
+       if (debug_flag >= 1)
+               SetConfigOption("log_connections", "true", ctx, gucsource);
+       if (debug_flag >= 2)
+               SetConfigOption("log_statement", "true", ctx, gucsource);
+       if (debug_flag >= 3)
+               SetConfigOption("debug_print_parse", "true", ctx, gucsource);
+       if (debug_flag >= 4)
+               SetConfigOption("debug_print_plan", "true", ctx, gucsource);
+       if (debug_flag >= 5)
+               SetConfigOption("debug_print_rewritten", "true", ctx, gucsource);
  
        /*
         * Post-processing for command line options.

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to