Re: [HACKERS] Advice regarding configuration parameters

2004-06-06 Thread Joe Conway
Thomas Hallgren wrote:
Some very good suggestions where made here. What happens next? Will this end
up in a TODO list where someone can claim the task (I'm trying to learn
how the process works) ?
If someone doesn't jump right on it and make a diff -c proposal, it 
probably belongs on the TODO list. If your need is sufficiently high, 
and you have the time to take it on, then go for it ;-). If not, I might 
someday, but no promises for 7.5.

Joe

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Advice regarding configuration parameters

2004-06-05 Thread Thomas Hallgren
Some very good suggestions where made here. What happens next? Will this end
up in a TODO list where someone can claim the task (I'm trying to learn
how the process works) ?

Kind regards,

Thomas Hallgren

- Original Message - 
From: Tom Lane [EMAIL PROTECTED]
To: Joe Conway [EMAIL PROTECTED]
Cc: Peter Eisentraut [EMAIL PROTECTED]; Thomas Hallgren
[EMAIL PROTECTED]; [EMAIL PROTECTED]
Sent: Friday, February 06, 2004 19:15
Subject: Re: [HACKERS] Advice regarding configuration parameters


 Joe Conway [EMAIL PROTECTED] writes:
  I like it. I wonder if we ought to have a way to register valid
  classes? Maybe a new guc variable in the form of a list of valid
  classes. So something like:

 There are some order-of-processing issues there, but maybe.  Another
 possibility is that after a shlib has finished registering its
 variables, it could look for remaining placeholders matching its prefix
 and issue WARNINGs about 'em (it can't realistically ERROR, probably,
 but a WARNING would surely help).  These are actually orthogonal checks
 since one addresses the class part and the other the individual variable.

  And we'd have to think a little about how to handle variable values
  that are discovered to be erroneous when we try to assign them to the
  variable --- probably we can just drop them, but does that make the
  semantics weird at all?

  Maybe we can require a default value as a parameter to
  add_guc_variable() and use that?

 Well, the new GUC variable struct would include a default by definition,
 and presumably that value would bubble up to replace any values that
 are found illegal.

 The sort of semantic funny I am thinking of is like this:
 * postgresql.conf contains pljava::var = somegoodvalue
 * ALTER DATABASE SET supplies pljava::var = somebadvalue
 For builtin variables the ALTER DATABASE value would be rejected on
 sight and the end result would be that the variable contains
 'somegoodvalue'.  However if we don't yet know the variable at backend
 startup, 'somebadvalue' will replace 'somegoodvalue' completely, and
 then when the PL actually gets loaded it will get thrown away.  End
 result is that the variable will have whatever its hardwired default is,
 and not 'somegoodvalue' as one would wish.  Even more surprising, a
 subsequent SIGHUP would make it acquire 'somegoodvalue'.

 This particular case could be dealt with by forcing a rescan of
 postgresql.conf after new variables are defined (I think we need only do
 so if any errors are detected in assigning values), but that will not
 handle everything.  We don't have any way to get back overridden values
 from other sources such as the postmaster command line.

 It seems likely to me that such corner cases are sufficiently bizarre to
 not bother anyone, but we need to think more to make sure that there
 aren't any that would bother someone.

 regards, tom lane



---(end of broadcast)---
TIP 7: don't forget to increase your free space map settings


Re: [HACKERS] Advice regarding configuration parameters

2004-05-11 Thread Thomas Hallgren
Tom Lane wrote:
The sort of semantic funny I am thinking of is like this:
* postgresql.conf contains pljava::var = somegoodvalue
* ALTER DATABASE SET supplies pljava::var = somebadvalue
For builtin variables the ALTER DATABASE value would be rejected on
sight and the end result would be that the variable contains
'somegoodvalue'.  However if we don't yet know the variable at backend
startup, 'somebadvalue' will replace 'somegoodvalue' completely, and
then when the PL actually gets loaded it will get thrown away.  End
result is that the variable will have whatever its hardwired default is,
and not 'somegoodvalue' as one would wish.  Even more surprising, a
subsequent SIGHUP would make it acquire 'somegoodvalue'.
This particular case could be dealt with by forcing a rescan of
postgresql.conf after new variables are defined (I think we need only do
so if any errors are detected in assigning values), but that will not
handle everything.  We don't have any way to get back overridden values
from other sources such as the postmaster command line.
This is the one case that I, after some consideration, decided not to 
deal with. I feel that a rescan will only partially solve the problem 
anyway. There might have been multiple assignments to a placeholder 
prior to when the module is loaded. The only way to implement something 
in this direction is to remember all assignments that has been made to 
each placeholder variable and then fall back to the last one that has an 
OK value once the module loads. Since a warning mechanism is in place 
already I felt that such an implementation would be overkill.

