http://git-wip-us.apache.org/repos/asf/lens/blob/3c4056a2/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java
----------------------------------------------------------------------
diff --git
a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java
b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java
index db09a4b..6b5fb6a 100644
---
a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java
+++
b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java
@@ -26,10 +26,12 @@ import java.net.URLClassLoader;
import java.util.*;
import org.apache.lens.cube.parse.HQLParser;
+import org.apache.lens.cube.parse.TestQuery;
import org.apache.lens.server.api.LensConfConstants;
import org.apache.lens.server.api.error.LensException;
import org.apache.commons.lang3.StringUtils;
+
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.metastore.api.Database;
@@ -90,28 +92,8 @@ public class TestColumnarSQLRewriter {
* @param expected the expected
* @param actual the actual
*/
- private void compareQueries(String expected, String actual) {
- if (expected == null && actual == null) {
- return;
- } else if (expected == null) {
- Assert.fail();
- } else if (actual == null) {
- Assert.fail("Rewritten query is null");
- }
- String expectedTrimmed = expected.replaceAll("\\W", "");
- String actualTrimmed = actual.replaceAll("\\W", "");
-
- if (!expectedTrimmed.equalsIgnoreCase(actualTrimmed)) {
- String method = null;
- for (StackTraceElement trace : Thread.currentThread().getStackTrace()) {
- if (trace.getMethodName().startsWith("test")) {
- method = trace.getMethodName() + ":" + trace.getLineNumber();
- }
- }
-
- System.err.println("__FAILED__ " + method + "\n\tExpected: " + expected
+ "\n\t---------\n\tActual: " + actual);
- }
- Assert.assertTrue(expectedTrimmed.equalsIgnoreCase(actualTrimmed));
+ private void compareQueries(String actual, String expected) {
+ assertEquals(new TestQuery(actual), new TestQuery(expected));
}
/*
@@ -154,7 +136,7 @@ public class TestColumnarSQLRewriter {
public void setup() throws Exception {
qtest.init(conf);
- List<FieldSchema> factColumns = new ArrayList<FieldSchema>();
+ List<FieldSchema> factColumns = new ArrayList<>();
factColumns.add(new FieldSchema("item_key", "int", ""));
factColumns.add(new FieldSchema("branch_key", "int", ""));
factColumns.add(new FieldSchema("location_key", "int", ""));
@@ -270,9 +252,9 @@ public class TestColumnarSQLRewriter {
SessionState.start(hconf);
String rwq = qtest.rewrite(query, conf, hconf);
- String expected = "inner join (select day_of_week, day, time_key from
time_dim) time_dim___time_dim "
+ String expected = "inner join (select time_key, day_of_week, day from
time_dim) time_dim___time_dim "
+ "on (( sales_fact___fact . time_key ) = "
- + "( time_dim___time_dim . time_key )) inner join (select
location_name, location_key from location_dim) "
+ + "( time_dim___time_dim . time_key )) inner join (select location_key,
location_name from location_dim) "
+ "location_dim___location_dim on "
+ "((( sales_fact___fact . location_key ) = (
location_dim___location_dim . location_key )) "
+ "and (( location_dim___location_dim . location_name ) = 'test123' ))";
@@ -437,12 +419,12 @@ public class TestColumnarSQLRewriter {
+ "format(avg(( sales_fact___fact . dollars_sold )),
'##################.###' ), "
+ "min(( sales_fact___fact . dollars_sold )), max(( sales_fact___fact
. dollars_sold )) "
+ "from sales_fact sales_fact___fact inner join "
- + "(select day_of_week, day, time_key from time_dim)
time_dim___time_dim on "
+ + "(select time_key, day_of_week, day from time_dim)
time_dim___time_dim on "
+ "(( sales_fact___fact . time_key ) = ( time_dim___time_dim .
time_key )) inner join "
- + "(select location_name, location_key from location_dim)
location_dim___location_dim "
+ + "(select location_key, location_name from location_dim)
location_dim___location_dim "
+ "on (( sales_fact___fact . location_key ) = "
- + "( location_dim___location_dim . location_key )) inner join (select
item_name, "
- + "item_key from item_dim) item_dim___item_dim "
+ + "( location_dim___location_dim . location_key )) inner join (select
item_key, "
+ + "item_name from item_dim) item_dim___item_dim "
+ "on ((( sales_fact___fact . item_key ) = ( item_dim___item_dim .
item_key )) and "
+ "(( location_dim___location_dim . location_name ) = 'test123' ))
where "
+ "(( time_dim___time_dim . time_key ) between date_add( '2013-01-01'
, interval 1 day) "
@@ -491,9 +473,9 @@ public class TestColumnarSQLRewriter {
String expected = "select ( sales_fact___fact . time_key ), (
time_dim___time_dim . day_of_week ), "
+ "( time_dim___time_dim . day ), case when (sum(( sales_fact___fact
. dollars_sold )) = 0 ) "
+ "then 0.0 else sum(( sales_fact___fact . dollars_sold )) end
dollars_sold from sales_fact s"
- + "ales_fact___fact inner join (select day_of_week, day, time_key
from time_dim) "
+ + "ales_fact___fact inner join (select time_key, day_of_week, day
from time_dim) "
+ "time_dim___time_dim on (( sales_fact___fact . time_key ) "
- + "= ( time_dim___time_dim . time_key )) inner join (select
location_name, location_key from location_dim) "
+ + "= ( time_dim___time_dim . time_key )) inner join (select
location_key, location_name from location_dim) "
+ "location_dim___location_dim on "
+ "((( sales_fact___fact . location_key ) = (
location_dim___location_dim . location_key )) and "
+ "(( location_dim___location_dim . location_name ) = 'test123' ))
where ( time_dim___time_dim . time_key ) "
@@ -502,10 +484,10 @@ public class TestColumnarSQLRewriter {
+ "asc union all select ( sales_fact___fact . time_key ), (
time_dim___time_dim . day_of_week ), "
+ "( time_dim___time_dim . day ), case when (sum(( sales_fact___fact
. dollars_sold )) = 0 ) then 0.0 "
+ "else sum(( sales_fact___fact . dollars_sold )) end dollars_sold
from sales_fact sales_fact___fact "
- + "inner join (select day_of_week, day, time_key from time_dim)
time_dim___time_dim "
+ + "inner join (select time_key, day_of_week, day from time_dim)
time_dim___time_dim "
+ "on (( sales_fact___fact . time_key ) = "
- + "( time_dim___time_dim . time_key )) inner join (select
location_name, "
- + "location_key from location_dim) location_dim___location_dim on "
+ + "( time_dim___time_dim . time_key )) inner join (select
location_key, "
+ + "location_name from location_dim) location_dim___location_dim on "
+ "((( sales_fact___fact . location_key ) = (
location_dim___location_dim . location_key )) and "
+ "(( location_dim___location_dim . location_name ) = 'test123' ))
where ( time_dim___time_dim . time_key ) "
+ "between '2013-02-01' and '2013-02-05' group by (
sales_fact___fact . time_key ), "
@@ -513,9 +495,9 @@ public class TestColumnarSQLRewriter {
+ "select ( sales_fact___fact . time_key ), ( time_dim___time_dim .
day_of_week ), "
+ "( time_dim___time_dim . day ), case when (sum(( sales_fact___fact
. dollars_sold )) = 0 ) then 0.0 "
+ "else sum(( sales_fact___fact . dollars_sold )) end dollars_sold
from sales_fact sales_fact___fact "
- + "inner join (select day_of_week, day, time_key from time_dim) "
+ + "inner join (select time_key, day_of_week, day from time_dim) "
+ "time_dim___time_dim on (( sales_fact___fact . time_key ) = "
- + "( time_dim___time_dim . time_key )) inner join (select
location_name, location_key from location_dim) "
+ + "( time_dim___time_dim . time_key )) inner join (select
location_key, location_name from location_dim) "
+ "location_dim___location_dim on "
+ "((( sales_fact___fact . location_key ) = (
location_dim___location_dim . location_key )) and "
+ "(( location_dim___location_dim . location_name ) = 'test123' ))
where "
@@ -567,13 +549,13 @@ public class TestColumnarSQLRewriter {
+ "dollars_sold , round(sum(( sales_fact___fact . units_sold )), 2 ),
"
+ "avg(( sales_fact___fact . dollars_sold )), "
+ "min(( sales_fact___fact . dollars_sold )), max(( sales_fact___fact
. dollars_sold )), location_name , "
- + " from sales_fact sales_fact___fact inner join (select day_of_week,
day, time_key "
+ + " from sales_fact sales_fact___fact inner join (select time_key,
day_of_week, day"
+ "from time_dim) time_dim___time_dim "
+ "on (( sales_fact___fact . time_key ) = ( time_dim___time_dim .
time_key )) "
- + "inner join (select location_name, location_key from location_dim) "
+ + "inner join (select location_key, location_name from location_dim) "
+ "location_dim___location_dim on (( sales_fact___fact . location_key
) = "
- + "( location_dim___location_dim . location_key )) inner join (select
item_name, "
- + "item_key from item_dim) item_dim___item_dim on "
+ + "( location_dim___location_dim . location_key )) inner join (select
item_key, "
+ + "item_name from item_dim) item_dim___item_dim on "
+ "((( sales_fact___fact . item_key ) = ( item_dim___item_dim .
item_key )) and "
+ "(( location_dim___location_dim . location_name ) = 'test123' ))
where (( time_dim___time_dim . time_key ) "
+ "between '2013-01-01' and '2013-01-31' and ((
item_dim___item_dim . item_name ) = 'item_1' )) "
@@ -606,8 +588,8 @@ public class TestColumnarSQLRewriter {
+ "( time_dim___time_dim . day ), ( item_dim___item_dim . item_key ),
sum(alias1) dollars_sold , "
+ "round(sum(alias2), 2 ), avg(alias6) avg_dollars_sold, min(alias4),
max(alias5) max_dollars_sold, "
+ "location_name , (avg(alias6) / 1.0 ) "
- + "from (select sales_fact___fact.time_key,
sales_fact___fact.dollars_sold, sales_fact___fact.location_key, "
- + "sales_fact___fact.item_key,sum( case when (( sales_fact___fact .
dollars_sold ) = 0 ) then 0.0 end ) "
+ + "from (select sales_fact___fact.time_key,
sales_fact___fact.location_key, sales_fact___fact.item_key,"
+ + "sales_fact___fact.dollars_sold, sum( case when ((
sales_fact___fact . dollars_sold ) = 0 ) then 0.0 end )"
+ "as alias1, sum(( sales_fact___fact . units_sold )) as alias2, avg((
sales_fact___fact . dollars_sold )) "
+ "as alias3, min(( sales_fact___fact . dollars_sold )) as alias4, "
+ "max(( sales_fact___fact . dollars_sold )) as alias5, "
@@ -617,14 +599,14 @@ public class TestColumnarSQLRewriter {
+ "and sales_fact___fact.location_key in ( select location_dim
.location_key from "
+ "location_dim where (( location_dim. location_name ) = 'test123' )
) and sales_fact___fact.item_key in "
+ "( select item_dim .item_key from item_dim where (( item_dim.
item_name ) = 'item_1' ) ) "
- + "group by sales_fact___fact.time_key,
sales_fact___fact.dollars_sold, "
- + "sales_fact___fact.location_key, sales_fact___fact.item_key)
sales_fact___fact "
- + "inner join (select day_of_week, day, time_key from time_dim) "
+ + "group by sales_fact___fact.time_key,
sales_fact___fact.location_key, "
+ + "sales_fact___fact.item_key, sales_fact___fact.dollars_sold)
sales_fact___fact "
+ + "inner join (select time_key, day_of_week, day from time_dim) "
+ "time_dim___time_dim on (( sales_fact___fact . time_key ) = "
- + "( time_dim___time_dim . time_key )) inner join (select
location_name, "
- + "location_key from location_dim) location_dim___location_dim "
+ + "( time_dim___time_dim . time_key )) inner join (select
location_key, "
+ + "location_name from location_dim) location_dim___location_dim "
+ "on (( sales_fact___fact . location_key ) = (
location_dim___location_dim . location_key )) "
- + "inner join (select item_name, item_key from item_dim)
item_dim___item_dim "
+ + "inner join (select item_key, item_name from item_dim)
item_dim___item_dim "
+ "on ((( sales_fact___fact . item_key ) = "
+ "( item_dim___item_dim . item_key )) and ((
location_dim___location_dim . location_name ) = 'test123' )) "
+ "where (( time_dim___time_dim . time_key ) between '2013-01-01'
and '2013-01-31' "
@@ -662,9 +644,9 @@ public class TestColumnarSQLRewriter {
+ "sales_fact___fact.location_key, sales_fact___fact.item_key)
sales_fact___fact inner "
+ "join (select time_key from time_dim) time_dim___time_dim on ((
sales_fact___fact . time_key ) = "
+ "( time_dim___time_dim . time_key )) inner join "
- + "(select location_name, location_key from location_dim)
location_dim___location_dim on "
+ + "(select location_key, location_name from location_dim)
location_dim___location_dim on "
+ "(( sales_fact___fact . location_key ) = (
location_dim___location_dim . location_key )) "
- + "inner join (select item_name, item_key from item_dim)
item_dim___item_dim "
+ + "inner join (select item_key, item_name from item_dim)
item_dim___item_dim "
+ "on ((( sales_fact___fact . item_key ) = "
+ "( item_dim___item_dim . item_key )) and inner ) inner join "
+ "(select branch_key from branch_dim) branch_dim___branch_dim on "
@@ -715,9 +697,9 @@ public class TestColumnarSQLRewriter {
+ "( time_dim___time_dim . day ), case when (sum((
sales_fact__db_sales_fact_fact . dollars_sold )) = 0 ) "
+ "then 0.0 else sum(( sales_fact__db_sales_fact_fact . dollars_sold
)) end dollars_sold "
+ "from db.sales_fact sales_fact__db_sales_fact_fact inner join "
- + "(select day_of_week, day, time_key from time_dim)
time_dim___time_dim "
+ + "(select time_key, day_of_week, day from time_dim)
time_dim___time_dim "
+ "on (( sales_fact__db_sales_fact_fact . time_key ) = (
time_dim___time_dim . time_key )) "
- + "inner join (select location_name, location_key from
db.location_dim) location_dim__db_location_dim_ld on "
+ + "inner join (select location_key, location_name from
db.location_dim) location_dim__db_location_dim_ld on "
+ "((( sales_fact__db_sales_fact_fact . location_key ) = (
location_dim__db_location_dim_ld . location_key )) "
+ "and (( location_dim__db_location_dim_ld . location_name ) =
'test123' )) where "
+ "( time_dim___time_dim . time_key ) between '2013-01-01' and
'2013-01-31' "
@@ -743,10 +725,10 @@ public class TestColumnarSQLRewriter {
String actual = qtest.rewrite(query, conf, hconf);
String expected = "select ( dim1___dim1 . date ) date , sum(alias1) msr1 ,
( dim2___dim2 . name ) dim2_name , "
+ "( dim3___dim3 . name ) dim3_name , ( dim4___dim4 . name ) dim4_name
"
- + "from (select fact___f.dim2_id, fact___f.dim1_id,
fact___f.dim3_id,sum(( fact___f . msr1 )) "
+ + "from (select fact___f.dim1_id, fact___f.dim2_id,
fact___f.dim3_id,sum(( fact___f . msr1 )) "
+ "as alias1 from fact fact___f where fact___f.dim1_id in ( select
dim1 .id from dim1 where "
+ "(( dim1. date ) = '2014-11-25 00:00:00' ) ) "
- + "group by fact___f.dim2_id, fact___f.dim1_id, fact___f.dim3_id) "
+ + "group by fact___f.dim1_id, fact___f.dim2_id, fact___f.dim3_id) "
+ "fact___f inner join (select id, date from dim1) "
+ "dim1___dim1 on (( fact___f . dim1_id ) = ( dim1___dim1 . id )) "
+ "inner join (select id, id_2, name from dim2) dim2___dim2 "
@@ -773,11 +755,11 @@ public class TestColumnarSQLRewriter {
String actual = qtest.rewrite(query, conf, hconf);
String expected = "select ( dim1___dim1 . date ) date , sum(alias1) msr1 ,
( dim2___dim2 . name ) "
- + "dim2_name from (select fact___f.dim2_id, fact___f.dim1_id,
fact___f.m4, fact___f.m3, "
- + "fact___f.m2,sum(( fact___f . msr1 )) as alias1 from fact fact___f
where ( fact___f . m4 ) "
+ + "dim2_name from (select fact___f.dim1_id, fact___f.m2,
fact___f.dim2_id, fact___f.m3, fact___f.m4, "
+ + "sum(( fact___f . msr1 )) as alias1 from fact fact___f where (
fact___f . m4 ) "
+ "is not null and (( fact___f . m2 ) = '1234' ) and (( fact___f .
m3 ) > 3000 ) and "
+ "fact___f.dim1_id in ( select dim1 .id from dim1 where (( dim1.
date ) = '2014-11-25 00:00:00' ) ) "
- + "group by fact___f.dim2_id, fact___f.dim1_id, fact___f.m4,
fact___f.m3, fact___f.m2) fact___f "
+ + "group by fact___f.dim1_id, fact___f.m2, fact___f.dim2_id,
fact___f.m3, fact___f.m4) fact___f "
+ "inner join (select id, date from dim1) dim1___dim1 on ((( fact___f
. dim1_id ) = ( dim1___dim1 . id )) and "
+ "(( fact___f . m2 ) = '1234' )) inner join (select id, name from
dim2) "
+ "dim2___dim2 on ((( fact___f . dim2_id ) = "
@@ -800,13 +782,14 @@ public class TestColumnarSQLRewriter {
SessionState.start(hconf);
String actual = qtest.rewrite(query, conf, hconf);
+
String expected = "select ( dim1___dim1 . date ) dim1_date , sum(alias1)
msr1 , "
+ "( dim2___dim2 . name ) dim2_name "
- + "from (select fact___f.dim2_id, fact___f.dim1_id, fact___f.m4,
fact___f.m3, fact___f.m2,"
+ + "from (select fact___f.dim1_id, fact___f.m2, fact___f.dim2_id,
fact___f.m3, fact___f.m4"
+ "sum(( fact___f . msr1 )) as alias1 from fact fact___f where (
fact___f . m4 ) "
+ "is not null and (( fact___f . m2 ) = '1234' ) and (( fact___f .
m3 ) > 3000 ) "
+ "and fact___f.dim1_id in ( select dim1 .id from dim1 where ((
dim1. date ) = '2014-11-25 00:00:00' ) ) "
- + "group by fact___f.dim2_id, fact___f.dim1_id, fact___f.m4,
fact___f.m3, fact___f.m2) fact___f "
+ + "group by fact___f.dim1_id, fact___f.m2, fact___f.dim2_id,
fact___f.m3, fact___f.m4) fact___f "
+ "inner join (select id, date from dim1) dim1___dim1 on ((( fact___f
. dim1_id ) = ( dim1___dim1 . id )) "
+ "and (( fact___f . m2 ) = '1234' )) inner join (select id, name
from dim2) "
+ "dim2___dim2 on ((( fact___f . dim2_id ) "
@@ -830,11 +813,12 @@ public class TestColumnarSQLRewriter {
String actual = qtest.rewrite(query, conf, hconf);
String expected = "select ( dim1___dim1 . date ) dim1_date , sum(alias1)
msr1 , "
- + "( dim2___dim2 . name ) dim2_name from (select fact___f.dim2_id,
fact___f.dim1_id, fact___f.dim3_id, "
- + "fact___f.m4, fact___f.m2,sum(( fact___f . msr1 )) as alias1 from
fact fact___f where ( fact___f . m4 ) "
+ + "( dim2___dim2 . name ) dim2_name from (select fact___f.dim1_id,
fact___f.m2, fact___f.dim2_id,"
+ + "fact___f.dim3_id, "
+ + "fact___f.m4, sum(( fact___f . msr1 )) as alias1 from fact fact___f
where ( fact___f . m4 ) "
+ "is not null and (( fact___f . m2 ) = '1234' ) and
fact___f.dim1_id in ( select dim1 .id from dim1 "
- + "where (( dim1. date ) = '2014-11-25 00:00:00' ) ) group by
fact___f.dim2_id, fact___f.dim1_id, "
- + "fact___f.dim3_id, fact___f.m4, fact___f.m2) fact___f inner join
(select id, date from dim1) dim1___dim1 on "
+ + "where (( dim1. date ) = '2014-11-25 00:00:00' ) ) group by
fact___f.dim1_id, fact___f.m2, fact___f.dim2_id,"
+ + "fact___f.dim3_id, fact___f.m4) fact___f inner join (select id,
date from dim1) dim1___dim1 on "
+ "((( fact___f . dim1_id ) = ( dim1___dim1 . id )) and (( fact___f .
m2 ) = '1234' )) "
+ "inner join (select id, name from dim2) dim2___dim2 on ((( fact___f
. dim2_id ) = ( dim2___dim2 . id )) "
+ "and (( fact___f . dim3_id ) = ( dim2___dim2 . id ))) where (((
dim1___dim1 . date ) = "