On Wed, Jan 20, 2021 at 3:53 PM James Coleman <jtc...@gmail.com> wrote: > > On Wed, Jan 20, 2021 at 9:58 AM Simon Riggs <si...@2ndquadrant.com> wrote: > > > > On Wed, 20 Jan 2021 at 14:21, James Coleman <jtc...@gmail.com> wrote: > > > > > An alternative approach that occurred to me while typing this reply: a > > > setting in Postgres that would disallow setting session level GUCs > > > (i.e., enforce `SET LOCAL` transaction level usage instead) would > > > remove a large chunk of our need to set server_reset_query_always=1 > > > (and more interestingly it'd highlight when broken code gets pushed). > > > But even with that, I see some value in the proposed setting since > > > there is additional session state beyond GUCs. > > > > With transaction_cleanup=on we could force all SETs to be SET LOCAL. > > > > The point is that if we declare ahead of time that the transaction > > will be reset then we can act differently and more easily for various > > circumstances, for SETs, for Temp tables and others. > > Right, I agree it's independently useful. My "alternative" is a subset > of that functionality and doesn't cover as many cases.
So if we go for that option, would we call it? session_state = 'session' (default) | 'local_set' If you use 'local' then you find that all state is transaction only * SET defaults to meaning SET LOCAL * SET SESSION returns ERROR -- Simon Riggs http://www.EnterpriseDB.com/