Kind regards,

Thomas Hallgren

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Advice regarding configuration parameters

2004-05-09 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 Peter Eisentraut wrote:
 I have been thinking for some time about a generic mechanism to
 configure procedural languages.  It could be a text array in
 pg_language that you could fill at will.

 One big question is whether the per-language variables are per-server or
 per-database.  The might determine if you want them in the database or
 in a configuration file.

Of course, there's already a solution for that in GUC.

Given all the work Peter put into GUC (for very good reasons), I was a
tad astonished to read him proposing to develop a non-GUC mechanism
for configuring PLs.

regards, tom lane

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [HACKERS] Advice regarding configuration parameters

2004-04-28 Thread Thomas Hallgren
Patch posted on the patches list :-)

Let me know what you think.

- thomas

Joe Conway [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 Thomas Hallgren wrote:
  Some very good suggestions where made here. What happens next? Will this
end
  up in a TODO list where someone can claim the task (I'm trying to
learn
  how the process works) ?

 If someone doesn't jump right on it and make a diff -c proposal, it
 probably belongs on the TODO list. If your need is sufficiently high,
 and you have the time to take it on, then go for it ;-). If not, I might
 someday, but no promises for 7.5.

 Joe




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




---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Advice regarding configuration parameters

2004-02-20 Thread Bruce Momjian
Thomas Hallgren wrote:
 How about,
 
 Allow outside agents to extend the GUC variable set

Added:

* Allow external interfaces to extend the GUC variable set

---


 
 - thomas
 
 - Original Message - 
 From: Bruce Momjian [EMAIL PROTECTED]
 To: Thomas Hallgren [EMAIL PROTECTED]
 Cc: Joe Conway [EMAIL PROTECTED]; Tom Lane [EMAIL PROTECTED];
 Peter Eisentraut [EMAIL PROTECTED]; [EMAIL PROTECTED]
 Sent: Friday, February 20, 2004 04:39
 Subject: Re: [HACKERS] Advice regarding configuration parameters
 
 
  Thomas Hallgren wrote:
   No, this was not related to triggers at all. The original discussion
   concerned GUC functionality to handle configuration settings for
 pllang
   extensions.
 
  OK.  If you guys agree on TODO wording, I will add it.
 
  -- 
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
 
 
 
 ---(end of broadcast)---
 TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
 

-- 
  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

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Advice regarding configuration parameters

2004-02-19 Thread Joe Conway
Thomas Hallgren wrote:
Some very good suggestions where made here. What happens next? Will this end
up in a TODO list where someone can claim the task (I'm trying to learn
how the process works) ?
If someone doesn't jump right on it and make a diff -c proposal, it 
probably belongs on the TODO list. If your need is sufficiently high, 
and you have the time to take it on, then go for it ;-). If not, I might 
someday, but no promises for 7.5.

Joe



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


Re: [HACKERS] Advice regarding configuration parameters

2004-02-19 Thread Bruce Momjian
Joe Conway wrote:
 Thomas Hallgren wrote:
  Some very good suggestions where made here. What happens next? Will this end
  up in a TODO list where someone can claim the task (I'm trying to learn
  how the process works) ?
 
 If someone doesn't jump right on it and make a diff -c proposal, it 
 probably belongs on the TODO list. If your need is sufficiently high, 
 and you have the time to take it on, then go for it ;-). If not, I might 
 someday, but no promises for 7.5.

I assume this is regarding disabling of triggers. We already have that
on the TODO list:

* Allow triggers to be disabled [trigger]

-- 
  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

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Advice regarding configuration parameters

2004-02-19 Thread Thomas Hallgren
No, this was not related to triggers at all. The original discussion
concerned GUC functionality to handle configuration settings for pllang
extensions.

- thomas

- Original Message - 
From: Bruce Momjian [EMAIL PROTECTED]
To: Joe Conway [EMAIL PROTECTED]
Cc: Thomas Hallgren [EMAIL PROTECTED]; Tom Lane
[EMAIL PROTECTED]; Peter Eisentraut [EMAIL PROTECTED];
[EMAIL PROTECTED]
Sent: Thursday, February 19, 2004 21:00
Subject: Re: [HACKERS] Advice regarding configuration parameters


 Joe Conway wrote:
  Thomas Hallgren wrote:
   Some very good suggestions where made here. What happens next? Will
