You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by gj...@apache.org on 2019/05/06 22:57:08 UTC

[phoenix] branch 4.x-HBase-1.2 updated: PHOENIX-5264: Implement toString() of EncodedQualifiersColumnProjectionFilter with some useful output.

This is an automated email from the ASF dual-hosted git repository.

gjacoby pushed a commit to branch 4.x-HBase-1.2
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.2 by this push:
     new 6436bcd  PHOENIX-5264: Implement toString() of EncodedQualifiersColumnProjectionFilter with some useful output.
6436bcd is described below

commit 6436bcdb495d16edb56567819c60a9cb825645d0
Author: Priyank Porwal <pp...@salesforce.com>
AuthorDate: Tue Apr 30 11:01:56 2019 -0700

    PHOENIX-5264: Implement toString() of EncodedQualifiersColumnProjectionFilter with some useful output.
    
    Signed-off-by: Geoffrey Jacoby <gj...@apache.org>
---
 .../EncodedQualifiersColumnProjectionFilter.java   | 10 +++-
 ...ncodedQualifiersColumnProjectionFilterTest.java | 61 ++++++++++++++++++++++
 2 files changed, 70 insertions(+), 1 deletion(-)

diff --git a/phoenix-core/src/main/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilter.java b/phoenix-core/src/main/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilter.java
index cfacb4f..92ac128 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilter.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilter.java
@@ -137,7 +137,15 @@ public class EncodedQualifiersColumnProjectionFilter extends FilterBase implemen
 
     @Override
     public String toString() {
-        return "";
+        StringBuilder sb = new StringBuilder(100);
+        sb.append(String.format("EmptyCFName: %s, ", Bytes.toStringBinary(this.emptyCFName)));
+        sb.append(String.format("EncodingScheme: %s, ", this.encodingScheme));
+        sb.append(String.format("TrackedColumns: %s, ", this.trackedColumns));
+        sb.append("ConditionOnlyCfs: ");
+        for (byte[] conditionOnlyCf : this.conditionOnlyCfs) {
+            sb.append(String.format("%s, ", Bytes.toStringBinary(conditionOnlyCf)));
+        }
+        return sb.toString();
     }
     
     @Override
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilterTest.java b/phoenix-core/src/test/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilterTest.java
new file mode 100644
index 0000000..d4f1372
--- /dev/null
+++ b/phoenix-core/src/test/java/org/apache/phoenix/filter/EncodedQualifiersColumnProjectionFilterTest.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.phoenix.filter;
+
+import java.util.BitSet;
+import java.util.HashSet;
+import org.apache.phoenix.schema.PTable.QualifierEncodingScheme;
+import junit.framework.TestCase;
+
+public class EncodedQualifiersColumnProjectionFilterTest extends TestCase {
+
+    private final String someEmptyCFName = "cfName1";
+    private final String someConditionalCFName1 = "conditionalCfName1";
+    private final String someConditionalCFName2 = "conditionalCfName2";
+    private final QualifierEncodingScheme someQualifiedEncodingScheme = QualifierEncodingScheme.ONE_BYTE_QUALIFIERS;
+    private final BitSet someBitSet;
+    private EncodedQualifiersColumnProjectionFilter filter;
+
+    public EncodedQualifiersColumnProjectionFilterTest() {
+        HashSet<byte[]> conditionalCFNames = new HashSet<byte[]>(2);
+        conditionalCFNames.add(someConditionalCFName1.getBytes());
+        conditionalCFNames.add(someConditionalCFName2.getBytes());
+
+        this.someBitSet = new BitSet();
+        this.someBitSet.xor(new BitSet(0)); // All 1s
+
+        this.filter = new EncodedQualifiersColumnProjectionFilter(
+                this.someEmptyCFName.getBytes(),
+                someBitSet,
+                conditionalCFNames,
+                this.someQualifiedEncodingScheme);
+    }
+
+    public void testToString() {
+        String outputString = this.filter.toString();
+
+        assertTrue(outputString.contains("EmptyCFName"));
+        assertTrue(outputString.contains("EncodingScheme"));
+        assertTrue(outputString.contains("TrackedColumns"));
+        assertTrue(outputString.contains("ConditionOnlyCfs"));
+        assertTrue(outputString.contains(this.someEmptyCFName));
+        assertTrue(outputString.contains(this.someConditionalCFName1));
+        assertTrue(outputString.contains(this.someConditionalCFName2));
+        assertTrue(outputString.contains(this.someBitSet.toString()));
+    }
+}