[
https://issues.apache.org/jira/browse/PHOENIX-1533?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14247640#comment-14247640
]
James Taylor commented on PHOENIX-1533:
---------------------------------------
[~maryannxue] - in the code for the join optimization, can you have the code
stop looking for combinations of key expressions when you find one in which
StatementContext.getScanRanges().isPointLookup()==true? You won't find a better
combination, as this means that all pk columns have PK parts. You could
alternatively compare StatementContext.getScanRanges().getPkColumnSpan() to
StatementContext.getScanRanges().getSchema().getMaxFields() and stop if they're
equal.
When we find a point lookup, we flatten the schema and row key bytes as an
optimization for SkipScan.
> Last key part not taken into child/parent optimization
> ------------------------------------------------------
>
> Key: PHOENIX-1533
> URL: https://issues.apache.org/jira/browse/PHOENIX-1533
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 3.0.0, 4.0.0, 5.0.0
> Reporter: Maryann Xue
> Assignee: Maryann Xue
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> For example we have multiple PK columns (pk0, pk1, pk2) for table A, if we do
> a IN subquery or join query with all PK columns, like:
> select * from A where (pk0, pk1, pk2) IN (select pk0, pk1, pk2 from B);
> The child/parent join optimization is supposed to use the entire PK "(pk0,
> pk1, pk2)" for constructing the dynamic skip-scan filter.
> However it would only use (pk0, pk1) instead, missing the last PK part.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)