[
https://issues.apache.org/jira/browse/PHOENIX-1580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14340648#comment-14340648
]
Maryann Xue commented on PHOENIX-1580:
--------------------------------------
[~aliciashu] An easy way is to use TupleProjectionPlan for queries on each
side. TupleProjectionPlan is a DelegateQueryPlan which takes in an inner
QueryPlan as well as a TupleProjector. You can use the RowProjector to
construct a TupleProjector. You can refer to QueryCompiler.compileSingleQuery()
as an example.
{code}
protected QueryPlan compileSingleQuery(StatementContext context,
SelectStatement select, List<Object> binds, boolean asSubquery, boolean
allowPageFilter) throws SQLException{
SelectStatement innerSelect = select.getInnerSelectStatement();
if (innerSelect == null) {
return compileSingleFlatQuery(context, select, binds, asSubquery,
allowPageFilter, null, null, true);
}
QueryPlan innerPlan = compileSubquery(innerSelect);
TupleProjector tupleProjector = new
TupleProjector(innerPlan.getProjector());
innerPlan = new TupleProjectionPlan(innerPlan, tupleProjector, null);
{code}
One more thing you may have to pay attention to: if the expression type of a
certain position from one RowProjector does not match that of the corresponding
position from the other RowProjector, type coercion is needed.
> 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)