Repository: phoenix Updated Branches: refs/heads/calcite db78bd6fd -> cc9115cb0
PHOENIX-3743 Add Row-Value-Constructor support Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/cc9115cb Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/cc9115cb Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/cc9115cb Branch: refs/heads/calcite Commit: cc9115cb07e35a7f7587a17715e77a12efffe984 Parents: db78bd6 Author: maryannxue <maryann....@gmail.com> Authored: Fri Mar 17 11:11:18 2017 -0700 Committer: maryannxue <maryann....@gmail.com> Committed: Fri Mar 17 11:11:18 2017 -0700 ---------------------------------------------------------------------- .../org/apache/phoenix/calcite/CalciteUtils.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/cc9115cb/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java index d37306a..0b098f0 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java @@ -88,6 +88,7 @@ import org.apache.phoenix.expression.ModulusExpression; import org.apache.phoenix.expression.NotExpression; import org.apache.phoenix.expression.OrExpression; import org.apache.phoenix.expression.ReinterpretCastExpression; +import org.apache.phoenix.expression.RowValueConstructorExpression; import org.apache.phoenix.expression.StringBasedLikeExpression; import org.apache.phoenix.expression.TimestampAddExpression; import org.apache.phoenix.expression.TimestampSubtractExpression; @@ -719,6 +720,22 @@ public class CalciteUtils { } }); + EXPRESSION_MAP.put(SqlKind.ROW, new ExpressionFactory() { + + @Override + public Expression newExpression(RexNode node, PhoenixRelImplementor implementor) { + List<Expression> children = convertChildren((RexCall) node, implementor); + boolean isConstant = true; + for (Expression child : children) { + if (!child.isStateless()) { + isConstant = false; + break; + } + } + return new RowValueConstructorExpression(children, isConstant); + } + + }); EXPRESSION_MAP.put(SqlKind.INPUT_REF, new ExpressionFactory() { @Override