On Wed, Aug 21, 2024 at 8:45 AM Amit Langote <amitlangot...@gmail.com> wrote: > * The replanning aspect of the lock-in-the-executor design would be > simpler if a CachedPlan contained the plan for a single query rather > than a list of queries, as previously mentioned. This is particularly > due to the requirements of the PORTAL_MULTI_QUERY case. However, this > option might be impractical.
It might be, but maybe it would be worth a try? I mean, GetCachedPlan() seems to just call pg_plan_queries() which just loops over the list of query trees and does the same thing for each one. If we wanted to replan a single query, why couldn't we do fake_querytree_list = list_make1(list_nth(querytree_list, n)) and then call pg_plan_queries(fake_querytree_list)? Or something equivalent to that. We could have a new GetCachedSinglePlan(cplan, n) to do this. > * Polish the patch for the old design of doing the initial pruning > before AcquireExecutorLocks() and focus on hashing out any bugs and > issues of that design. That's also an option. It probably has issues too, but I don't know what they are exactly. -- Robert Haas EDB: http://www.enterprisedb.com