Re: PoC plpgsql - possibility to force custom or generic plan
Pavel Stehule <pavel.stehule@gmail.com>
From: Pavel Stehule <pavel.stehule@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Daniel Gustafsson <daniel@yesql.se>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Andrew Dunstan <andrew.dunstan@2ndquadrant.com>,
Andres Freund <andres@anarazel.de>, Petr Jelinek <petr.jelinek@2ndquadrant.com>,
David Steele <david@pgmasters.net>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>,
Jim Nasby <Jim.Nasby@bluetreble.com>
Date: 2017-09-07T19:30:22Z
Lists: pgsql-hackers
> > > > Hmm. I think the core problem here is that we're trying to control > > the plancache, which is a pretty much behind-the-scenes mechanism. > > Except in the case of an explicit PREPARE, you can't even see from > > SQL that the cache is being used, or when it's used. So part of what > > needs to be thought about, if we use the GUC approach, is when the > > GUC's value is consulted. If we don't do anything special then > > the GUC(s) would be consulted when retrieving plans from the cache, > > and changes in their values from one retrieval to the next might > > cause funny behavior. Maybe the relevant settings need to be captured > > when the plancache entry is made ... not sure. > > What sort of funny behavior are you concerned about? It seems likely > to me that in most cases the GUC will have the same value every time > through, but if it doesn't, I'm not sure why we'd need to use the old > value rather than the current one. Indeed, if the user changes the > GUC from "force custom" to "force generic" and reruns the function, we > want the new value to take effect, lest a POLA violation occur. > good note - so changing this GUC on session level requires reset plan cache. I am not against to GUC, and I am not against to PLpgSQL #option. Just, and I am repeating (I am sorry) - these tools are not practical for usage in PLpgSQL. There should be some block level possibility to do some setting. Regards Pavel > > -- > Robert Haas > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
Commits
-
Add plan_cache_mode setting
- f7cb2842bf47 12.0 landed
-
Add some noreturn attributes to help static analyzers
- a044378ce2f6 11.0 cited
-
document when PREPARE uses generic plans
- fab9d1da4a21 9.6.0 cited
-
Redesign the plancache mechanism for more flexibility and efficiency.
- e6faf910d750 9.2.0 cited