diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index abc3062..210c049 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -431,6 +431,37 @@ CompleteCachedPlan(CachedPlanSource *plansource, plansource->is_complete = true; plansource->is_valid = true; + + { + MemoryContextCounters counters; + MemoryContext context; + Size csize, + qcsize = 0, + gpsize = 0; + + memset(&counters, 0, sizeof(counters)); + context = plansource->context; + context->methods->stats(context, NULL, NULL, &counters); + csize = counters.totalspace; + + if (plansource->query_context) + { + memset(&counters, 0, sizeof(counters)); + context = plansource->query_context; + context->methods->stats(context, NULL, NULL, &counters); + qcsize = counters.totalspace; + } + + if (plansource->gplan) + { + memset(&counters, 0, sizeof(counters)); + context = plansource->gplan->context; + context->methods->stats(context, NULL, NULL, &counters); + gpsize = counters.totalspace; + } + elog(LOG, "CompleteCachedPlan: %zu context, %zu query_context, %zu gplan", + csize, qcsize, gpsize); + } } /* @@ -1188,6 +1219,38 @@ GetCachedPlan(CachedPlanSource *plansource, ParamListInfo boundParams, /* Update generic_cost whenever we make a new generic plan */ plansource->generic_cost = cached_plan_cost(plan, false); + + { + MemoryContextCounters counters; + MemoryContext context; + Size csize, + qcsize = 0, + gpsize = 0; + + memset(&counters, 0, sizeof(counters)); + context = plansource->context; + context->methods->stats(context, NULL, NULL, &counters); + csize = counters.totalspace; + + if (plansource->query_context) + { + memset(&counters, 0, sizeof(counters)); + context = plansource->query_context; + context->methods->stats(context, NULL, NULL, &counters); + qcsize = counters.totalspace; + } + + if (plansource->gplan) + { + memset(&counters, 0, sizeof(counters)); + context = plansource->gplan->context; + context->methods->stats(context, NULL, NULL, &counters); + gpsize = counters.totalspace; + } + elog(LOG, "GetCachedPlan: %zu context, %zu query_context, %zu gplan", + csize, qcsize, gpsize); + } + /* * If, based on the now-known value of generic_cost, we'd not have * chosen to use a generic plan, then forget it and make a custom