On Tue, 2006-12-19 at 19:16 -0500, Tom Lane wrote:
> Peter Eisentraut <[EMAIL PROTECTED]> writes:
> > Perhaps it would be more effective to clarify the error message?  Right 
> > now it just says something to the effect of "invalid integer".  I'd 
> > imagine "invalid memory unit: TB" would be less confusing.
> 
> +1 on that, but I think we should just accept the strings
> case-insensitively, too.  SQL in general is not case sensitive for
> keywords, and neither is anything else in the postgresql.conf file,
> so I argue it's inconsistent to be strict about the case for units.

Hello,

Attached is a simple patch that replaces strcmp() with pg_strcasecmp().
Thanks to AndrewS for pointing out that I shouldn't use strcasecp().

I compiled and installed, ran an initdb with 32mb (versus 32MB) and it
seems to work correctly with a show shared_buffers;

Sincerely,

Joshua D. Drake




-- 

      === The PostgreSQL Company: Command Prompt, Inc. ===
Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240
Providing the most comprehensive  PostgreSQL solutions since 1997
             http://www.commandprompt.com/

Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate


Index: guc.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/misc/guc.c,v
retrieving revision 1.362
diff -c -r1.362 guc.c
*** guc.c	13 Dec 2006 05:54:48 -0000	1.362
--- guc.c	20 Dec 2006 00:59:15 -0000
***************
*** 3630,3647 ****
  		while (*endptr == ' ')
  			endptr++;
  
! 		if (strcmp(endptr, "kB") == 0)
  		{
  			used = true;
  			endptr += 2;
  		}
! 		else if (strcmp(endptr, "MB") == 0)
  		{
  			val *= KB_PER_MB;
  			used = true;
  			endptr += 2;
  		}
! 		else if (strcmp(endptr, "GB") == 0)
  		{
  			val *= KB_PER_GB;
  			used = true;
--- 3630,3647 ----
  		while (*endptr == ' ')
  			endptr++;
  
! 		if (pg_strcasecmp(endptr, "kB") == 0)
  		{
  			used = true;
  			endptr += 2;
  		}
! 		else if (pg_strcasecmp(endptr, "MB") == 0)
  		{
  			val *= KB_PER_MB;
  			used = true;
  			endptr += 2;
  		}
! 		else if (pg_strcasecmp(endptr, "GB") == 0)
  		{
  			val *= KB_PER_GB;
  			used = true;
***************
*** 3669,3698 ****
  		while (*endptr == ' ')
  			endptr++;
  
! 		if (strcmp(endptr, "ms") == 0)
  		{
  			used = true;
  			endptr += 2;
  		}
! 		else if (strcmp(endptr, "s") == 0)
  		{
  			val *= MS_PER_S;
  			used = true;
  			endptr += 1;
  		}
! 		else if (strcmp(endptr, "min") == 0)
  		{
  			val *= MS_PER_MIN;
  			used = true;
  			endptr += 3;
  		}
! 		else if (strcmp(endptr, "h") == 0)
  		{
  			val *= MS_PER_H;
  			used = true;
  			endptr += 1;
  		}
! 		else if (strcmp(endptr, "d") == 0)
  		{
  			val *= MS_PER_D;
  			used = true;
--- 3669,3698 ----
  		while (*endptr == ' ')
  			endptr++;
  
! 		if (pg_strcasecmp(endptr, "ms") == 0)
  		{
  			used = true;
  			endptr += 2;
  		}
! 		else if (pg_strcasecmp(endptr, "s") == 0)
  		{
  			val *= MS_PER_S;
  			used = true;
  			endptr += 1;
  		}
! 		else if (pg_strcasecmp(endptr, "min") == 0)
  		{
  			val *= MS_PER_MIN;
  			used = true;
  			endptr += 3;
  		}
! 		else if (pg_strcasecmp(endptr, "h") == 0)
  		{
  			val *= MS_PER_H;
  			used = true;
  			endptr += 1;
  		}
! 		else if (pg_strcasecmp(endptr, "d") == 0)
  		{
  			val *= MS_PER_D;
  			used = true;
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to