Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.2 70b24a8d7 -> 9f980170c


PHOENIX-4647 Column header doesn't handle optional arguments correctly


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

Branch: refs/heads/4.x-HBase-1.2
Commit: 9f980170c3d6c81dbfb1a64862ab6bef7a49b072
Parents: 70b24a8
Author: Xu Cang <xc...@salesforce.com>
Authored: Mon Aug 6 23:56:00 2018 -0700
Committer: Thomas D'Silva <tdsi...@apache.org>
Committed: Wed Aug 8 16:22:03 2018 -0700

----------------------------------------------------------------------
 .../expression/function/SubstrFunction.java     | 20 ++++++++++++++++++++
 .../phoenix/compile/WhereOptimizerTest.java     | 12 ++++++++++++
 .../java/org/apache/phoenix/util/TestUtil.java  |  5 +++++
 3 files changed, 37 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/9f980170/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SubstrFunction.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SubstrFunction.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SubstrFunction.java
index feaa07a..0d6d1c9 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SubstrFunction.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/SubstrFunction.java
@@ -211,5 +211,25 @@ public class SubstrFunction extends PrefixFunction {
     public String getName() {
         return NAME;
     }
+
+    @Override
+    public String toString() {
+        StringBuilder buf = new StringBuilder(getName() + "(");
+        if (children.size()==0)
+            return buf.append(")").toString();
+        if (hasLengthExpression) {
+            buf.append(getStrExpression());
+            buf.append(", ");
+            buf.append(getOffsetExpression());
+            buf.append(", ");
+            buf.append(getLengthExpression());
+         } else {
+            buf.append(getStrExpression());
+            buf.append(", ");
+            buf.append(getOffsetExpression());
+        }
+        buf.append(")");
+        return buf.toString();
+    }
     
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9f980170/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereOptimizerTest.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereOptimizerTest.java 
b/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereOptimizerTest.java
index e5555d6..cc6f55a 100644
--- 
a/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereOptimizerTest.java
+++ 
b/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereOptimizerTest.java
@@ -29,6 +29,7 @@ import static org.apache.phoenix.util.TestUtil.like;
 import static org.apache.phoenix.util.TestUtil.not;
 import static org.apache.phoenix.util.TestUtil.rowKeyFilter;
 import static org.apache.phoenix.util.TestUtil.substr;
+import static org.apache.phoenix.util.TestUtil.substr2;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -62,6 +63,7 @@ import 
org.apache.phoenix.compile.WhereOptimizer.KeyExpressionVisitor.SingleKeyS
 import 
org.apache.phoenix.compile.WhereOptimizer.KeyExpressionVisitor.SlotsIterator;
 import 
org.apache.phoenix.compile.WhereOptimizer.KeyExpressionVisitor.TrailingRangeIterator;
 import org.apache.phoenix.expression.Expression;
+import org.apache.phoenix.expression.function.SubstrFunction;
 import org.apache.phoenix.filter.BooleanExpressionFilter;
 import org.apache.phoenix.filter.RowKeyComparisonFilter;
 import org.apache.phoenix.filter.SingleCQKeyValueComparisonFilter;
@@ -590,6 +592,16 @@ public class WhereOptimizerTest extends 
BaseConnectionlessQueryTest {
     }
 
     @Test
+    public void testSubstrExpressionWithoutLengthVariable() {
+        assertEquals("SUBSTR(ENTITY_ID, 
1)",((SubstrFunction)substr2(ENTITY_ID,1)).toString());
+    }
+
+    @Test
+    public void testSubstrExpressionWithLengthVariable() {
+        assertEquals("SUBSTR(ENTITY_ID, 1, 
10)",((SubstrFunction)substr(ENTITY_ID,1, 10)).toString());
+    }
+
+    @Test
     public void testTrailingSubstrExpression() throws SQLException {
         String tenantId = "0xD000000000001";
         String entityId = "002333333333333";

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9f980170/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java 
b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
index 1683a13..0def76f 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java
@@ -352,6 +352,11 @@ public class TestUtil {
         return  new SubstrFunction(Arrays.asList(e, 
LiteralExpression.newConstant(offset), LiteralExpression.newConstant(length)));
     }
 
+    public static Expression substr2(Expression e, Object offset) {
+
+        return  new SubstrFunction(Arrays.asList(e, 
LiteralExpression.newConstant(offset), LiteralExpression.newConstant(null)));
+    }
+
     public static Expression columnComparison(CompareOp op, Expression c1, 
Expression c2) {
         return  new ComparisonExpression(Arrays.<Expression>asList(c1, c2), 
op);
     }

Reply via email to