Tom Lane wrote:
> Peter Eisentraut <pete...@gmx.net> writes:
> > Joshua D. Drake wrote:
> > Do we want to give a more informative error message, like "not supported
> > on this platform?"
> 
> > The trick will be to fit this into the GUC framework.
> 
> You could do it by enforcing the limit in an assign hook, but I'm
> not convinced it's worth the trouble.

I have created a patch to at least display a more helpful message,
without being specific:

        test=> set effective_io_concurrency = 1;
        ERROR:  parameter "effective_io_concurrency" cannot be changed from 0

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://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.497
diff -c -c -r1.497 guc.c
*** src/backend/utils/misc/guc.c        9 Mar 2009 14:34:34 -0000       1.497
--- src/backend/utils/misc/guc.c        28 Mar 2009 23:40:52 -0000
***************
*** 4738,4747 ****
                                        }
                                        if (newval < conf->min || newval > 
conf->max)
                                        {
!                                               ereport(elevel,
!                                                               
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
!                                                                errmsg("%d is 
outside the valid range for parameter \"%s\" (%d .. %d)",
!                                                                               
newval, name, conf->min, conf->max)));
                                                return false;
                                        }
                                }
--- 4738,4753 ----
                                        }
                                        if (newval < conf->min || newval > 
conf->max)
                                        {
!                                               if (conf->min == conf->max)
!                                                       ereport(elevel,
!                                                                       
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
!                                                                        
errmsg("parameter \"%s\" cannot be changed from %d",
!                                                                               
        name, conf->min)));
!                                               else
!                                                       ereport(elevel,
!                                                                       
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
!                                                                        
errmsg("%d is outside the valid range for parameter \"%s\" (%d .. %d)",
!                                                                               
        newval, name, conf->min, conf->max)));
                                                return false;
                                        }
                                }
***************
*** 4810,4819 ****
                                        }
                                        if (newval < conf->min || newval > 
conf->max)
                                        {
!                                               ereport(elevel,
!                                                               
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
!                                                                errmsg("%g is 
outside the valid range for parameter \"%s\" (%g .. %g)",
!                                                                               
newval, name, conf->min, conf->max)));
                                                return false;
                                        }
                                }
--- 4816,4831 ----
                                        }
                                        if (newval < conf->min || newval > 
conf->max)
                                        {
!                                               if (conf->min == conf->max)
!                                                       ereport(elevel,
!                                                                       
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
!                                                                        
errmsg("parameter \"%s\" cannot be changed from %g",
!                                                                               
        name, conf->min)));
!                                               else
!                                                       ereport(elevel,
!                                                                       
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
!                                                                        
errmsg("%g is outside the valid range for parameter \"%s\" (%g .. %g)",
!                                                                               
        newval, name, conf->min, conf->max)));
                                                return false;
                                        }
                                }
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to