Re: BUG #2851: Error in documentation or in code? - Mailing list pgsql-bugs

From Bruce Momjian
Subject Re: BUG #2851: Error in documentation or in code?
Date
Msg-id 200612230052.kBN0qrh07606@momjian.us
Whole thread Raw
In response to BUG #2851: Error in documentation or in code?  ("Gurjeet Singh" <singh.gurjeet@gmail.com>)
List pgsql-bugs
Interesting.  The bug was caused because 'on' and 'off' both start with
'o', so the code didn't do tests for partial matches.

The attached, applied patch will do the right thing, checking for at
least two characters for 'on' and 'off'.  The fix will appear in 8.3.

---------------------------------------------------------------------------

Gurjeet Singh wrote:
>
> The following bug has been logged online:
>
> Bug reference:      2851
> Logged by:          Gurjeet Singh
> Email address:      singh.gurjeet@gmail.com
> PostgreSQL version: 8.2.0
> Operating system:   Windows XP Professional
> Description:        Error in documentation or in code?
> Details:
>
> The documentation at
> http://www.postgresql.org/docs/8.2/interactive/config-setting.html states
> that:
>
> Boolean values may be written as ON, OFF, TRUE, FALSE, YES, NO, 1, 0 (all
> case-insensitive) or any unambiguous prefix of these.
>
> But the following doesn't work:
>
> postgres=# set enable_seqscan = of;
> ERROR:  parameter "enable_seqscan" requires a Boolean value
> postgres=#
>
> 'of' is an unambiguous prefix of OFF, but it clearly doesn't work. Is it the
> documentation that needs fix or is it the code?
>
> I tried the following too:
>
> set enable_seqscan = "of"; -- doesn't work
> set enable_seqscan = "off"; -- works
>
> BTW, I tried TR, TRU, FA, FAL, FALS, YE. They all work fine.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faq

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/utils/misc/guc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.362
diff -c -c -r1.362 guc.c
*** src/backend/utils/misc/guc.c    13 Dec 2006 05:54:48 -0000    1.362
--- src/backend/utils/misc/guc.c    23 Dec 2006 00:50:18 -0000
***************
*** 3575,3586 ****
              *result = false;
      }

!     else if (pg_strcasecmp(value, "on") == 0)
      {
          if (result)
              *result = true;
      }
!     else if (pg_strcasecmp(value, "off") == 0)
      {
          if (result)
              *result = false;
--- 3575,3587 ----
              *result = false;
      }

!     /* 'o' is not unique enough */
!     else if (pg_strncasecmp(value, "on", (len > 2 ? len : 2)) == 0)
      {
          if (result)
              *result = true;
      }
!     else if (pg_strncasecmp(value, "off", (len > 2 ? len : 2)) == 0)
      {
          if (result)
              *result = false;

pgsql-bugs by date:

Previous
From: "Gurjeet Singh"
Date:
Subject: Re: BUG #2847: Bug with IN statement
Next
From: Bruce Momjian
Date:
Subject: Re: BUG #2852: User-defined type name begins with the