On Tue, Sep 19, 2017 at 1:37 PM, Robert Haas <robertmhaas@gmail.com> wrote: > On Tue, Sep 19, 2017 at 12:45 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: >>> You can already set a GUC with function scope. I'm not getting your >>> point. >> >> yes, it is true. But implementation of #option is limited to PLpgSQL - so >> there is not any too much questions - GUC is global - there is lot of >> points: >> >> * what is correct impact on PREPARE >> * what is correct impact on EXECUTE >> * what should be done if this GUC is changed .. > > For better or for worse, as a project we've settled on GUCs as a way > to control behavior. I think it makes more sense to try to apply that > option to new behaviors we want to control than to invent some new > system.
This seems very sensible.
We also have infrastructure at the SQL level (SET) to manage the GUC. Tom upthread (for pretty good reasons) extending SET to pl/pgsql specific scoping but TBH I'm struggling as to why we need to implement new syntax for this; the only thing missing is being able to scope SET statements to a code block FWICT.
here is a GUC based patch for plancache controlling. Looks so this code is working.