PlannerInfo->planner_ctx is assigned with either MessageContext or PortalHeapMemory depending on the flow from which planner is invoked.
My doubt is that during whole planning process till the Plan is stored in PlannedStmt, all the memory is from CurrentMemoryContext which is same as PlannerInfo->planner_ctx. So what is the use of having PlannerInfo->planner_ctx which only contains CurrentMemoryContext?