Re: Proposal: pg_confcheck - syntactic & semantic validation of postgresql configuration files - Mailing list pgsql-hackers
From | Amir Rohan |
---|---|
Subject | Re: Proposal: pg_confcheck - syntactic & semantic validation of postgresql configuration files |
Date | |
Msg-id | 56166A61.1090308@zoho.com Whole thread Raw |
In response to | Re: Proposal: pg_confcheck - syntactic & semantic validation of postgresql configuration files (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: Proposal: pg_confcheck - syntactic & semantic
validation of postgresql configuration files
|
List | pgsql-hackers |
On 10/08/2015 02:38 PM, Tom Lane wrote: > Amir Rohan <amir.rohan@zoho.com> writes: >> Comments? > > ISTM that all of the "functional" parts of this are superseded by > pg_file_settings; To use the new pg_file_settings view you need: 1( 9.5+ 2( a running server The feature is describes as follows in a97e0c3354ace5d74 > The information returned includes the configuration file name, line > number in that file, sequence number indicating when the parameter is > loaded )useful to see if it is later masked by another definition of > the same parameter(, parameter name, and what it is set to at that > point. This information is updated on reload of the server. None of which has much overlap in purpose with what I was suggesting, so I don't see why you think it actually makes it redundant. > or at least, if they aren't, you need to provide a > rationale that doesn't consist only of pointing to pre-9.5 discussions. The original rationale already does AFAICT. > The "advice" parts of it maybe are still useful, but a tool that's just > meant for that would look quite a bit different. Maybe what you're really > after is to update pgtune. > In the sense that pgtune processes .conf files and helps the user choose better settings, yes there's commonality. But in that it looks at 5 GUCs or so and applies canned formulas to silently write out a new .conf without explanation, it's not the same tool. > Also, as a general comment, the sketch you provided seems to require > porting everything the server knows about > GUC file syntax, yes, a parser, possibly sharing code with the server. > file locations, specified via command line option, yes. > variable names and values misc/guc.c is eminently parseable in that sense. For some types, validation is trivial. For others, we do the best we can and improve incrementally. > into some other representation that apparently > is not C, nor Perl either. Well, it's data, it probably should have that anyway. You raise an interesting issue that having the schema for the configuration described in a more congenial format than C code would have made implementing this easier, and may actually be worthwhile in its own right. Aside on parsing, when starting a brand new configuration file was suggested in CAOG9ApHYCPmTypAAwfD3_V7sVOkbnECFivmRc1AxhB40ZBSwNQ@mail.gmail.com/ only so json could be used for configuring that feature, I wrote a parser that extends postgresql.conf to accept JSON objects as values as a toy exercise. It's not rocket science. So, None of the above seem like a major hurdle to me. > I think that's likely to be impossible to keep accurate or up to date. If significant rot sets in a few releases down the line, there may be more false positives. But then again if users found it useful so developers cared about keeping it up to data, it wouldn't get that way. Again, previous note about DRY and lack of explicit schema for GUCs except in code form. Also, this depends crucially on the GUC churn rate, which admittedly you are far better qualified to pronounce on than me. > Just as a thought experiment, > ask yourself how you'd validate the TimeZone setting in external code, bearing in mind that > anytime you don't give exactly the same answer the server would, your tool > has failed to be helpful. A tool may be extremely useful for a hundred checks, and poor in a few others. That would make it imperfect, not useless. If TimeZone turns out to be an extremely challenging GUC to validate, I'd unceremoniously skip the semantic check for it. Kind Regards, Amir
pgsql-hackers by date: