You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gearpump.apache.org by ma...@apache.org on 2017/07/09 00:18:30 UTC

[17/20] incubator-gearpump git commit: Add logical plan

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 <bu...@cse.mrt.ac.lk>
Authored: Sat Jun 17 15:03:38 2017 +0530
Committer: manuzhang <ow...@gmail.com>
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();
+    }
+}