dbwong commented on a change in pull request #463: Phoenix stats Initial Commit
URL: https://github.com/apache/phoenix/pull/463#discussion_r266268496
##########
File path:
phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java
##########
@@ -694,4 +694,127 @@ public TimeRange getRowTimestampRange() {
return rowTimestampRange;
}
+ /**
+ * Produces the list of KeyRanges representing the fully qualified row key
by calling into ScanUtil.setKey
+ * repeatedly for every combination of KeyRanges in the ranges field. The
bounds will be set according to the
+ * properties of the setKey method.
+ *
+ * @return list of KeyRanges representing the fully qualified rowkey,
coalesced
+ */
+ public List<KeyRange> getRowKeyRanges() {
+ // If its scanRanges are everything or nothing, then we short circuit
and leave
+ // as schema is not filled in
+ if (isEverything()) { return
Lists.newArrayList(KeyRange.EVERYTHING_RANGE); }
+ if (isDegenerate()) { return Lists.newArrayList(KeyRange.EMPTY_RANGE);
}
+
+ List<KeyRange> queryRowKeyRanges =
Lists.newArrayListWithExpectedSize(this.ranges.size());
+
+ // Point lookups are stored in the first range as a whole and already
a rowkey
+ // see ScanRanges.getPointLookupKeyIterator
+ if (this.isPointLookup()) {
+ queryRowKeyRanges.addAll(this.getRanges().get(0));
+ } else {
+ // If scanRanges.ranges has no information then should be in the
scanRanges.scanRange
+ if (this.getRanges().size() == 0) {
+ queryRowKeyRanges.add(this.getScanRange());
+ } else { // We have a composite key need the row key from the
combination
+ // make a copy of ranges as we may add items to fully qualify
our rowkey
+ List<List<KeyRange>> ranges = new ArrayList<>();
+ ranges.addAll(this.getRanges());
+
+ int[] slotSpans = this.getSlotSpans();
+
+ // If the ranges here do not qualify all the keys then those
keys are unbound
+ if (ranges.size() < schema.getMaxFields()) {
+ int originalSize = ranges.size();
+ for (int i = 0; i < schema.getMaxFields() - originalSize;
i++) {
+
ranges.add(Lists.newArrayList(KeyRange.EVERYTHING_RANGE));
+ }
+ slotSpans = new int[schema.getMaxFields()];
Review comment:
Good catch this would have been an issue for non-fully qualified RVCs.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services