Kyle Buzsaki created PHOENIX-1251:
-------------------------------------
Summary: Salted queries with partially qualified row keys fail
with the /*+ RANGE_SCAN */ hint
Key: PHOENIX-1251
URL: https://issues.apache.org/jira/browse/PHOENIX-1251
Project: Phoenix
Issue Type: Bug
Reporter: Kyle Buzsaki
See InListIT#testLeadingPKWithTrailingRVCSlotHole as an example query that will
fail when given the /*+ RANGE_SCAN */ hint.
The issue is caused by the WhereOptimizer extracting the leading partially
qualified row keys of the where clause but improperly producing splitScan start
and stop rows in parallel iterators.
For example, with a where clause like:
{code}
SELECT * FROM TABLE_SALTED_4 WHERE pk1 = 2 and pk3 = 4;
{code}
The ScanRanges will set the scan boundaries as:
{code}
[\x00\x80\x00\x00\x02 - \x03\x80\x00\x00\x03]
{code}
This is technically correct as the scan start/stop rows need to include the
salt byte, but it means that naively intersecting the scan ranges with region
boundaries such as:
{code}
[* - \x01]
[\x01 - \x02]
[\x02 - \x03]
[\x03 - *]
{code}
Will produce the following partially incorrect splitScan boundaries:
{code}
[\x00\x80\x00\x00\x02 - \x01]
[\x01 - \x02]
[\x02 - \x03]
[\x03 - \x03\x80\x00\x00\x03]
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)