On 2019/01/04 9:53, David Rowley wrote:
> Without PREPAREd statements, if the planner itself was unable to prune
> the partitions it would already have obtained the lock during
> planning, so AcquireExecutorLocks(), in this case, would bump into the
> local lock hash table entry and forego trying to obtain the lock
> itself. That's not free, but it's significantly faster than obtaining
> a lock.
Hmm, AcquireExecutorLocks is only called if prepared statements are used
and that too if a generic cached plan is reused.
GetCachedPlan -> CheckCachedPlan -> AcquireExecutorLocks
In GetCachedPlan:
if (!customplan)
{
if (CheckCachedPlan(plansource))
Thanks,
Amit