Add logical plan
Project: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/commit/e1c16163 Tree: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/tree/e1c16163 Diff: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/diff/e1c16163 Branch: refs/heads/sql Commit: e1c16163bba80308d35ba24d6114a14d4e7c9b71 Parents: 4a22d8a Author: Buddhi Ayesha <[email protected]> Authored: Sat Jun 17 15:03:38 2017 +0530 Committer: manuzhang <[email protected]> Committed: Sun Jul 9 07:52:48 2017 +0800 ---------------------------------------------------------------------- .../org/apache/calcite/planner/LogicalPlan.java | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/e1c16163/experiments/sql/src/main/java/org/apache/calcite/planner/LogicalPlan.java ---------------------------------------------------------------------- diff --git a/experiments/sql/src/main/java/org/apache/calcite/planner/LogicalPlan.java b/experiments/sql/src/main/java/org/apache/calcite/planner/LogicalPlan.java new file mode 100644 index 0000000..32b7593 --- /dev/null +++ b/experiments/sql/src/main/java/org/apache/calcite/planner/LogicalPlan.java @@ -0,0 +1,25 @@ +package org.apache.calcite.planner; + +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.parser.SqlParseException; +import org.apache.calcite.tools.Planner; +import org.apache.calcite.tools.RelConversionException; +import org.apache.calcite.tools.ValidationException; + +public class LogicalPlan { + + public static RelNode getLogicalPlan(String query, Planner planner) throws ValidationException, + RelConversionException { + SqlNode sqlNode; + + try { + sqlNode = planner.parse(query); + } catch (SqlParseException e) { + throw new RuntimeException("SQL query parsing error", e); + } + SqlNode validatedSqlNode = planner.validate(sqlNode); + + return planner.rel(validatedSqlNode).project(); + } +}
