[ 
https://issues.apache.org/jira/browse/PHOENIX-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tanuj Khurana updated PHOENIX-8015:
-----------------------------------
    Summary: LIMIT query on uncovered index with no filter silently truncates 
because unverifiable index rows consumes the limit  (was: LIMIT query on 
uncovered index with no filter silently truncates when a leading run of 
unverifiable index rows consumes the limit)

> LIMIT query on uncovered index with no filter silently truncates because 
> unverifiable index rows consumes the limit
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-8015
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-8015
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 5.2.0, 5.2.1, 5.3.0, 5.2.2, 5.3.1, 5.3.2
>            Reporter: Tanuj Khurana
>            Priority: Major
>
> When scanning an uncovered index for a query which has a limit clause but no 
> filter the client attaches a PageFilter to the scan. This PageFilter is 
> handled by the TTLRegionScanner
> which sits in the scanner stack below the TTLRegionScanner.
> {code:java}
> RegionScannerHolder
>   -> UncoveredGlobalIndexRegionScanner   <- join-back + verification (drops 
> orphans)
>     -> TTLRegionScanner                  <- strips PageFilter, counts RAW 
> rows, hard-stops
>       -> PagingRegionScanner
>         -> HBase raw index scanner{code}
> All the rows in the uncovered index are unverified. TTLRegionScanner counts 
> the unverified rows towards the query limit but these rows can be orphaned 
> rows such that the data table row doesn't point back to the index row. In 
> such cases, the query returns incorrect results as the TTLRegionScanner 
> returns no more rows once the limit is reached but the UncoveredRegionScanner 
> actually drops those unverified rows.
> Covered indexes don't have this problem because scans on covered indexes are 
> processed by GlobalIndexRegionScanner which removes the PageFilter from the 
> scan and then reinitializes the underlying the scanners 
> ([GlobalIndexChecker#init()|https://github.com/apache/phoenix/blob/master/phoenix-core-server/src/main/java/org/apache/phoenix/index/GlobalIndexChecker.java#L205-L209])
>  
> Uncovered indexes should also follow the similar pattern and only count the 
> row towards the query limit after it has been checked and verified.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to