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

Maryann Xue commented on PHOENIX-3745:
--------------------------------------

Thank you, [~comnetwork], for the fix!
A couple of suggestions/questions:
1. Checking if the sub-query is already ordered on the join key might be 
redundant, since that should be taken care of by the sub-query compilation 
itself later on. So could you please verify?
2. Shouldn't the {{subselectAsTableNode}} always be a {{DerivedTableNode}}? Is 
{{if(subselectAsTableNode instanceof DerivedTableNode)}} necessary? Shall we 
use {{assert}} or {{Preconditions}} check instead?
 
And BTW, could you please create a pull request next time if the patch gets 
over a few lines? It'll make review and discussions a lot easier. Thanks!

> SortMergeJoin might incorrectly override the OrderBy of LHS or RHS
> ------------------------------------------------------------------
>
>                 Key: PHOENIX-3745
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3745
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.9.0
>            Reporter: chenglei
>            Assignee: chenglei
>         Attachments: PHOENIX-3745_v1.patch
>
>
> Let us look a simple test case:
> h4. 1. Create two tables
>  {noformat}
>    CREATE TABLE IF NOT EXISTS MERGE1 (
>          AID INTEGER PRIMARY KEY
>          AGE INTEGER
>     );
>   CREATE TABLE IF NOT EXISTS MERGE2 (
>          BID INTEGER PRIMARY KEY,
>          CODE INTEGER
>   );
>  {noformat}
>  h4. 2. Upsert values
>  {noformat}
>           UPSERT INTO MERGE1(AID,AGE) VALUES (1,11);
>           UPSERT INTO MERGE1(AID,AGE) VALUES (2,22);
>           UPSERT INTO MERGE1 (AID,AGE) VALUES (3,33);
>           UPSERT INTO MERGE2 (BID,CODE) VALUES (1,66);
>           UPSERT INTO MERGE2 (BID,CODE) VALUES (2,55);
>           UPSERT INTO MERGE2 (BID,CODE) VALUES (3,44);
>  {noformat}
>  h4. 3. Execute query
>  {noformat}
>     select /*+ USE_SORT_MERGE_JOIN */ a.aid,b.code from
>      (select aid,age from merge1  where age >=11 and age<=33) a inner join 
>      (select bid,code from merge2  order by code limit 1) b on a.aid=b.bid 
>  {noformat}
>  h4. (/) Expected result
>  {noformat}
>     3,44
>  {noformat}
>  h4. (!) Incorrect actual result
>  {noformat}
>     1,66 
>  {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to