diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index ede8cec947..60c74dc4f0 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -3168,6 +3168,17 @@ show_resultcache_info(ResultCacheState *rcstate, List *ancestors, si = &rcstate->shared_info->sinstrument[n]; + /* + * Skip for workers that didn't launch. The assumption is that result + * cache's suplan is never a partial plan. So the assumption for the + * leader that there will always be at least one cache miss holds true + * for worker also. If result cache starts accepting partial subplans, + * then zero cache_misses won't necessarily mean the worker has not + * launched. + */ + if (si->cache_misses == 0) + continue; + if (es->workers_state) ExplainOpenWorker(n, es);