Обсуждение: Enhancement Idea - Expose the active value of a parameter inpg_settings

Поиск
Список
Период
Сортировка

Enhancement Idea - Expose the active value of a parameter inpg_settings

От
Greg Clough
Дата:
Hi Hackers,

I would like to propose that we expose the "active" value of parameters in pg_settings, instead of "-1".  In this
examplebelow, when it's set to "-1" I need to know that autovacuum_work_mem is related to the setting of
maintenance_work_mem,so that I can determine that the actual setting is 64MB: 

postgresql.conf
===============
#autovacuum_work_mem = -1               # min 1MB, or -1 to use maintenance_work_mem
#maintenance_work_mem = 64MB            # min 1MB


pg_settings
===========
postgres=# SELECT name, setting, unit FROM pg_settings WHERE name IN ('autovacuum_work_mem','maintenance_work_mem');
        name         | setting | unit
----------------------+---------+------
autovacuum_work_mem  | -1      | kB
maintenance_work_mem | 65536   | kB
(2 rows)


I think it would make sense to create a new column called something like "active_setting", which will allow simple
verificationof the setting that's in use without having to know the specifics about the parameter's relationship with
others,and the version of PostgreSQL.  For parameters where "-1" is a real setting that has meaning (e.g.
log_min_duration_statement),then it should return "-1". 

I presume that as a part of running the server that we have already decoded what the active values should be, so I'm
askingif we can expose this data via the pg_settings view? 

Regards
Greg Clough

https://ipreo.com


********* Confidential Disclaimer *********

This e-mail message and any attachments are confidential. Dissemination, distribution or copying of this e-mail or any
attachmentsby anyone other than the intended recipient is prohibited. If you are not the intended recipient, please
notifyIpreo immediately by replying to this e-mail, and destroy all copies of this e-mail and any attachments. If you
havereceived this e-mail as part of a marketing communication and you would like to unsubscribe from future marketing
communications,please review our privacy policy<http://info.ipreo.com/Ipreo-Private-Policy.html> for more information. 










Re: Enhancement Idea - Expose the active value of a parameter in pg_settings

От
Tom Lane
Дата:
Greg Clough <greg.clough@ipreo.com> writes:
> I would like to propose that we expose the "active" value of parameters in pg_settings, instead of "-1".  In this
examplebelow, when it's set to "-1" I need to know that autovacuum_work_mem is related to the setting of
maintenance_work_mem,so that I can determine that the actual setting is 64MB: 

If we did that, how would you tell the difference between "-1" and a hard
setting of 64MB?

            regards, tom lane


Re: Enhancement Idea - Expose the active value of a parameter in pg_settings

От
Andrew Dunstan
Дата:
On Fri, May 25, 2018 at 9:58 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Greg Clough <greg.clough@ipreo.com> writes:
>> I would like to propose that we expose the "active" value of parameters in pg_settings, instead of "-1".  In this
examplebelow, when it's set to "-1" I need to know that autovacuum_work_mem is related to the setting of
maintenance_work_mem,so that I can determine that the actual setting is 64MB: 
>
> If we did that, how would you tell the difference between "-1" and a hard
> setting of 64MB?
>

He's proposing an extra column to show the actual value used, so
distinguishing them should be a problem.

cheers

andrew


--
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Re: Enhancement Idea - Expose the active value of a parameter in pg_settings

От
Robert Haas
Дата:
On Fri, May 25, 2018 at 10:11 AM, Andrew Dunstan
<andrew.dunstan@2ndquadrant.com> wrote:
> He's proposing an extra column to show the actual value used, so
> distinguishing them should be a problem.

For most settings, that column would just be a duplicate.  For a
handful, it would pull in the value of some other GUC.  If somebody
finds that useful, cool, they can write a view that does it and
install it on their own cluster.  I don't think that it makes a lot of
sense to put it in core, though.  My guess would be that more people
would be annoyed or confused by the extra column than would be pleased
or enlightened by it.  I could of course be wrong.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: Enhancement Idea - Expose the active value of a parameter in pg_settings

От
Tom Lane
Дата:
Robert Haas <robertmhaas@gmail.com> writes:
> On Fri, May 25, 2018 at 10:11 AM, Andrew Dunstan
> <andrew.dunstan@2ndquadrant.com> wrote:
>> He's proposing an extra column to show the actual value used, so
>> distinguishing them should be a problem.