this end
   up in a TODO list where someone can claim the task (I'm trying to
learn
   how the process works) ?
 
  If someone doesn't jump right on it and make a diff -c proposal, it
  probably belongs on the TODO list. If your need is sufficiently high,
  and you have the time to take it on, then go for it ;-). If not, I might
  someday, but no promises for 7.5.

 I assume this is regarding disabling of triggers. We already have that
 on the TODO list:

 * Allow triggers to be disabled [trigger]

 -- 
   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



---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [HACKERS] Advice regarding configuration parameters

2004-02-19 Thread Bruce Momjian
Thomas Hallgren wrote:
 No, this was not related to triggers at all. The original discussion
 concerned GUC functionality to handle configuration settings for pllang
 extensions.

OK.  If you guys agree on TODO wording, I will add it.

-- 
  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

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faqs/FAQ.html


Re: [HACKERS] Advice regarding configuration parameters

2004-02-10 Thread James William Pye
On 02/06/04:05/5, Tom Lane wrote:
 To: Joe Conway [EMAIL PROTECTED]
 Cc: Peter Eisentraut [EMAIL PROTECTED],
   Thomas Hallgren [EMAIL PROTECTED],
   [EMAIL PROTECTED]
 Subject: Re: [HACKERS] Advice regarding configuration parameters 
 Date: Fri, 06 Feb 2004 13:15:02 -0500
 Message-ID: [EMAIL PROTECTED]
 From: Tom Lane [EMAIL PROTECTED]
 
 Joe Conway [EMAIL PROTECTED] writes:
  I like it. I wonder if we ought to have a way to register valid
  classes? Maybe a new guc variable in the form of a list of valid
  classes. So something like:
 
 There are some order-of-processing issues there, but maybe.  Another
 possibility is that after a shlib has finished registering its
 variables, it could look for remaining placeholders matching its prefix
 and issue WARNINGs about 'em (it can't realistically ERROR, probably,
 but a WARNING would surely help).  These are actually orthogonal checks
 since one addresses the class part and the other the individual variable.
 
  And we'd have to think a little about how to handle variable values
  that are discovered to be erroneous when we try to assign them to the
  variable --- probably we can just drop them, but does that make the
  semantics weird at all?
 
  Maybe we can require a default value as a parameter to 
  add_guc_variable() and use that?
 
 Well, the new GUC variable struct would include a default by definition,
 and presumably that value would bubble up to replace any values that
 are found illegal.
 
 The sort of semantic funny I am thinking of is like this:
 * postgresql.conf contains pljava::var = somegoodvalue
 * ALTER DATABASE SET supplies pljava::var = somebadvalue
 For builtin variables the ALTER DATABASE value would be rejected on
 sight and the end result would be that the variable contains
 'somegoodvalue'.  However if we don't yet know the variable at backend
 startup, 'somebadvalue' will replace 'somegoodvalue' completely, and
 then when the PL actually gets loaded it will get thrown away.  End
 result is that the variable will have whatever its hardwired default is,
 and not 'somegoodvalue' as one would wish.  Even more surprising, a
 subsequent SIGHUP would make it acquire 'somegoodvalue'.
 
 This particular case could be dealt with by forcing a rescan of
 postgresql.conf after new variables are defined (I think we need only do
 so if any errors are detected in assigning values), but that will not
 handle everything.  We don't have any way to get back overridden values
 from other sources such as the postmaster command line.
 
 It seems likely to me that such corner cases are sufficiently bizarre to
 not bother anyone, but we need to think more to make sure that there
 aren't any that would bother someone.

What about having a designated GUC configuration file directory, one file per
class? When a given class is initialized, it tries to find its corresponding
config file in $DATA/conf/$CLASSFILENAME. $CLASSFILENAME then being able
to differ from the actual classname, perhaps. Also, the variable's classname
would be implied from the filename that it's loaded from. So no need to
classsome specifiervarname.

I guess postgres.conf should be considered the 'main' or 'postgres' class,
and should probably exist in $DATA/conf/(postgres|main), or whatever people
think is the most descriptive. It doesn't have to be moved, but I figure it
would take away one special case(except on setting a var without classname).

I think this would resolve any out of order issues with one file. No?


Regards,
James William Pye

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Advice regarding configuration parameters

2004-02-09 Thread Peter Eisentraut
Tom Lane wrote:
 Given all the work Peter put into GUC (for very good reasons), I was
 a tad astonished to read him proposing to develop a non-GUC mechanism
 for configuring PLs.

I for one was a tad astonished to read that there is already support for 
adding variables at run-time, given that we previously rejected that 
notion. But the namespace idea for variables added by external 
modules sounds interesting.


---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Advice regarding configuration parameters

