Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> So as far as I can see the new logic is correct? A quick look & test seems to
> confirm that.
I think the real problem here is just that the code was trying to be too
specific, and while your version might be more correct it's not doing
anything to fix that misjudgment. We should just make the
CreateTableAsStmt case look like the ExplainStmt case, viz
Assert(IsA(qry, Query));
if (qry->commandType == CMD_UTILITY)
return UtilityContainsQuery(qry->utilityStmt);
return qry;
regards, tom lane