diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2018-07-16 13:35:41 +0200 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2018-07-16 13:35:41 +0200 |
commit | f7cb2842bf47715133b40e4a503f35dbe60d1b72 (patch) | |
tree | 645468d969635b10cb87e1134b60afcd26456339 /src/backend/utils/cache/plancache.c | |
parent | a06e56b247feb2812bad5cf60fd9c0128d81f5c0 (diff) | |
download | postgresql-f7cb2842bf47715133b40e4a503f35dbe60d1b72.tar.gz postgresql-f7cb2842bf47715133b40e4a503f35dbe60d1b72.zip |
Add plan_cache_mode setting
This allows overriding the choice of custom or generic plan.
Author: Pavel Stehule <pavel.stehule@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/CAFj8pRAGLaiEm8ur5DWEBo7qHRWTk9HxkuUAz00CZZtJj-LkCA%40mail.gmail.com
Diffstat (limited to 'src/backend/utils/cache/plancache.c')
-rw-r--r-- | src/backend/utils/cache/plancache.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index 0ad3e3c7366..7271b5880b8 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -106,6 +106,8 @@ static void PlanCacheRelCallback(Datum arg, Oid relid); static void PlanCacheFuncCallback(Datum arg, int cacheid, uint32 hashvalue); static void PlanCacheSysCallback(Datum arg, int cacheid, uint32 hashvalue); +/* GUC parameter */ +int plan_cache_mode; /* * InitPlanCache: initialize module during InitPostgres. @@ -1033,6 +1035,12 @@ choose_custom_plan(CachedPlanSource *plansource, ParamListInfo boundParams) if (IsTransactionStmtPlan(plansource)) return false; + /* Let settings force the decision */ + if (plan_cache_mode == PLAN_CACHE_MODE_FORCE_GENERIC_PLAN) + return false; + if (plan_cache_mode == PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN) + return true; + /* See if caller wants to force the decision */ if (plansource->cursor_options & CURSOR_OPT_GENERIC_PLAN) return false; |