> For most settings, that column would just be a duplicate.  For a
> handful, it would pull in the value of some other GUC.  If somebody
> finds that useful, cool, they can write a view that does it and
> install it on their own cluster.  I don't think that it makes a lot of
> sense to put it in core, though.  My guess would be that more people
> would be annoyed or confused by the extra column than would be pleased
> or enlightened by it.  I could of course be wrong.

Yeah, that's pretty much my evaluation --- given the tiny number of
GUCs that have behaviors like this, an extra column seems like it
would mostly be confusing.  Plus, pg_settings is too darn wide already.

Personally, what I'd rather do is try to get rid of GUC behaviors like
"the effective value depends on something else".  But convenience and
backwards compatibility may be arguments against that.

            regards, tom lane


Re: Enhancement Idea - Expose the active value of a parameter in pg_settings

От
Robert Haas
Дата:
On Fri, May 25, 2018 at 10:22 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Personally, what I'd rather do is try to get rid of GUC behaviors like
> "the effective value depends on something else".  But convenience and
> backwards compatibility may be arguments against that.

Yeah.  The dependency between various GUCs is something that I don't
like very much either.  However, AFAICT, the limited number of GUCs
that have behaviors like this mostly all do for good reasons,
generally that there are two GUCs which people usually want set the
same way but occasionally not.  Decoupling the GUCs could lead to
people accidentally shooting themselves in the foot, and as you
mention it would also break configurations that work today when users
try to upgrade.  Maybe it would be worth going through that pain if we
could point to some really compelling benefit (if you do this, the
whole system can run 10% faster!) but I know of no such benefit.  It
seems more like a wart than a bullet wound.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


RE: Enhancement Idea - Expose the active value of a parameter inpg_settings

От
Greg Clough
Дата:
>> On Fri, May 25, 2018 at 10:11 AM, Andrew Dunstan
>> <andrew.dunstan@2ndquadrant.com> wrote:
>>> He's proposing an extra column to show the actual value used, so
>>> distinguishing them should be a problem.
>
>> For most settings, that column would just be a duplicate.  For a
>> handful, it would pull in the value of some other GUC.  If somebody
>> finds that useful, cool, they can write a view that does it and
>> install it on their own cluster.  I don't think that it makes a lot of
>> sense to put it in core, though.  My guess would be that more people
>> would be annoyed or confused by the extra column than would be pleased
>> or enlightened by it.  I could of course be wrong.
>
> Yeah, that's pretty much my evaluation --- given the tiny number of
> GUCs that have behaviors like this, an extra column seems like it
> would mostly be confusing.  Plus, pg_settings is too darn wide already.
>
> Personally, what I'd rather do is try to get rid of GUC behaviors like
> "the effective value depends on something else".  But convenience and
> backwards compatibility may be arguments against that.
>
> regards, tom lane

Many thanks for the quick consideration, even if it's ultimately a rejection.  Figuring out some SQL that will work
acrossall platforms, versions, and compile-time options will be "fun", but I'm up for a challenge. 

It came about because I was scraping the entire cluster with "pgmetrics", and I was trying to reduce all "size" numeric
settingsdown to bytes for them. I figured it would be nice if PostgreSQL could expose the data it's already got rather
thanforcing all external applications that want that data to do the same thing. 

I'll deal with it externally, but I hope it was a reasonable proposal and not completely off-the-wall.

Regards,
Greg Clough.


********* Confidential Disclaimer *********

This e-mail message and any attachments are confidential. Dissemination, distribution or copying of this e-mail or any
attachmentsby anyone other than the intended recipient is prohibited. If you are not the intended recipient, please
notifyIpreo immediately by replying to this e-mail, and destroy all copies of this e-mail and any attachments. If you
havereceived this e-mail as part of a marketing communication and you would like to unsubscribe from future marketing
communications,please review our privacy policy<http://info.ipreo.com/Ipreo-Private-Policy.html> for more information. 










Re: Enhancement Idea - Expose the active value of a parameter in pg_settings

От
Robert Haas
Дата:
On Fri, May 25, 2018 at 12:14 PM, Greg Clough <greg.clough@ipreo.com> wrote:
> Many thanks for the quick consideration, even if it's ultimately a rejection.  Figuring out some SQL that will work
acrossall platforms, versions, and compile-time options will be "fun", but I'm up for a challenge.
 

Why would you need different SQL for this on different platforms or
with different compile-time options?

I agree that there could be some variation across major versions, but
I don't think there's a lot.

BTW, posting to a public mailing list with a giant blob of legalese
about confidential information in your signature is kind of silly.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company