2004-02-07 Thread Bruce Momjian
Peter Eisentraut wrote:
 Am Freitag, 6. Februar 2004 10:27 schrieb Thomas Hallgren:
  I would like some configuration parameters to Pl/Java and I would like some
  advice. Where should they go?
 
  1. Something similar to postgresql.conf (it's not extendable though, is
  it?)
 
 No, it is not.
 
  2. A Table in the database in the sqlj schema
 
 That could be an OK solution if you don't need to read the values every time.
 
  3. Java properties file (cumbersome, must be available prior to starting
  the JVM)
 
 Yes, probably too cumbersome.
 
  4. Some other place that is obvious but not currently known to me
 
 I have been thinking for some time about a generic mechanism to configure 
 procedural languages.  It could be a text array in pg_language that you could 
 fill at will.  That way, it would be easily available to the language handler 
 or the actual function.  Of course, this is still only marginally better than 
 a regular table in your own schema.

One big question is whether the per-language variables are per-server or
per-database.  The might determine if you want them in the database or
in a configuration file.

-- 
  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

---(end of broadcast)---
TIP 8: explain analyze is your friend


[HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Thomas Hallgren
I would like some configuration parameters to Pl/Java and I would like some
advice. Where should they go?

1. Something similar to postgresql.conf (it's not extendable though, is it?)
2. A Table in the database in the sqlj schema
3. Java properties file (cumbersome, must be available prior to starting the
JVM)
4. Some other place that is obvious but not currently known to me

Thanks,

Thomas Hallgren




---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Peter Eisentraut
Am Freitag, 6. Februar 2004 10:27 schrieb Thomas Hallgren:
 I would like some configuration parameters to Pl/Java and I would like some
 advice. Where should they go?

 1. Something similar to postgresql.conf (it's not extendable though, is
 it?)

No, it is not.

 2. A Table in the database in the sqlj schema

That could be an OK solution if you don't need to read the values every time.

 3. Java properties file (cumbersome, must be available prior to starting
 the JVM)

Yes, probably too cumbersome.

 4. Some other place that is obvious but not currently known to me

I have been thinking for some time about a generic mechanism to configure 
procedural languages.  It could be a text array in pg_language that you could 
fill at will.  That way, it would be easily available to the language handler 
or the actual function.  Of course, this is still only marginally better than 
a regular table in your own schema.


---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Tom Lane
Peter Eisentraut [EMAIL PROTECTED] writes:
 Am Freitag, 6. Februar 2004 10:27 schrieb Thomas Hallgren:
 I would like some configuration parameters to Pl/Java and I would like some
 advice. Where should they go?
 
 1. Something similar to postgresql.conf (it's not extendable though, is
 it?)

 No, it is not.

In principle it could be --- the mechanisms already exist in guc.c to
permit outside agents to add variables.  The difficulty in having a PL
handler add such variables is that there is no good way to get the
handler to run before postgresql.conf is scanned for the first time,
and if it isn't then GUC will error out on the unknown variable name.

 I have been thinking for some time about a generic mechanism to
 configure procedural languages.  It could be a text array in
 pg_language that you could fill at will.

If we had a mechanism that allowed unrecognized variable names in
postgresql.conf to be saved and reprocessed later, we could allow PLs
and other dynamically-loaded libraries to be configured via ordinary GUC
variables, which would be much nicer than a special-purpose mechanism.
Of course this would have a negative impact on the ability to detect
plain old misspellings in the config file.  Perhaps we could have a
compromise that says that specially formed variable names, maybe like
pljava::myparam, are allowed to escape the normal error check.

regards, tom lane

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Tom Lane
Joe Conway [EMAIL PROTECTED] writes:
 I still think it is a good idea and that 
 the difficulties can be worked out.

What do you think of the idea of suppressing the unknown variable
error for some class of variable names?

If we had agreement on doing that then I think the rest would be pretty
simple.  After a few moments' thought I like the following sketch:

* When a GUC setting read from postgresql.conf (or any other GUC setting
source) contains an unknown variable name that fits the special class,
create a placeholder GUC variable and insert it into the GUC variable
array.  The placeholder will be a STRING-type variable and will have a
flag set to mark it as a placeholder.  This flag would prevent it from
being shown by SHOW ALL, but in other respects it would act like any
other variable.

* Subsequent manipulations, such as overriding of the value from ALTER
DATABASE or other sources, will work normally.  Therefore at all times
we will have the correct setting of the placeholder available as a
string.  (Actually there are several settings: current, reset, etc,
but we'd know them all.)

* When and if the PL (or other shared library) that uses the variable is
loaded, it will execute an add_guc_variable call during its one-time
initialization.  This new function either adds a GUC variable (if no
match in the present GUC array) or replaces a placeholder variable (if
found).  In event that a placeholder is replaced, we convert the string
value(s) as needed and assign to the newly defined variable.

This scheme could not handle add-on GUC variables with some of the odder
flags, such as GUC_LIST_INPUT, since the correct flag values wouldn't be
known when the input is first seen.  And we'd have to think a little
about how to handle variable values that are discovered to be erroneous
when we try to assign them to the variable --- probably we can just drop
them, but does that make the semantics weird at all?  But I think it
would solve 99% of the problem for only a small amount of work.

regards, tom lane

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Joe Conway
Tom Lane wrote:
Peter Eisentraut [EMAIL PROTECTED] writes:
Am Freitag, 6. Februar 2004 10:27 schrieb Thomas Hallgren:
1. Something similar to postgresql.conf (it's not extendable though, is
it?)

No, it is not.
In principle it could be --- the mechanisms already exist in guc.c to
permit outside agents to add variables.  The difficulty in having a PL
handler add such variables is that there is no good way to get the
handler to run before postgresql.conf is scanned for the first time,
and if it isn't then GUC will error out on the unknown variable name.
I had started down this road about a year ago (i.e. had a partial 
patch), for exactly the same reason Thomas is interested -- I wanted it 
for PL/R. But the consensus at the time seemed to be that it wouldn't be 
accepted so I gave up on it. I still think it is a good idea and that 
the difficulties can be worked out.

Joe

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faqs/FAQ.html


Re: [HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Joe Conway
Tom Lane wrote:
What do you think of the idea of suppressing the unknown variable 
error for some class of variable names?
I like it. I wonder if we ought to have a way to register valid
classes? Maybe a new guc variable in the form of a list of valid
classes. So something like:
custom_variable_class = 'plr,pljava'
plr::foo = '/usr/lib/R'
pljava::baz = 1
plruby::var = true== this one would generate an error
If we had agreement on doing that then I think the rest would be
pretty simple.  After a few moments' thought I like the following
sketch:
[good implementation ideas]

This scheme could not handle add-on GUC variables with some of the
odder flags, such as GUC_LIST_INPUT, since the correct flag values
wouldn't be known when the input is first seen.
I think this is OK.

And we'd have to think a little about how to handle variable values
that are discovered to be erroneous when we try to assign them to the
variable --- probably we can just drop them, but does that make the
semantics weird at all?
Maybe we can require a default value as a parameter to 
add_guc_variable() and use that?

Joe

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


Re: [HACKERS] Advice regarding configuration parameters

2004-02-06 Thread Tom Lane
Joe Conway [EMAIL PROTECTED] writes:
 I like it. I wonder if we ought to have a way to register valid
 classes? Maybe a new guc variable in the form of a list of valid
 classes. So something like:

There are some order-of-processing issues there, but maybe.  Another
possibility is that after a shlib has finished registering its
variables, it could look for remaining placeholders matching its prefix
and issue WARNINGs about 'em (it can't realistically ERROR, probably,
but a WARNING would surely help).  These are actually orthogonal checks
since one addresses the class part and the other the individual variable.

 And we'd have to think a little about how to handle variable values
 that are discovered to be erroneous when we try to assign them to the
 variable --- probably we can just drop them, but does that make the
 semantics weird at all?

 Maybe we can require a default value as a parameter to 
 add_guc_variable() and use that?

Well, the new GUC variable struct would include a default by definition,
and presumably that value would bubble up to replace any values that
are found illegal.

The sort of semantic funny I am thinking of is like this:
* postgresql.conf contains pljava::var = somegoodvalue
* ALTER DATABASE SET supplies pljava::var = somebadvalue
For builtin variables the ALTER DATABASE value would be rejected on
sight and the end result would be that the variable contains
'somegoodvalue'.  However if we don't yet know the variable at backend
startup, 'somebadvalue' will replace 'somegoodvalue' completely, and
then when the PL actually gets loaded it will get thrown away.  End
result is that the variable will have whatever its hardwired default is,
and not 'somegoodvalue' as one would wish.  Even more surprising, a
subsequent SIGHUP would make it acquire 'somegoodvalue'.

This particular case could be dealt with by forcing a rescan of
postgresql.conf after new variables are defined (I think we need only do
so if any errors are detected in assigning values), but that will not
handle everything.  We don't have any way to get back overridden values
from other sources such as the postmaster command line.

It seems likely to me that such corner cases are sufficiently bizarre to
not bother anyone, but we need to think more to make sure that there
aren't any that would bother someone.

regards, tom lane

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster