[
https://issues.apache.org/jira/browse/PHOENIX-933?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14057420#comment-14057420
]
ASF GitHub Bot commented on PHOENIX-933:
----------------------------------------
Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/1#discussion_r14762643
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/compile/TrackOrderPreservingExpressionCompiler.java
---
@@ -69,6 +70,7 @@
boolean isSharedViewIndex = table.getViewIndexId() != null;
// TODO: util for this offset, as it's computed in numerous places
positionOffset = (isSalted ? 1 : 0) + (isMultiTenant ? 1 : 0) +
(isSharedViewIndex ? 1 : 0);
+ this.isOrderPreserving &= table.getIndexType() != IndexType.LOCAL;
--- End diff --
One thing that's necessary, though, to maintain rows in row key order is to
modify ScanPlan.java:118 to do a merge sort instead of a concat:
if ((isSalted || isLocalIndex) &&
(context.getConnection().getQueryServices().getProps().getBoolean(
QueryServices.ROW_KEY_ORDER_SALTED_TABLE_ATTRIB,
QueryServicesOptions.DEFAULT_ROW_KEY_ORDER_SALTED_TABLE) ||
orderBy == OrderBy.FWD_ROW_KEY_ORDER_BY ||
orderBy == OrderBy.REV_ROW_KEY_ORDER_BY)) { // ORDER
BY was optimized out b/c query is in row key order
scanner = new MergeSortRowKeyResultIterator(iterators,
SaltingUtil.NUM_SALTING_BYTES, orderBy == OrderBy.REV_ROW_KEY_ORDER_BY);
} else {
scanner = new ConcatResultIterator(iterators);
}
Local indexes are similar to salted tables in that the parallel scans will
all be within a region, ordered correctly. As long as we do a merge sort across
the results of these scans, the rows will be ordered correctly.
> Local index support to Phoenix
> ------------------------------
>
> Key: PHOENIX-933
> URL: https://issues.apache.org/jira/browse/PHOENIX-933
> Project: Phoenix
> Issue Type: New Feature
> Reporter: rajeshbabu
>
> Hindex(https://github.com/Huawei-Hadoop/hindex) provides local indexing
> support to HBase. It stores region level index in a separate table, and
> co-locates the user and index table regions with a custom load balancer.
> See http://goo.gl/phkhwC and http://goo.gl/EswlxC for more information.
> This JIRA addresses the local indexing solution integration to phoenix.
--
This message was sent by Atlassian JIRA
(v6.2#6252)