Thread: GUC for data checksums
Attached is a small patch to add a new GUC to report wether data checksums for a particular cluster are enabled. The only way to get this info afaik is to look into pg_control and the version number used, but i'd welcome a way to access this remotely, too. If there aren't any objections i'll add this to the CF. -- Thanks Bernd
Attachment
Hi, On 2013-09-14 18:33:38 +0200, Bernd Helmle wrote: > Attached is a small patch to add a new GUC to report wether data checksums > for a particular cluster are enabled. The only way to get this info afaik is > to look into pg_control and the version number used, but i'd welcome a way > to access this remotely, too. If there aren't any objections i'll add this > to the CF. Looks like a good idea to me. The implementation looks sane as well, except that I am not sure if we really need to introduce that faux variable. If the variable cannot be set and we have a SHOW hook, do we need it? Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
--On 15. September 2013 00:25:34 +0200 Andres Freund <andres@2ndquadrant.com> wrote: > Looks like a good idea to me. The implementation looks sane as well, > except that I am not sure if we really need to introduce that faux > variable. If the variable cannot be set and we have a SHOW hook, do we > need it? It's along the line with the other informational variables like block_size et al. Do you want to have a function instead or what's your intention? One benefit is to have 'em all in SHOW ALL which can be used to compare database/cluster settings, to mention one use case i have in mind. -- Thanks Bernd
On 2013-09-15 03:34:53 +0200, Bernd Helmle wrote: > > > --On 15. September 2013 00:25:34 +0200 Andres Freund > <andres@2ndquadrant.com> wrote: > > >Looks like a good idea to me. The implementation looks sane as well, > >except that I am not sure if we really need to introduce that faux > >variable. If the variable cannot be set and we have a SHOW hook, do we > >need it? > > It's along the line with the other informational variables like block_size > et al. Do you want to have a function instead or what's your intention? Well, you've added a "data_checksums" variable that won't ever get used, right? You can't set the variable and the show hook doesn't actually use it. The reason you presumably did so is that there is no plain variable that contains information about data checksums, we first need to read the control file to know whether it's enabled and GUCs are initialized way earlier than that. A quick look unfortunately shows that there's no support for GUCs without an actual underlying variable, so unless somebody adds that, there doesn't seem to be much choice. I think a comment documenting that the data_checksums variable is not actually used would be appropriate. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
On 15.09.2013 17:05, Andres Freund wrote: > On 2013-09-15 03:34:53 +0200, Bernd Helmle wrote: >> >> >> --On 15. September 2013 00:25:34 +0200 Andres Freund >> <andres@2ndquadrant.com> wrote: >> >>> Looks like a good idea to me. The implementation looks sane as well, >>> except that I am not sure if we really need to introduce that faux >>> variable. If the variable cannot be set and we have a SHOW hook, do we >>> need it? >> >> It's along the line with the other informational variables like block_size >> et al. Do you want to have a function instead or what's your intention? > > Well, you've added a "data_checksums" variable that won't ever get used, > right? You can't set the variable and the show hook doesn't actually use > it. > The reason you presumably did so is that there is no plain variable that > contains information about data checksums, we first need to read the > control file to know whether it's enabled and GUCs are initialized way > earlier than that. > > A quick look unfortunately shows that there's no support for GUCs > without an actual underlying variable, so unless somebody adds that, > there doesn't seem to be much choice. > > I think a comment documenting that the data_checksums variable is not > actually used would be appropriate. Surprisingly we don't have any other gucs that would be set at initdb time, and not changed after that. But we used to have two, lc_collate and lc_ctype, until we changed them to be per-database settings. We used to do this in ReadControlFile: > /* Make the fixed locale settings visible as GUC variables, too */ > SetConfigOption("lc_collate", ControlFile->lc_collate, > PGC_INTERNAL, PGC_S_OVERRIDE); > SetConfigOption("lc_ctype", ControlFile->lc_ctype, > PGC_INTERNAL, PGC_S_OVERRIDE); I did the same for data_checksums, and committed. Thanks for the patch. - Heikki
On 2013-09-16 14:43:27 +0300, Heikki Linnakangas wrote: > On 15.09.2013 17:05, Andres Freund wrote: > >On 2013-09-15 03:34:53 +0200, Bernd Helmle wrote: > >> > >> > >>--On 15. September 2013 00:25:34 +0200 Andres Freund > >><andres@2ndquadrant.com> wrote: > >> > >>>Looks like a good idea to me. The implementation looks sane as well, > >>>except that I am not sure if we really need to introduce that faux > >>>variable. If the variable cannot be set and we have a SHOW hook, do we > >>>need it? > >> > >>It's along the line with the other informational variables like block_size > >>et al. Do you want to have a function instead or what's your intention? > > > >Well, you've added a "data_checksums" variable that won't ever get used, > >right? You can't set the variable and the show hook doesn't actually use > >it. > >The reason you presumably did so is that there is no plain variable that > >contains information about data checksums, we first need to read the > >control file to know whether it's enabled and GUCs are initialized way > >earlier than that. > > > >A quick look unfortunately shows that there's no support for GUCs > >without an actual underlying variable, so unless somebody adds that, > >there doesn't seem to be much choice. > > > >I think a comment documenting that the data_checksums variable is not > >actually used would be appropriate. > > Surprisingly we don't have any other gucs that would be set at initdb time, > and not changed after that. But we used to have two, lc_collate and > lc_ctype, until we changed them to be per-database settings. We used to do > this in ReadControlFile: > > > /* Make the fixed locale settings visible as GUC variables, too */ > > SetConfigOption("lc_collate", ControlFile->lc_collate, > > PGC_INTERNAL, PGC_S_OVERRIDE); > > SetConfigOption("lc_ctype", ControlFile->lc_ctype, > > PGC_INTERNAL, PGC_S_OVERRIDE); > > I did the same for data_checksums, and committed. Thanks for the patch. I don't think it's fatal - as you say we've done so before - but note that both the committed and Bernd's version don't report the correct value on postgres -C data_checksums because we haven't read the control file yet... Maybe we should do that earlier? Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services