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); }