I fixed the some ugly parts of this patch - now the LET x = DEFAULT, LET x = NULL is processed by more usual way.
Statement LET is doesn't switch between STMT_UTILITY and STMT_PLAN_UTILITY like before. It is only STMT_PLAN_UTILITY statement.
I did some cleaning - I mainly replaced CMD_PLAN_UTILITY by CMD_LET because there is not another similar statement in queue.
another cleaning - I repleaced CMD_LET by CMD_SELECT_UTILITY. This name is more illustrative, and little bit cleaned code.
CMD_SELECT_UTILITY is mix of CMD_SELECT and CMD_UTILITY. It allows PREPARE and parametrizations like CMD_SELECT. But execution is like CMD_UTILITY by own utility routine with explicit dest receiver setting. This design doesn't need to introduce new executor and planner nodes (like ModifyTable and ModifyTablePath).