Repository: phoenix
Updated Branches:
  refs/heads/encodecolumns2 a65ab0030 -> 9180ce22d


Fix determination of qualifier range


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9180ce22
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9180ce22
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9180ce22

Branch: refs/heads/encodecolumns2
Commit: 9180ce22d2782632b9c96c97c8165554efc98a95
Parents: a65ab00
Author: Samarth <samarth.j...@salesforce.com>
Authored: Mon Feb 13 22:07:34 2017 -0800
Committer: Samarth <samarth.j...@salesforce.com>
Committed: Mon Feb 13 22:07:34 2017 -0800

----------------------------------------------------------------------
 .../UngroupedAggregateRegionObserver.java       |  2 +-
 .../apache/phoenix/util/EncodedColumnsUtil.java | 33 +++++++++-----------
 2 files changed, 15 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/9180ce22/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
index b6a0a6b..70ef609 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
@@ -337,7 +337,7 @@ public class UngroupedAggregateRegionObserver extends 
BaseScannerRegionObserver
         ColumnReference[] dataColumns = 
IndexUtil.deserializeDataTableColumnsToJoin(scan);
         final TupleProjector p = 
TupleProjector.deserializeProjectorFromScan(scan);
         final HashJoinInfo j = HashJoinInfo.deserializeHashJoinFromScan(scan);
-        boolean useQualifierAsIndex = 
EncodedColumnsUtil.useQualifierAsIndex(EncodedColumnsUtil.getMinMaxQualifiersFromScan(scan))
 && scan.getAttribute(BaseScannerRegionObserver.TOPN) != null;
+        boolean useQualifierAsIndex = 
EncodedColumnsUtil.useQualifierAsIndex(EncodedColumnsUtil.getMinMaxQualifiersFromScan(scan));
         if ((localIndexScan && !isDelete && !isDescRowKeyOrderUpgrade) || (j 
== null && p != null)) {
             if (dataColumns != null) {
                 tupleProjector = IndexUtil.getTupleProjector(scan, 
dataColumns);

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9180ce22/phoenix-core/src/main/java/org/apache/phoenix/util/EncodedColumnsUtil.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/util/EncodedColumnsUtil.java 
b/phoenix-core/src/main/java/org/apache/phoenix/util/EncodedColumnsUtil.java
index b33b085..59e99fd 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/EncodedColumnsUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/EncodedColumnsUtil.java
@@ -21,7 +21,9 @@ import static 
com.google.common.base.Preconditions.checkNotNull;
 import static 
org.apache.phoenix.schema.PTable.QualifierEncodingScheme.NON_ENCODED_QUALIFIERS;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
@@ -135,28 +137,21 @@ public class EncodedColumnsUtil {
     public static Map<String, Pair<Integer, Integer>> 
getFamilyQualifierRanges(PTable table) {
         checkNotNull(table);
         QualifierEncodingScheme encodingScheme = table.getEncodingScheme();
-        Preconditions.checkArgument(encodingScheme != NON_ENCODED_QUALIFIERS,
-            "Use this method only for tables with encoding scheme "
-                    + NON_ENCODED_QUALIFIERS);
-        Map<String, Pair<Integer, Integer>> toReturn = 
Maps.newHashMapWithExpectedSize(table.getColumns().size());
-        for (PColumn column : table.getColumns()) {
-            if (!SchemaUtil.isPKColumn(column)) {
-                String colFamily = column.getFamilyName().getString();
-                Pair<Integer, Integer> minMaxQualifiers = 
toReturn.get(colFamily);
-                Integer encodedColumnQualifier = 
encodingScheme.decode(column.getColumnQualifierBytes());
-                if (minMaxQualifiers == null) {
-                    minMaxQualifiers = new Pair<>(encodedColumnQualifier, 
encodedColumnQualifier);
-                    toReturn.put(colFamily, minMaxQualifiers);
-                } else {
-                    if (encodedColumnQualifier < minMaxQualifiers.getFirst()) {
-                        minMaxQualifiers.setFirst(encodedColumnQualifier);
-                    } else if (encodedColumnQualifier > 
minMaxQualifiers.getSecond()) {
-                        minMaxQualifiers.setSecond(encodedColumnQualifier);
-                    }
+        Preconditions.checkArgument(encodingScheme != NON_ENCODED_QUALIFIERS);
+        if (table.getEncodedCQCounter() != null) {
+            Map<String, Integer> values = table.getEncodedCQCounter().values();
+            Map<String, Pair<Integer, Integer>> toReturn = 
Maps.newHashMapWithExpectedSize(values.size());
+            for (Entry<String, Integer> e : values.entrySet()) {
+                Integer lowerBound = 
QueryConstants.ENCODED_CQ_COUNTER_INITIAL_VALUE;
+                Integer upperBound = e.getValue() - 1;
+                if (lowerBound > upperBound) {
+                    lowerBound = upperBound;
                 }
+                toReturn.put(e.getKey(), new Pair<>(lowerBound, upperBound));
             }
+            return toReturn;
         }
-        return toReturn;
+        return Collections.emptyMap();
     }
     
     public static byte[] getColumnQualifierBytes(String columnName, Integer 
numberBasedQualifier, PTable table, boolean isPk) {

Reply via email to