Repository: phoenix Updated Branches: refs/heads/calcite 2aab5bfa9 -> f6d836a85
PHOENIX-3646 Fix issues with Split keys and Replace bind values with actual split keys in CREATE TABLE DDL in Phoenix-Calcite(Rajeshbabu) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f6d836a8 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f6d836a8 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f6d836a8 Branch: refs/heads/calcite Commit: f6d836a852d9d3accc79351675055612880a0660 Parents: 2aab5bf Author: Rajeshbabu Chintaguntla <rajeshb...@apache.org> Authored: Fri Feb 3 23:30:33 2017 +0530 Committer: Rajeshbabu Chintaguntla <rajeshb...@apache.org> Committed: Fri Feb 3 23:30:33 2017 +0530 ---------------------------------------------------------------------- .../src/main/codegen/includes/parserImpls.ftl | 21 ++++++++++++++++++-- .../phoenix/calcite/PhoenixPrepareImpl.java | 7 ++++++- .../java/org/apache/phoenix/query/BaseTest.java | 3 ++- 3 files changed, 27 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/f6d836a8/phoenix-core/src/main/codegen/includes/parserImpls.ftl ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/codegen/includes/parserImpls.ftl b/phoenix-core/src/main/codegen/includes/parserImpls.ftl index 2539032..0d6a7b7 100644 --- a/phoenix-core/src/main/codegen/includes/parserImpls.ftl +++ b/phoenix-core/src/main/codegen/includes/parserImpls.ftl @@ -820,15 +820,32 @@ SqlNodeList SplitKeyList() : } { { pos = getPos(); } - e = StringLiteral() { splitKeyList = startList(e); } + e = SplitKeyLiteral() { splitKeyList = startList(e); } ( - <COMMA> e = StringLiteral() { splitKeyList.add(e); } + <COMMA> e = SplitKeyLiteral() { splitKeyList.add(e); } ) * { return new SqlNodeList(splitKeyList, pos.plus(getPos())); } } +SqlNode SplitKeyLiteral(): +{ + SqlParserPos pos=null; + SqlNode e; +} +{ + { pos = getPos(); } + ( + e = StringLiteral() + | + e = NumericLiteral() + ) + { + return e.clone(pos); + } +} + SqlColumnDefNode ColumnDef() : { SqlIdentifier columnName; http://git-wip-us.apache.org/repos/asf/phoenix/blob/f6d836a8/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java index 7311e58..9edc4de 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixPrepareImpl.java @@ -679,7 +679,12 @@ public class PhoenixPrepareImpl extends CalcitePrepareImpl { splits = Lists.newArrayList(); for (SqlNode splitKey : splitKeyList) { final SqlLiteral key = (SqlLiteral) splitKey; - splits.add(nodeFactory.literal(((NlsString) key.getValue()).toString())); + Object value = key.getValue(); + if(key.getValue() instanceof NlsString) { + String quotedValue = ((NlsString) key.getValue()).toString(); + value = quotedValue.substring(1, quotedValue.length() - 1); + } + splits.add(nodeFactory.literal(value)); } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/f6d836a8/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java index 6631546..4ea40de 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java @@ -123,6 +123,7 @@ import org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory; import org.apache.hadoop.hbase.regionserver.RSRpcServices; +import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.BaseClientManagedTimeIT; import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT; import org.apache.phoenix.exception.SQLExceptionCode; @@ -791,7 +792,7 @@ public abstract class BaseTest { if (splits != null) { buf.append(" SPLIT ON ("); for (int i = 0; i < splits.length; i++) { - buf.append("?,"); + buf.append("'").append(Bytes.toString(splits[i])).append("'").append(","); } buf.setCharAt(buf.length()-1, ')'); }