typedef struct ReturningOption { NodeTag type; bool isNew; char *name; int location; } ReturningOption; location should be type ParseLoc?
in process_sublinks_mutator else if (IsA(node, ReturningExpr)) { if (((ReturningExpr *) node)->retlevelsup > 0) return node; } this part doesn't have a coverage test? the following is the minimum tests i come up with: create table s (a int, b int); create view sv as select * from s; explain insert into sv values(1,2) returning (select new from (values((select new)))); explain insert into sv values(1,2) returning (select new from (((select new)))); won't touch the changes we did. but these two explain output plans are the same.