[ https://issues.apache.org/jira/browse/HIVE-6189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13872426#comment-13872426 ]
Gunther Hagleitner commented on HIVE-6189: ------------------------------------------ [~leftylev] - the documentation in the link you sent looks good. We could specify that unions can be used in views, insert, and ctas statements, but this I'm thinking that's almost self explanatory. As for hive .12 and below - the restriction was that unions could only be used within a subquery. I.e.: "select_statement union all select_statement union all ..." had to be written as "select * from (select_statement union all select_statement union all ...) unionresult" Ditto for CTAS, insert, create/alter view as. Does that make sense? > Support top level union all statements > -------------------------------------- > > Key: HIVE-6189 > URL: https://issues.apache.org/jira/browse/HIVE-6189 > Project: Hive > Issue Type: Bug > Reporter: Gunther Hagleitner > Assignee: Gunther Hagleitner > Attachments: HIVE-6189.1.patch, HIVE-6189.2.patch, HIVE-6189.3.patch > > > I've always wondered why union all has to be in subqueries in hive. > After looking at it, problems are: > - Hive Parser: > - Union happens at the wrong place (insert ... select ... union all select > ...) is parsed as (insert select) union select. > - There are many rewrite rules in the parser to force any query into the a > from - insert -select form. No doubt for historical reasons. > - Plan generation/semantic analysis assumes top level "TOK_QUERY" and not top > level "TOK_UNION". > The rewrite rules don't work when we move the "UNION ALL" recursion into the > select statements. However, it's not hard to do that in code. -- This message was sent by Atlassian JIRA (v6.1.5#6160)