You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by am...@apache.org on 2013/05/14 07:50:59 UTC
svn commit: r1482207 - in /hive/branches/HIVE-4115/ql/src:
java/org/apache/hadoop/hive/ql/cube/processors/CubeDriver.java
test/org/apache/hadoop/hive/ql/cube/processors/TestCubeDriver.java
Author: amareshwari
Date: Tue May 14 05:50:58 2013
New Revision: 1482207
URL: http://svn.apache.org/r1482207
Log:
Add support for cube explain query
Modified:
hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/processors/CubeDriver.java
hive/branches/HIVE-4115/ql/src/test/org/apache/hadoop/hive/ql/cube/processors/TestCubeDriver.java
Modified: hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/processors/CubeDriver.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/processors/CubeDriver.java?rev=1482207&r1=1482206&r2=1482207&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/processors/CubeDriver.java (original)
+++ hive/branches/HIVE-4115/ql/src/java/org/apache/hadoop/hive/ql/cube/processors/CubeDriver.java Tue May 14 05:50:58 2013
@@ -11,6 +11,7 @@ import org.apache.hadoop.hive.ql.ErrorMs
import org.apache.hadoop.hive.ql.cube.parse.CubeQueryContext;
import org.apache.hadoop.hive.ql.cube.parse.CubeQueryRewriter;
import org.apache.hadoop.hive.ql.parse.ASTNode;
+import org.apache.hadoop.hive.ql.parse.HiveParser;
import org.apache.hadoop.hive.ql.parse.ParseDriver;
import org.apache.hadoop.hive.ql.parse.ParseException;
import org.apache.hadoop.hive.ql.parse.ParseUtils;
@@ -57,13 +58,22 @@ public class CubeDriver extends Driver {
ParseDriver pd = new ParseDriver();
ASTNode tree = pd.parse(query, ctx);
tree = ParseUtils.findRootNonNullToken(tree);
+ boolean explain = false;
+ if (tree.getToken().getType() == (HiveParser.TOK_EXPLAIN)) {
+ tree = (ASTNode) tree.getChild(0);
+ explain = true;
+ }
// compile the cube query and rewrite it to HQL query
CubeQueryRewriter rewriter = new CubeQueryRewriter(getConf());
// 1. rewrite query to get summary tables and joins
CubeQueryContext phase1Query = rewriter.rewritePhase1(tree);
CubeQueryContext finalQuery = rewriter.rewritePhase2(phase1Query,
getSupportedStorages(getConf()));
- return finalQuery.toHQL();
+ String hql = finalQuery.toHQL();
+ if (explain) {
+ hql = "EXPLAIN " + hql;
+ }
+ return hql;
}
private List<String> getSupportedStorages(HiveConf conf) {
Modified: hive/branches/HIVE-4115/ql/src/test/org/apache/hadoop/hive/ql/cube/processors/TestCubeDriver.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-4115/ql/src/test/org/apache/hadoop/hive/ql/cube/processors/TestCubeDriver.java?rev=1482207&r1=1482206&r2=1482207&view=diff
==============================================================================
--- hive/branches/HIVE-4115/ql/src/test/org/apache/hadoop/hive/ql/cube/processors/TestCubeDriver.java (original)
+++ hive/branches/HIVE-4115/ql/src/test/org/apache/hadoop/hive/ql/cube/processors/TestCubeDriver.java Tue May 14 05:50:58 2013
@@ -91,6 +91,14 @@ public class TestCubeDriver {
}
@Test
+ public void testCubeExplain() throws Exception {
+ String hqlQuery = driver.compileCubeQuery("explain select SUM(msr2) from " +
+ "testCube where time_range_in('" + getDateUptoHours(twodaysBack)
+ + "','" + getDateUptoHours(now) + "')");
+ System.out.println("cube hql:" + hqlQuery);
+ }
+
+ @Test
public void testCubeWhereQuery() throws Exception {
System.out.println("Test from:" + getDateUptoHours(twodaysBack) + " to:" +
getDateUptoHours(now));
@@ -509,7 +517,7 @@ public class TestCubeDriver {
+ "','" + getDateUptoHours(now) + "')");
System.out.println("cube hql:" + hqlQuery);
hqlQuery = driver.compileCubeQuery("select dim1, dim2, COUNT(msr1)," +
- " SUM(msr2), msr3 from testCube" +
+ " SUM(msr2), msr3 from testCube" +
" where time_range_in('" + getDateUptoHours(twodaysBack)
+ "','" + getDateUptoHours(now) + "')");
System.out.println("cube hql:" + hqlQuery);