[ https://issues.apache.org/jira/browse/PHOENIX-2628?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15227518#comment-15227518 ]
ASF GitHub Bot commented on PHOENIX-2628: ----------------------------------------- Github user chrajeshbabu commented on a diff in the pull request: https://github.com/apache/phoenix/pull/156#discussion_r58640455 --- Diff: phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java --- @@ -556,35 +564,55 @@ private static String toString(List<byte[]> gps) { } else { endKey = regionBoundaries.get(regionIndex); } - HRegionLocation regionLocation = regionLocations.get(regionIndex); - if (isLocalIndex) { - HRegionInfo regionInfo = regionLocation.getRegionInfo(); - endRegionKey = regionInfo.getEndKey(); - keyOffset = ScanUtil.getRowKeyOffset(regionInfo.getStartKey(), endRegionKey); - } - try { - while (guideIndex < gpsSize && (currentGuidePost.compareTo(endKey) <= 0 || endKey.length == 0)) { - Scan newScan = scanRanges.intersectScan(scan, currentKeyBytes, currentGuidePostBytes, keyOffset, - false); - estimatedRows += gps.getRowCounts().get(guideIndex); - estimatedSize += gps.getByteCounts().get(guideIndex); - scans = addNewScan(parallelScans, scans, newScan, currentGuidePostBytes, false, regionLocation); - currentKeyBytes = currentGuidePost.copyBytes(); - currentGuidePost = PrefixByteCodec.decode(decoder, input); - currentGuidePostBytes = currentGuidePost.copyBytes(); - guideIndex++; - } - } catch (EOFException e) {} - Scan newScan = scanRanges.intersectScan(scan, currentKeyBytes, endKey, keyOffset, true); - if (isLocalIndex) { - if (newScan != null) { - newScan.setAttribute(EXPECTED_UPPER_REGION_KEY, endRegionKey); - } else if (!scans.isEmpty()) { - scans.get(scans.size()-1).setAttribute(EXPECTED_UPPER_REGION_KEY, endRegionKey); - } - } - scans = addNewScan(parallelScans, scans, newScan, endKey, true, regionLocation); - currentKeyBytes = endKey; + if (Bytes.compareTo(scan.getStartRow(), context.getScan().getStartRow()) != 0 + || Bytes.compareTo(scan.getStopRow(), context.getScan().getStopRow()) != 0) { + Scan newScan = ScanUtil.newScan(scan); + if(ScanUtil.isLocalIndex(scan)) { + newScan.setStartRow(regionInfo.getStartKey()); + newScan.setAttribute(SCAN_ACTUAL_START_ROW, regionInfo.getStartKey()); --- End diff -- First one is actual start key of the scan second one is end key of region. After this patch we don't need EXPECTED_UPPER_REGION_KEY but kept it for compatibility. > Ensure split when iterating through results handled correctly > ------------------------------------------------------------- > > Key: PHOENIX-2628 > URL: https://issues.apache.org/jira/browse/PHOENIX-2628 > Project: Phoenix > Issue Type: Bug > Reporter: James Taylor > Assignee: Rajeshbabu Chintaguntla > Fix For: 4.8.0 > > Attachments: PHOENIX-2628-wip.patch, PHOENIX-2628.patch, > PHOENIX-2628_v7.patch, PHOENIX-2628_v8.patch > > > We should start with a test case to ensure this works correctly, both for > scans and aggregates. -- This message was sent by Atlassian JIRA (v6.3.4#6332)