diff options
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r-- | src/backend/utils/adt/ri_triggers.c | 4 | ||||
-rw-r--r-- | src/backend/utils/adt/ruleutils.c | 6 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index af194f0c90f..6b5a5a8e44b 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -8,7 +8,7 @@ * across query and transaction boundaries, in fact they live as long as * the backend does. This works because the hashtable structures * themselves are allocated by dynahash.c in its permanent DynaHashCxt, - * and the SPI plans they point to are saved using SPI_saveplan(). + * and the SPI plans they point to are saved using SPI_keepplan(). * There is not currently any provision for throwing away a no-longer-needed * plan --- consider improving this someday. * @@ -3316,7 +3316,7 @@ ri_PlanCheck(const char *querystr, int nargs, Oid *argtypes, /* Save the plan if requested */ if (cache_plan) { - qplan = SPI_saveplan(qplan); + SPI_keepplan(qplan); ri_HashPreparedPlan(qkey, qplan); } diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index e5d5b68084c..c112a9cc163 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -316,7 +316,8 @@ pg_get_ruledef_worker(Oid ruleoid, int prettyFlags) plan = SPI_prepare(query_getrulebyoid, 1, argtypes); if (plan == NULL) elog(ERROR, "SPI_prepare failed for \"%s\"", query_getrulebyoid); - plan_getrulebyoid = SPI_saveplan(plan); + SPI_keepplan(plan); + plan_getrulebyoid = plan; } /* @@ -450,7 +451,8 @@ pg_get_viewdef_worker(Oid viewoid, int prettyFlags) plan = SPI_prepare(query_getviewrule, 2, argtypes); if (plan == NULL) elog(ERROR, "SPI_prepare failed for \"%s\"", query_getviewrule); - plan_getviewrule = SPI_saveplan(plan); + SPI_keepplan(plan); + plan_getviewrule = plan; } /* |