Closed machow closed 7 years ago
edit: UNION is treated as compound statement, so for two select statements, a trailing ORDER BY is the outermost piece. It's probably okay for now, but the ORDER BY will incorrectly be part of the final SELECT statement. Example below.
SELECT a FROM b UNION SELECT x FROM y ORDER BY c
the postgres ast is
[{"SelectStmt"=> {"sortClause"=> [{"SortBy"=> {"node"=> {"ColumnRef"=> {"fields"=>[{"String"=>{"str"=>"c"}}], "location"=>47}}, "sortby_dir"=>0, "sortby_nulls"=>0, "location"=>-1}}], "op"=>1, "larg"=> {"SelectStmt"=> {"targetList"=> [{"ResTarget"=> {"val"=> {"ColumnRef"=> {"fields"=>[{"String"=>{"str"=>"a"}}], "location"=>7}}, "location"=>7}}], "fromClause"=> [{"RangeVar"=> {"relname"=>"b", "inhOpt"=>2, "relpersistence"=>"p", "location"=>14}}], "op"=>0}}, "rarg"=> {"SelectStmt"=> {"targetList"=> [{"ResTarget"=> {"val"=> {"ColumnRef"=> {"fields"=>[{"String"=>{"str"=>"x"}}], "location"=>29}}, "location"=>29}}], "fromClause"=> [{"RangeVar"=> {"relname"=>"y", "inhOpt"=>2, "relpersistence"=>"p", "location"=>36}}], "op"=>0}}}}],
moved to parser
edit: UNION is treated as compound statement, so for two select statements, a trailing ORDER BY is the outermost piece. It's probably okay for now, but the ORDER BY will incorrectly be part of the final SELECT statement. Example below.
the postgres ast is