[ 
https://issues.apache.org/jira/browse/PHOENIX-1580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14313366#comment-14313366
 ] 

James Taylor commented on PHOENIX-1580:
---------------------------------------

Thanks for the patch, [~ayingshu]. I think it'll be easier to model the union 
chained off of SelectStatement rather than treating these as a set of 
SelectStatements. So you'd add a SelectStatement union member variable on 
SelectStatement in this case. Otherwise, things like bind variables will be 
tricky to get right. I don't think any changes to PhoenixResultSet or 
PhoenixStatement should be necessary. Instead, in 
QueryCompiler.compileSingleQuery(), you can detect if the SelectStatement is a 
union and call a new QueryCompiler.compileUnionQuery() with a corresponding new 
UnionPlan.
- QueryCompiler.compileUnionQuery() would compile each individual 
SelectStatement, giving you back a QueryPlan for each one.
- It's here that you'd compare the number and column types (from the 
RowProjector off of each QueryPlan).
- The top level iterator from your QueryCompiler.compileUnionQuery() would be 
combined together in a ConcatResultIterator.
- Any particular reason you're not allowing LIMIT or ORDER BY? I think those 
should be allowed.
- You shouldn't need to deal with creating Callables and threading in general.
- Joins and derived queries, etc. will be interesting. [~maryannxue] can likely 
give you some advice here.

> Support UNION ALL
> -----------------
>
>                 Key: PHOENIX-1580
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1580
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Alicia Ying Shu
>            Assignee: Alicia Ying Shu
>         Attachments: unionall-wipe.patch
>
>
> Select * from T1
> UNION ALL
> Select * from T2



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to