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

Maryann Xue commented on PHOENIX-4322:
--------------------------------------

Sorry, [~jamestaylor], for checking that in without code being reviewed. I was 
thinking PHOENIX-3050 depended on this issue and the impact of this issue might 
be limited.

I first thought the issue lied in RVC evaluation, but found out later that RVC 
chooses to kick away the ASC separators but to keep the DESC separators 
deliberately. I think it's just trying to match with the way we organize PK 
columns into a rowkey. Since there's no way for RVC itself to know what context 
it is used in, I thought it would be better to look into the caller, and in 
this case, it's the ScanUtil.
The condition I proposed to add to the "if" clause in my patch is now strict 
enough I think: we only avoid adding an extra separator if "this current value 
is not empty && it's an RVC && its last byte is already the same separator".

> DESC primary key column with variable length does not work in SkipScanFilter
> ----------------------------------------------------------------------------
>
>                 Key: PHOENIX-4322
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4322
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.11.0
>            Reporter: Maryann Xue
>            Assignee: Maryann Xue
>            Priority: Minor
>             Fix For: 4.13.0
>
>
> Example:
> {code}
>     @Test
>     public void inDescCompositePK3() throws Exception {
>         String table = generateUniqueName();
>         String ddl = "CREATE table " + table + " (oid VARCHAR NOT NULL, code 
> VARCHAR NOT NULL constraint pk primary key (oid DESC, code DESC))";
>         Object[][] insertedRows = new Object[][]{{"o1", "1"}, {"o2", "2"}, 
> {"o3", "3"}};
>         runQueryTest(ddl, upsert("oid", "code"), insertedRows, new 
> Object[][]{{"o2", "2"}, {"o1", "1"}}, new WhereCondition("(oid, code)", "IN", 
> "(('o2', '2'), ('o1', '1'))"),
>             table);
>     }
> {code}
> Here the last column in primary key is in DESC order and has variable length, 
> and WHERE clause involves an "IN" operator with RowValueConstructor 
> specifying all PK columns. We get no results.
> This ends up being the root cause for not being able to use child/parent join 
> optimization on DESC pk columns as described in PHOENIX-3050.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to