You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/05/19 04:08:11 UTC
[46/47] tajo git commit: TAJO-1577: Add test cases to verify join
plans. (jihoon)
http://git-wip-us.apache.org/repos/asf/tajo/blob/4b1b7799/tajo-core/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
index 6bec3ad..5dae452 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
@@ -57,10 +57,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("id", TajoDataTypes.Type.INT4);
schema.addColumn("value", TajoDataTypes.Type.INT8);
String[] data = new String[]{ "1|-111", "2|\\N", "3|-333" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select max(value) as max_value from table11");
+ ResultSet res = executeString("select max(value) as max_value from testbuiltin11");
String ascExpected = "max_value\n" +
"-------------------------------\n" +
"-111\n";
@@ -68,7 +68,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -82,10 +82,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
Schema schema = new Schema();
schema.addColumn("value", TajoDataTypes.Type.DATE);
String[] data = new String[]{ "2014-01-02", "2014-12-01", "2015-01-01", "1999-08-09", "2000-03-01" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from table11");
+ ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
String ascExpected = "min_value,max_value\n" +
"-------------------------------\n" +
"1999-08-09,2015-01-01\n";
@@ -93,7 +93,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -106,10 +106,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
Schema schema = new Schema();
schema.addColumn("value", TajoDataTypes.Type.DATE);
String[] data = new String[]{ "2014-01-02", "2014-12-01", "\\N", "\\N", "2000-03-01" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from table11");
+ ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
String ascExpected = "min_value,max_value\n" +
"-------------------------------\n" +
"2000-03-01,2014-12-01\n";
@@ -117,7 +117,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -130,10 +130,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
Schema schema = new Schema();
schema.addColumn("value", TajoDataTypes.Type.TIME);
String[] data = new String[]{ "11:11:11", "23:12:50", "00:00:01", "09:59:59", "12:13:14" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from table11");
+ ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
String ascExpected = "min_value,max_value\n" +
"-------------------------------\n" +
"00:00:01,23:12:50\n";
@@ -141,7 +141,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -154,10 +154,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
Schema schema = new Schema();
schema.addColumn("value", TajoDataTypes.Type.TIME);
String[] data = new String[]{ "11:11:11", "\\N", "\\N", "09:59:59", "12:13:14" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from table11");
+ ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
String ascExpected = "min_value,max_value\n" +
"-------------------------------\n" +
"09:59:59,12:13:14\n";
@@ -165,7 +165,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -179,10 +179,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP);
String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "2016-12-24 00:00:01",
"1977-05-04 09:59:59", "2002-11-21 12:13:14" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from table11");
+ ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
String ascExpected = "min_value,max_value\n" +
"-------------------------------\n" +
"1977-05-04 09:59:59,2016-12-24 00:00:01\n";
@@ -190,7 +190,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -204,10 +204,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP);
String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "\\N",
"\\N", "2002-11-21 12:13:14" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from table11");
+ ResultSet res = executeString("select min(value) as min_value, max(value) as max_value from testbuiltin11");
String ascExpected = "min_value,max_value\n" +
"-------------------------------\n" +
"1999-01-01 11:11:11,2015-01-01 23:12:50\n";
@@ -215,7 +215,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -236,10 +236,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("id", TajoDataTypes.Type.INT4);
schema.addColumn("value", TajoDataTypes.Type.INT8);
String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(value) as min_value from table11");
+ ResultSet res = executeString("select min(value) as min_value from testbuiltin11");
String ascExpected = "min_value\n" +
"-------------------------------\n" +
"111\n";
@@ -247,7 +247,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -269,10 +269,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("id", TajoDataTypes.Type.INT4);
schema.addColumn("name", TajoDataTypes.Type.TEXT);
String[] data = new String[]{ "1|\\N", "2|\\N", "3|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select max(name) as max_name from table11");
+ ResultSet res = executeString("select max(name) as max_name from testbuiltin11");
String ascExpected = "max_name\n" +
"-------------------------------\n" +
"null\n";
@@ -280,7 +280,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -302,10 +302,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("id", TajoDataTypes.Type.INT4);
schema.addColumn("name", TajoDataTypes.Type.TEXT);
String[] data = new String[]{ "1|def", "2|\\N", "3|abc" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select min(name) as min_name from table11");
+ ResultSet res = executeString("select min(name) as min_name from testbuiltin11");
String ascExpected = "min_name\n" +
"-------------------------------\n" +
"abc\n";
@@ -313,7 +313,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -366,10 +366,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
String[] data = new String[]{ "1|\\N|-111|1.2|-50.5", "2|1|\\N|\\N|52.5", "3|2|-333|2.8|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select avg(value_int) as avg_int, avg(value_long) as avg_long, avg(value_float) as avg_float, avg(value_double) as avg_double from table11");
+ ResultSet res = executeString("select avg(value_int) as avg_int, avg(value_long) as avg_long, avg(value_float) as avg_float, avg(value_double) as avg_double from testbuiltin11");
String ascExpected = "avg_int,avg_long,avg_float,avg_double\n" +
"-------------------------------\n" +
"1.5,-222.0,2.0,1.0\n";
@@ -377,7 +377,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -395,10 +395,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
String[] data = new String[]{ "1|\\N|\\N|\\N|\\N", "2|\\N|\\N|\\N|\\N", "3|\\N|\\N|\\N|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select avg(value_int) as avg_int, avg(value_long) as avg_long, avg(value_float) as avg_float, avg(value_double) as avg_double from table11");
+ ResultSet res = executeString("select avg(value_int) as avg_int, avg(value_long) as avg_long, avg(value_float) as avg_float, avg(value_double) as avg_double from testbuiltin11");
String ascExpected = "avg_int,avg_long,avg_float,avg_double\n" +
"-------------------------------\n" +
"null,null,null,null\n";
@@ -406,7 +406,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -424,10 +424,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
String[] data = new String[]{ "1|\\N|-111|1.2|-50.5", "2|1|\\N|\\N|52.5", "3|2|-333|2.8|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select sum(value_int) as sum_int, sum(value_long) as sum_long, sum(value_float) as sum_float, sum(value_double) as sum_double from table11");
+ ResultSet res = executeString("select sum(value_int) as sum_int, sum(value_long) as sum_long, sum(value_float) as sum_float, sum(value_double) as sum_double from testbuiltin11");
String ascExpected = "sum_int,sum_long,sum_float,sum_double\n" +
"-------------------------------\n" +
"3,-444,4.0,2.0\n";
@@ -435,7 +435,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -453,10 +453,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
String[] data = new String[]{ "1|\\N|\\N|\\N|\\N", "2|\\N|\\N|\\N|\\N", "3|\\N|\\N|\\N|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select sum(value_int) as sum_int, sum(value_long) as sum_long, sum(value_float) as sum_float, sum(value_double) as sum_double from table11");
+ ResultSet res = executeString("select sum(value_int) as sum_int, sum(value_long) as sum_long, sum(value_float) as sum_float, sum(value_double) as sum_double from testbuiltin11");
String ascExpected = "sum_int,sum_long,sum_float,sum_double\n" +
"-------------------------------\n" +
"null,null,null,null\n";
@@ -464,7 +464,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -485,10 +485,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
"3|2|-333|2.8|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select stddev_samp(value_int) as sdsamp_int, stddev_samp(value_long) as sdsamp_long, stddev_samp(value_float) as sdsamp_float, stddev_samp(value_double) as sdsamp_double from table11");
+ ResultSet res = executeString("select stddev_samp(value_int) as sdsamp_int, stddev_samp(value_long) as sdsamp_long, stddev_samp(value_float) as sdsamp_float, stddev_samp(value_double) as sdsamp_double from testbuiltin11");
String ascExpected = "sdsamp_int,sdsamp_long,sdsamp_float,sdsamp_double\n" +
"-------------------------------\n" +
"0.7071067811865476,156.97770542341354,1.1313707824635184,72.8319984622144\n";
@@ -496,7 +496,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -517,10 +517,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
"3|\\N|\\N|\\N|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select stddev_samp(value_int) as sdsamp_int, stddev_samp(value_long) as sdsamp_long, stddev_samp(value_float) as sdsamp_float, stddev_samp(value_double) as sdsamp_double from table11");
+ ResultSet res = executeString("select stddev_samp(value_int) as sdsamp_int, stddev_samp(value_long) as sdsamp_long, stddev_samp(value_float) as sdsamp_float, stddev_samp(value_double) as sdsamp_double from testbuiltin11");
String ascExpected = "sdsamp_int,sdsamp_long,sdsamp_float,sdsamp_double\n" +
"-------------------------------\n" +
"null,null,null,null\n";
@@ -528,7 +528,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -549,10 +549,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
"3|2|-333|2.8|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select stddev_pop(value_int) as sdpop_int, stddev_pop(value_long) as sdpop_long, stddev_pop(value_float) as sdpop_float, stddev_pop(value_double) as sdpop_double from table11");
+ ResultSet res = executeString("select stddev_pop(value_int) as sdpop_int, stddev_pop(value_long) as sdpop_long, stddev_pop(value_float) as sdpop_float, stddev_pop(value_double) as sdpop_double from testbuiltin11");
String ascExpected = "sdpop_int,sdpop_long,sdpop_float,sdpop_double\n" +
"-------------------------------\n" +
"0.5,111.0,0.7999999523162842,51.5\n";
@@ -560,7 +560,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -581,10 +581,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
"3|\\N|\\N|\\N|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select stddev_pop(value_int) as sdpop_int, stddev_pop(value_long) as sdpop_long, stddev_pop(value_float) as sdpop_float, stddev_pop(value_double) as sdpop_double from table11");
+ ResultSet res = executeString("select stddev_pop(value_int) as sdpop_int, stddev_pop(value_long) as sdpop_long, stddev_pop(value_float) as sdpop_float, stddev_pop(value_double) as sdpop_double from testbuiltin11");
String ascExpected = "sdpop_int,sdpop_long,sdpop_float,sdpop_double\n" +
"-------------------------------\n" +
"0.0,null,null,0.0\n";
@@ -592,7 +592,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -613,10 +613,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
"3|2|-333|2.8|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select var_samp(value_int) as vs_int, var_samp(value_long) as vs_long, var_samp(value_float) as vs_float, var_samp(value_double) as vs_double from table11");
+ ResultSet res = executeString("select var_samp(value_int) as vs_int, var_samp(value_long) as vs_long, var_samp(value_float) as vs_float, var_samp(value_double) as vs_double from testbuiltin11");
String ascExpected = "vs_int,vs_long,vs_float,vs_double\n" +
"-------------------------------\n" +
"0.5,24642.0,1.279999847412114,5304.5\n";
@@ -624,7 +624,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -644,10 +644,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
"3|\\N|\\N|\\N|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select var_samp(value_int) as vsamp_int, var_samp(value_long) as vsamp_long, var_samp(value_float) as vsamp_float, var_samp(value_double) as vsamp_double from table11");
+ ResultSet res = executeString("select var_samp(value_int) as vsamp_int, var_samp(value_long) as vsamp_long, var_samp(value_float) as vsamp_float, var_samp(value_double) as vsamp_double from testbuiltin11");
String ascExpected = "vsamp_int,vsamp_long,vsamp_float,vsamp_double\n" +
"-------------------------------\n" +
"null,null,null,null\n";
@@ -655,7 +655,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -675,10 +675,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
"3|2|-333|2.8|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select var_pop(value_int) as vpop_int, var_pop(value_long) as vpop_long, var_pop(value_float) as vpop_float, var_pop(value_double) as vpop_double from table11");
+ ResultSet res = executeString("select var_pop(value_int) as vpop_int, var_pop(value_long) as vpop_long, var_pop(value_float) as vpop_float, var_pop(value_double) as vpop_double from testbuiltin11");
String ascExpected = "vpop_int,vpop_long,vpop_float,vpop_double\n" +
"-------------------------------\n" +
"0.25,12321.0,0.639999923706057,2652.25\n";
@@ -686,7 +686,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
@@ -706,10 +706,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
"3|\\N|\\N|\\N|\\N" };
- TajoTestingCluster.createTable("table11", schema, tableOptions, data, 1);
+ TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
try {
- ResultSet res = executeString("select var_pop(value_int) as vpop_int, var_pop(value_long) as vpop_long, var_pop(value_float) as vpop_float, var_pop(value_double) as vpop_double from table11");
+ ResultSet res = executeString("select var_pop(value_int) as vpop_int, var_pop(value_long) as vpop_long, var_pop(value_float) as vpop_float, var_pop(value_double) as vpop_double from testbuiltin11");
String ascExpected = "vpop_int,vpop_long,vpop_float,vpop_double\n" +
"-------------------------------\n" +
"0.0,null,null,0.0\n";
@@ -717,7 +717,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
assertEquals(ascExpected, resultSetToString(res));
res.close();
} finally {
- executeString("DROP TABLE table11 PURGE");
+ executeString("DROP TABLE testbuiltin11 PURGE");
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4b1b7799/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java
deleted file mode 100644
index 44a22ae..0000000
--- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java
+++ /dev/null
@@ -1,1044 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.tajo.engine.planner.global;
-
-import junit.framework.TestCase;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.tajo.LocalTajoTestingUtility;
-import org.apache.tajo.QueryId;
-import org.apache.tajo.QueryIdFactory;
-import org.apache.tajo.TajoTestingCluster;
-import org.apache.tajo.algebra.Expr;
-import org.apache.tajo.catalog.*;
-import org.apache.tajo.catalog.statistics.TableStats;
-import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.conf.TajoConf;
-import org.apache.tajo.datum.Datum;
-import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.datum.TextDatum;
-import org.apache.tajo.engine.function.FunctionLoader;
-import org.apache.tajo.engine.parser.SQLAnalyzer;
-import org.apache.tajo.plan.LogicalOptimizer;
-import org.apache.tajo.plan.LogicalPlan;
-import org.apache.tajo.plan.LogicalPlanner;
-import org.apache.tajo.plan.PlanningException;
-import org.apache.tajo.engine.query.QueryContext;
-import org.apache.tajo.plan.logical.*;
-import org.apache.tajo.storage.*;
-import org.apache.tajo.util.CommonTestingUtil;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.Collection;
-
-import static junit.framework.Assert.assertNotNull;
-import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME;
-import static org.apache.tajo.TajoConstants.DEFAULT_TABLESPACE_NAME;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class TestBroadcastJoinPlan {
- private TajoConf conf;
- private final String TEST_PATH = TajoTestingCluster.DEFAULT_TEST_DIRECTORY + "/TestBroadcastJoinPlan";
- private TajoTestingCluster util;
- private CatalogService catalog;
- private SQLAnalyzer analyzer;
- private QueryContext defaultContext;
- private Path testDir;
-
- private TableDesc smallTable1;
- private TableDesc smallTable2;
- private TableDesc smallTable3;
- private TableDesc largeTable1;
- private TableDesc largeTable2;
- private TableDesc largeTable3;
-
- @Before
- public void setUp() throws Exception {
- util = new TajoTestingCluster();
- conf = util.getConfiguration();
- conf.setLongVar(TajoConf.ConfVars.$DIST_QUERY_BROADCAST_JOIN_THRESHOLD, 500 * 1024);
- conf.setBoolVar(TajoConf.ConfVars.$TEST_BROADCAST_JOIN_ENABLED, true);
-
- testDir = CommonTestingUtil.getTestDir(TEST_PATH);
- catalog = util.startCatalogCluster().getCatalog();
- catalog.createTablespace(DEFAULT_TABLESPACE_NAME, testDir.toUri().toString());
- catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
- util.getMiniCatalogCluster().getCatalogServer().reloadBuiltinFunctions(FunctionLoader.findLegacyFunctions());
-
- Schema smallTable1Schema = new Schema();
- smallTable1Schema.addColumn("small1_id", TajoDataTypes.Type.INT4);
- smallTable1Schema.addColumn("small1_contents", TajoDataTypes.Type.TEXT);
- smallTable1 = makeTestData("default.small1", smallTable1Schema, 10 * 1024);
-
- Schema smallTable2Schema = new Schema();
- smallTable2Schema.addColumn("small2_id", TajoDataTypes.Type.INT4);
- smallTable2Schema.addColumn("small2_contents", TajoDataTypes.Type.TEXT);
- smallTable2 = makeTestData("default.small2", smallTable2Schema, 10 * 1024);
-
- Schema smallTable3Schema = new Schema();
- smallTable3Schema.addColumn("small3_id", TajoDataTypes.Type.INT4);
- smallTable3Schema.addColumn("small3_contents", TajoDataTypes.Type.TEXT);
- smallTable3 = makeTestData("default.small3", smallTable3Schema, 10 * 1024);
-
- Schema largeTable1Schema = new Schema();
- largeTable1Schema.addColumn("large1_id", TajoDataTypes.Type.INT4);
- largeTable1Schema.addColumn("large1_contents", TajoDataTypes.Type.TEXT);
- largeTable1 = makeTestData("default.large1", largeTable1Schema, 1024 * 1024); //1M
-
- Schema largeTable2Schema = new Schema();
- largeTable2Schema.addColumn("large2_id", TajoDataTypes.Type.INT4);
- largeTable2Schema.addColumn("large2_contents", TajoDataTypes.Type.TEXT);
- largeTable2 = makeTestData("default.large2", largeTable2Schema, 1024 * 1024); //1M
-
- Schema largeTable3Schema = new Schema();
- largeTable3Schema.addColumn("large3_id", TajoDataTypes.Type.INT4);
- largeTable3Schema.addColumn("large3_contents", TajoDataTypes.Type.TEXT);
- largeTable3 = makeTestData("default.large3", largeTable3Schema, 1024 * 1024); //1M
-
- catalog.createTable(smallTable1);
- catalog.createTable(smallTable2);
- catalog.createTable(smallTable3);
- catalog.createTable(largeTable1);
- catalog.createTable(largeTable2);
- catalog.createTable(largeTable3);
-
- analyzer = new SQLAnalyzer();
- defaultContext = LocalTajoTestingUtility.createDummyContext(conf);
- }
-
- private TableDesc makeTestData(String tableName, Schema schema, int dataSize) throws Exception {
- TableMeta tableMeta = CatalogUtil.newTableMeta("CSV");
- Path dataPath = new Path(testDir, tableName + ".csv");
-
- String contentsData = "";
- for (int i = 0; i < 1000; i++) {
- for (int j = 0; j < 10; j++) {
- contentsData += j;
- }
- }
- Appender appender = ((FileStorageManager) TableSpaceManager.getFileStorageManager(conf))
- .getAppender(tableMeta, schema, dataPath);
- appender.init();
- Tuple tuple = new VTuple(schema.size());
- int writtenSize = 0;
- int count = 0;
- while (true) {
- TextDatum textDatum = DatumFactory.createText(count + "_" + contentsData);
- tuple.put(new Datum[] {
- DatumFactory.createInt4(count), textDatum });
- appender.addTuple(tuple);
-
- writtenSize += textDatum.size();
- if (writtenSize >= dataSize) {
- break;
- }
- }
-
- appender.flush();
- appender.close();
-
- TableDesc tableDesc = CatalogUtil.newTableDesc(tableName, schema, tableMeta, dataPath);
- TableStats tableStats = new TableStats();
- FileSystem fs = dataPath.getFileSystem(conf);
- tableStats.setNumBytes(fs.getFileStatus(dataPath).getLen());
-
- tableDesc.setStats(tableStats);
-
- return tableDesc;
- }
-
- @After
- public void tearDown() throws Exception {
- util.shutdownCatalogCluster();
- }
-
- @Test
- public final void testBroadcastJoin() throws IOException, PlanningException {
- String query = "select count(*) from large1 " +
- "join small1 on large1_id = small1_id " +
- "join small2 on small1_id = small2_id";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- /*
- |-eb_1395714781593_0000_000005 (TERMINAL)
- |-eb_1395714781593_0000_000004 (ROOT, GROUP BY for counting)
- |-eb_1395714781593_0000_000003 (LEAF, broadcast join)
- */
-
- ExecutionBlock terminalEB = masterPlan.getRoot();
- assertEquals(1, masterPlan.getChildCount(terminalEB.getId()));
-
- ExecutionBlock rootEB = masterPlan.getChild(terminalEB.getId(), 0);
- assertEquals(1, masterPlan.getChildCount(rootEB.getId()));
-
- ExecutionBlock leafEB = masterPlan.getChild(rootEB.getId(), 0);
- assertNotNull(leafEB);
-
- assertEquals(0, masterPlan.getChildCount(leafEB.getId()));
- Collection<String> broadcastTables = leafEB.getBroadcastTables();
- assertEquals(2, broadcastTables.size());
-
- assertTrue(broadcastTables.contains("default.small1"));
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(!broadcastTables.contains("default.large1"));
-
- LogicalNode leafNode = leafEB.getPlan();
- assertEquals(NodeType.GROUP_BY, leafNode.getType());
-
- LogicalNode joinNode = ((GroupbyNode)leafNode).getChild();
- assertEquals(NodeType.JOIN, joinNode.getType());
-
- LogicalNode leftNode = ((JoinNode)joinNode).getLeftChild();
- LogicalNode rightNode = ((JoinNode)joinNode).getRightChild();
-
- assertEquals(NodeType.JOIN, leftNode.getType());
- assertEquals(NodeType.SCAN, rightNode.getType());
-
- LogicalNode lastLeftNode = ((JoinNode)leftNode).getLeftChild();
- LogicalNode lastRightNode = ((JoinNode)leftNode).getRightChild();
-
- assertEquals(NodeType.SCAN, lastLeftNode.getType());
- assertEquals(NodeType.SCAN, lastRightNode.getType());
- }
-
- @Test
- public final void testBroadcastJoinAllSmallTables() throws IOException, PlanningException {
- String query = "select count(*) from small1 " +
- "join small2 on small1_id = small2_id " +
- "join small3 on small1_id = small3_id";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- /*
- |-eb_1402500846700_0000_000005
- |-eb_1402500846700_0000_000004
- |-eb_1402500846700_0000_000003 (LEAF, broadcast join small1, small2, small3)
- */
-
- ExecutionBlock terminalEB = masterPlan.getRoot();
- assertEquals(1, masterPlan.getChildCount(terminalEB.getId()));
-
- ExecutionBlock rootEB = masterPlan.getChild(terminalEB.getId(), 0);
- assertEquals(1, masterPlan.getChildCount(rootEB.getId()));
-
- ExecutionBlock leafEB = masterPlan.getChild(rootEB.getId(), 0);
- assertNotNull(leafEB);
-
- assertEquals(0, masterPlan.getChildCount(leafEB.getId()));
- Collection<String> broadcastTables = leafEB.getBroadcastTables();
- assertEquals(3, broadcastTables.size());
-
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(broadcastTables.contains("default.small1"));
- assertTrue(broadcastTables.contains("default.small3"));
-
- LogicalNode leafNode = leafEB.getPlan();
- assertEquals(NodeType.GROUP_BY, leafNode.getType());
-
- LogicalNode joinNode = ((GroupbyNode)leafNode).getChild();
- assertEquals(NodeType.JOIN, joinNode.getType());
-
- LogicalNode leftNode = ((JoinNode)joinNode).getLeftChild();
- LogicalNode rightNode = ((JoinNode)joinNode).getRightChild();
-
- assertEquals(NodeType.JOIN, leftNode.getType());
- assertEquals(NodeType.SCAN, rightNode.getType());
- assertEquals("default.small3", ((ScanNode)rightNode).getCanonicalName());
-
- LogicalNode lastLeftNode = ((JoinNode)leftNode).getLeftChild();
- LogicalNode lastRightNode = ((JoinNode)leftNode).getRightChild();
-
- assertEquals(NodeType.SCAN, lastLeftNode.getType());
- assertEquals(NodeType.SCAN, lastRightNode.getType());
- assertEquals("default.small1", ((ScanNode)lastLeftNode).getCanonicalName());
- assertEquals("default.small2", ((ScanNode)lastRightNode).getCanonicalName());
- }
-
- @Test
- public final void testNotBroadcastJoinTwoLargeTable() throws IOException, PlanningException {
- // This query is not broadcast join
- String query = "select count(*) from large1 " +
- "join large2 on large1_id = large2_id ";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertTrue(broadcastTables == null || broadcastTables.isEmpty());
- }
- }
-
- @Test
- public final void testTwoBroadcastJoin() throws IOException, PlanningException {
- String query = "select count(*) from large1 " +
- "join small1 on large1_id = small1_id " +
- "join large2 on large1_id = large2_id " +
- "join small2 on large2_id = small2_id";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- /*
- |-eb_1395736346625_0000_000009
- |-eb_1395736346625_0000_000008 (GROUP-BY)
- |-eb_1395736346625_0000_000007 (GROUP-BY, JOIN)
- |-eb_1395736346625_0000_000006 (LEAF, JOIN)
- |-eb_1395736346625_0000_000003 (LEAF, JOIN)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
-
- assertTrue(!broadcastTables.contains("default.large1"));
- assertTrue(broadcastTables.contains("default.small1"));
- } else if(index == 1) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
- assertTrue(!broadcastTables.contains("default.large2"));
- assertTrue(broadcastTables.contains("default.small2"));
- }
- index++;
- }
-
- assertEquals(5, index);
- }
-
- @Test
- public final void testNotBroadcastJoinSubquery() throws IOException, PlanningException {
- // This query is not broadcast join;
- String query = "select count(*) from large1 " +
- "join (select * from small1) a on large1_id = a.small1_id " +
- "join small2 on a.small1_id = small2_id";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- /*
- |-eb_1395749810370_0000_000007
- |-eb_1395749810370_0000_000006 (GROUP-BY)
- |-eb_1395749810370_0000_000005 (GROUP-BY, JOIN)
- |-eb_1395749810370_0000_000004 (LEAF, SCAN, large1)
- |-eb_1395749810370_0000_000003 (JOIN)
- |-eb_1395749810370_0000_000002 (LEAF, SCAN, small2)
- |-eb_1395749810370_0000_000001 (LEAF, TABLE_SUBQUERY, small1)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertTrue(broadcastTables == null || broadcastTables.isEmpty());
- index++;
- }
-
- assertEquals(7, index);
- }
-
- @Test
- public final void testBroadcastJoinSubquery() throws IOException, PlanningException {
- String query = "select count(*) from large1 " +
- "join small2 on large1_id = small2_id " +
- "join (select * from small1) a on large1_id = a.small1_id";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- /*
- |-eb_1395794091662_0000_000007
- |-eb_1395794091662_0000_000006
- |-eb_1395794091662_0000_000005 (JOIN)
- |-eb_1395794091662_0000_000004 (LEAF, SUBQUERY)
- |-eb_1395794091662_0000_000003 (LEAF, JOIN)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- //LEAF, JOIN
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
-
- assertTrue(!broadcastTables.contains("default.large1"));
- assertTrue(broadcastTables.contains("default.small2"));
- } else if(index == 1) {
- //LEAF, SUBQUERY
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertTrue(broadcastTables == null || broadcastTables.isEmpty());
- } else if(index == 2) {
- //JOIN
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertTrue(broadcastTables == null || broadcastTables.isEmpty());
- }
- index++;
- }
-
- assertEquals(5, index);
- }
-
- @Test
- public final void testLeftOuterJoinCase1() throws IOException, PlanningException {
- // small, small, small, large, large
- String query = "select count(*) from small1 " +
- "left outer join small2 on small1_id = small2_id " +
- "left outer join small3 on small1_id = small3_id " +
- "left outer join large1 on small1_id = large1_id " +
- "left outer join large2 on small1_id = large2_id ";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- // ((((default.small1 ⟕ default.small2) ⟕ default.small3) ⟕ default.large1) ⟕ default.large2)
- /*
- |-eb_1406022243130_0000_000009
- |-eb_1406022243130_0000_000008
- |-eb_1406022243130_0000_000007 (join)
- |-eb_1406022243130_0000_000006 (scan large2)
- |-eb_1406022243130_0000_000005 (join)
- |-eb_1406022243130_0000_000004 (scan large1)
- |-eb_1406022243130_0000_000003 (scan small1, broadcast join small2, small3)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(2, broadcastTables.size());
-
- assertTrue(!broadcastTables.contains("default.small1"));
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(broadcastTables.contains("default.small3"));
- } else if(index == 1 || index == 2 || index == 3) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- }
- index++;
- }
-
- assertEquals(7, index);
- }
-
- @Test
- public final void testLeftOuterJoinCase2() throws IOException, PlanningException {
- // large, large, small, small, small
- String query = "select count(*) from large1 " +
- "left outer join large2 on large1_id = large2_id " +
- "left outer join small1 on large1_id = small1_id " +
- "left outer join small2 on large1_id = small2_id " +
- "left outer join small3 on large1_id = small3_id ";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- // ((((default.large1 ⟕ default.large2) ⟕ default.small1) ⟕ default.small2) ⟕ default.small3)
- /*
- |-eb_1404132555037_0000_000005
- |-eb_1404132555037_0000_000004
- |-eb_1404132555037_0000_000003 (JOIN, broadcast small1, small2, small3)
- |-eb_1404132555037_0000_000002 (LEAF, Scan large2)
- |-eb_1404132555037_0000_000001 (LEAF, Scan large1)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- assertEquals("default.large1", ((ScanNode) node).getCanonicalName());
-
- assertEquals(0, eb.getBroadcastTables().size());
- } else if (index == 1) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- assertEquals("default.large2", ((ScanNode)node).getCanonicalName());
-
- assertEquals(0, eb.getBroadcastTables().size());
- } else if(index == 2) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.GROUP_BY, node.getType());
-
- JoinNode joinNode = ((GroupbyNode)node).getChild();
- JoinNode joinNode2 = joinNode.getLeftChild();
- ScanNode scanNode2 = joinNode.getRightChild();
- assertEquals("default.small3", scanNode2.getCanonicalName());
-
- JoinNode joinNode3 = joinNode2.getLeftChild();
- ScanNode scanNode3 = joinNode2.getRightChild();
- assertEquals("default.small2", scanNode3.getCanonicalName());
-
- JoinNode joinNode4 = joinNode3.getLeftChild();
- ScanNode scanNode4 = joinNode3.getRightChild();
- assertEquals("default.small1", scanNode4.getCanonicalName());
-
- ScanNode scanNode5 = joinNode4.getLeftChild();
- ScanNode scanNode6 = joinNode4.getRightChild();
- assertTrue(scanNode5.getCanonicalName().indexOf("0000_000001") > 0);
- assertTrue(scanNode6.getCanonicalName().indexOf("0000_000002") > 0);
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(3, broadcastTables.size());
-
- assertTrue(broadcastTables.contains("default.small1"));
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(broadcastTables.contains("default.small3"));
- }
- index++;
- }
-
- assertEquals(5, index);
- }
-
- @Test
- public final void testLeftOuterJoinCase3() throws IOException, PlanningException {
- // large1, large2, small1, large3, small2, small3
- String query = "select count(*) from large1 " +
- "left outer join large2 on large1_id = large2_id " +
- "left outer join small1 on large2_id = small1_id " +
- "left outer join large3 on large1_id = large3_id " +
- "left outer join small2 on large3_id = small2_id " +
- "left outer join small3 on large3_id = small3_id ";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- //(((((default.large1 ⟕ default.large2) ⟕ default.small1) ⟕ default.large3) ⟕ default.small2) ⟕ default.small3)
- /*
- |-eb_1402634570910_0000_000007
- |-eb_1402634570910_0000_000006 (GROUP BY)
- |-eb_1402634570910_0000_000005 (JOIN, broadcast small2, small3)
- |-eb_1402634570910_0000_000004 (LEAF, scan large3)
- |-eb_1402634570910_0000_000003 (JOIN, broadcast small1)
- |-eb_1402634570910_0000_000002 (LEAF, scan large2)
- |-eb_1402634570910_0000_000001 (LEAF, scan large1)
- */
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- ScanNode scanNode = (ScanNode)node;
- assertEquals("default.large1", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- } else if (index == 1) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- ScanNode scanNode = (ScanNode)node;
- assertEquals("default.large2", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- } else if(index == 2) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.JOIN, node.getType());
- JoinNode joinNode = (JoinNode)node;
-
- ScanNode leftNode = ((JoinNode)joinNode.getLeftChild()).getLeftChild();
- ScanNode rightNode = ((JoinNode)joinNode.getLeftChild()).getRightChild();
- assertTrue(leftNode.getCanonicalName().indexOf("0000_000001") > 0);
- assertTrue(rightNode.getCanonicalName().indexOf("0000_000002") > 0);
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small1"));
- } else if(index == 3) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- ScanNode scanNode = (ScanNode)node;
- assertEquals("default.large3", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- } else if(index == 4) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(2, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(broadcastTables.contains("default.small3"));
- }
- index++;
- }
-
- assertEquals(7, index);
- }
-
- @Test
- public final void testLeftOuterJoinCase4() throws IOException, PlanningException {
- // small1, small2, small3
- String query = "select count(*) from small1 " +
- "left outer join small2 on small1_id = small2_id " +
- "left outer join small3 on small1_id = small3_id ";
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- /*
- |-eb_1406022971444_0000_000005
- |-eb_1406022971444_0000_000004 (group by)
- |-eb_1406022971444_0000_000003 (scan small1, broadcast join small2, small3)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- GroupbyNode node = (GroupbyNode)eb.getPlan();
- JoinNode joinNode = node.getChild();
-
- ScanNode scanNode = joinNode.getRightChild();
- assertEquals("default.small3", scanNode.getCanonicalName());
-
- joinNode = joinNode.getLeftChild();
- scanNode = joinNode.getLeftChild();
- assertEquals("default.small1", scanNode.getCanonicalName());
- scanNode = joinNode.getRightChild();
- assertEquals("default.small2", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(2, broadcastTables.size());
-
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(broadcastTables.contains("default.small3"));
- } else if(index == 1) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- }
- index++;
- }
-
- assertEquals(3, index);
- }
-
- @Test
- public final void testLeftOuterJoinCase5() throws IOException, PlanningException {
- // small, small, large, small
- String query = "select count(*) from small1 " +
- "left outer join small2 on small1_id = small2_id " +
- "left outer join large1 on small1_id = large1_id " +
- "left outer join small3 on small1_id = small3_id " ;
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- //(((default.small1 ⟕ default.small2) ⟕ default.large1) ⟕ default.small3)
- /*
- |-eb_1406023347983_0000_000007
- |-eb_1406023347983_0000_000006
- |-eb_1406023347983_0000_000005 (join, broadcast small3)
- |-eb_1406023347983_0000_000004 (scan large1)
- |-eb_1406023347983_0000_000003 (scan small1, broadcast join small2)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small2"));
- } else if (index == 2) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small3"));
- } else if(index == 1 || index == 3) {
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- }
- index++;
- }
-
- assertEquals(5, index);
- }
-
- @Test
- public final void testLeftOuterJoinCase6() throws IOException, PlanningException {
- // small1, small2, large1, large2, small3
- String query = "select count(*) from small1 " +
- "left outer join small2 on small1_id = small2_id " +
- "left outer join large1 on small1_id = large1_id " +
- "left outer join large2 on small1_id = large2_id " +
- "left outer join small3 on small1_id = small3_id " ;
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- // ((((default.small1 ⟕ default.small2) ⟕ default.large1) ⟕ default.large2) ⟕ default.small3)
-
- /*
- |-eb_1406023537578_0000_000009
- |-eb_1406023537578_0000_000008
- |-eb_1406023537578_0000_000007 (join, broadcast small3)
- |-eb_1406023537578_0000_000006 (scan large2)
- |-eb_1406023537578_0000_000005 (join)
- |-eb_1406023537578_0000_000004 (scan large1)
- |-eb_1406023537578_0000_000003 (scan small1, broadcast join small2)
- */
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.JOIN, node.getType());
- JoinNode joinNode = (JoinNode)node;
-
- ScanNode scanNode1 = joinNode.getLeftChild();
- ScanNode scanNode2 = joinNode.getRightChild();
- assertEquals("default.small1", scanNode1.getCanonicalName());
- assertEquals("default.small2", scanNode2.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small2"));
- } else if (index == 1) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- ScanNode scanNode = (ScanNode) node;
- assertEquals("default.large1", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- } else if (index == 2) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.JOIN, node.getType());
- } else if (index == 3) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- ScanNode scanNode = (ScanNode) node;
- assertEquals("default.large2", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(0, broadcastTables.size());
- } else if(index == 4) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.GROUP_BY, node.getType());
-
- JoinNode joinNode = ((GroupbyNode)node).getChild();
-
- JoinNode joinNode1 = joinNode.getLeftChild();
- ScanNode scanNode1 = joinNode.getRightChild();
- assertEquals("default.small3", scanNode1.getCanonicalName());
-
- ScanNode scanNode2 = joinNode1.getLeftChild();
- ScanNode scanNode3 = joinNode1.getRightChild();
- assertTrue(scanNode2.getCanonicalName().indexOf("0000_000005") > 0);
- assertTrue(scanNode3.getCanonicalName().indexOf("0000_000006") > 0);
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- assertEquals(1, broadcastTables.size());
- }
- index++;
- }
-
- assertEquals(7, index);
- }
-
- @Test
- public final void testInnerLeftOuterJoinCase1() throws IOException, PlanningException {
- // small, small, large, small
- String query = "select count(*) from small1 " +
- "inner join small2 on small1_id = small2_id " +
- "left outer join large1 on small1_id = large1_id " +
- "left outer join small3 on small3_id = large1_id " ;
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- // (((default.small1 ⋈θ default.small2) ⟕ default.large1) ⟕ default.small3)
- /*
- |-eb_1404139312268_0000_000006
- |-eb_1404139312268_0000_000005
- |-eb_1404139312268_0000_000003 (LEAF scan large1, broadcast small1, small2, small3)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.GROUP_BY, node.getType());
- JoinNode joinNode = ((GroupbyNode)node).getChild();
-
- JoinNode joinNode2 = joinNode.getLeftChild();
- ScanNode scanNode = joinNode.getRightChild();
- assertEquals("default.small3", scanNode.getCanonicalName());
-
- JoinNode joinNode3 = joinNode2.getLeftChild();
- ScanNode scanNode2 = joinNode2.getRightChild();
-
- assertEquals("default.large1", scanNode2.getCanonicalName());
-
- ScanNode scanNode3 = joinNode3.getLeftChild();
- ScanNode scanNode4 = joinNode3.getRightChild();
-
- assertEquals("default.small1", scanNode3.getCanonicalName());
- assertEquals("default.small2", scanNode4.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
-
- assertEquals(3, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small1"));
- assertTrue(broadcastTables.contains("default.small2"));
- assertTrue(broadcastTables.contains("default.small3"));
- }
- index++;
- }
-
- assertEquals(3, index);
- }
-
- @Test
- public final void testBroadcastCasebyCase1() throws IOException, PlanningException {
- // large, small, large, small
- String query = "select count(*) from large1 " +
- "inner join small1 on large1_id = small1_id " +
- "left outer join large2 on large1_id = large2_id " +
- "left outer join small2 on large1_id = small2_id " ;
-
- LogicalPlanner planner = new LogicalPlanner(catalog);
- LogicalOptimizer optimizer = new LogicalOptimizer(conf);
- Expr expr = analyzer.parse(query);
- LogicalPlan plan = planner.createPlan(defaultContext, expr);
-
- optimizer.optimize(plan);
-
- QueryId queryId = QueryIdFactory.newQueryId(System.currentTimeMillis(), 0);
- QueryContext queryContext = new QueryContext(conf);
- MasterPlan masterPlan = new MasterPlan(queryId, queryContext, plan);
- GlobalPlanner globalPlanner = new GlobalPlanner(conf, catalog);
- globalPlanner.build(masterPlan);
-
- // (((default.large1 ⋈θ default.small1) ⟕ default.large2) ⟕ default.small2)
- /*
- |-eb_1404871198908_0000_000007
- |-eb_1404871198908_0000_000006
- |-eb_1404871198908_0000_000005 (join eb3, eb3, broadcast small2)
- |-eb_1404871198908_0000_000004 (scan large2)
- |-eb_1404871198908_0000_000003 (scan large1, broadcast small1)
- */
-
- ExecutionBlockCursor ebCursor = new ExecutionBlockCursor(masterPlan);
- int index = 0;
- while (ebCursor.hasNext()) {
- ExecutionBlock eb = ebCursor.nextBlock();
- if(index == 0) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.JOIN, node.getType());
- JoinNode joinNode = (JoinNode)node;
-
- ScanNode scanNode1 = joinNode.getLeftChild();
- ScanNode scanNode2 = joinNode.getRightChild();
- assertEquals("default.large1", scanNode1.getCanonicalName());
- assertEquals("default.small1", scanNode2.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
-
- assertEquals(1, broadcastTables.size());
- assertTrue(broadcastTables.contains("default.small1"));
- } else if(index == 1) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.SCAN, node.getType());
- ScanNode scanNode = (ScanNode)node;
-
- assertEquals("default.large2", scanNode.getCanonicalName());
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
- TestCase.assertEquals(0, broadcastTables.size());
- } else if(index == 2) {
- LogicalNode node = eb.getPlan();
- assertEquals(NodeType.GROUP_BY, node.getType());
- JoinNode joinNode = ((GroupbyNode)node).getChild();
-
- JoinNode joinNode2 = joinNode.getLeftChild();
- ScanNode scanNode = joinNode.getRightChild();
- assertEquals("default.small2", scanNode.getCanonicalName());
-
- ScanNode scanNode2 = joinNode2.getLeftChild();
- ScanNode scanNode3 = joinNode2.getRightChild();
-
- assertTrue(scanNode2.getCanonicalName().indexOf("000003") >= 0);
- assertTrue(scanNode3.getCanonicalName().indexOf("000004") >= 0);
-
- Collection<String> broadcastTables = eb.getBroadcastTables();
-
- TestCase.assertEquals(1, broadcastTables.size());
- TestCase.assertTrue(broadcastTables.contains("default.small2"));
- }
- index++;
- }
-
- TestCase.assertEquals(5, index);
- }
-}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4b1b7799/tajo-core/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
index 1da3ee9..4f90386 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
@@ -523,13 +523,13 @@ public class TestGroupByQuery extends QueryTestCaseBase {
"a|\\N|"
};
- TajoTestingCluster.createTable("table11", schema, tableOptions, data);
+ TajoTestingCluster.createTable("testDistinctAggregationCaseByCase4".toLowerCase(), schema, tableOptions, data);
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
- executeString("DROP TABLE table11 PURGE").close();
+ executeString("DROP TABLE testDistinctAggregationCaseByCase4 PURGE").close();
}
@Test
@@ -612,62 +612,62 @@ public class TestGroupByQuery extends QueryTestCaseBase {
@Test
public final void testGroupByWithNullData5() throws Exception {
- executeString("CREATE TABLE table1 (age INT4, point FLOAT4);").close();
- assertTableExists("table1");
+ executeString("CREATE TABLE testGroupByWithNullData5 (age INT4, point FLOAT4);").close();
+ assertTableExists("testGroupByWithNullData5".toLowerCase());
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
- executeString("DROP TABLE table1");
+ executeString("DROP TABLE testGroupByWithNullData5");
}
@Test
public final void testGroupByWithNullData6() throws Exception {
- executeString("CREATE TABLE table1 (age INT4, point FLOAT4);").close();
- assertTableExists("table1");
+ executeString("CREATE TABLE testGroupByWithNullData6 (age INT4, point FLOAT4);").close();
+ assertTableExists("testGroupByWithNullData6".toLowerCase());
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
- executeString("DROP TABLE table1");
+ executeString("DROP TABLE testGroupByWithNullData6");
}
@Test
public final void testGroupByWithNullData7() throws Exception {
- executeString("CREATE TABLE table1 (age INT4, point FLOAT4);").close();
- assertTableExists("table1");
+ executeString("CREATE TABLE testGroupByWithNullData7 (age INT4, point FLOAT4);").close();
+ assertTableExists("testGroupByWithNullData7".toLowerCase());
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
- executeString("DROP TABLE table1");
+ executeString("DROP TABLE testGroupByWithNullData7");
}
@Test
public final void testGroupByWithNullData8() throws Exception {
- executeString("CREATE TABLE table1 (age INT4, point FLOAT4);").close();
- assertTableExists("table1");
+ executeString("CREATE TABLE testGroupByWithNullData8 (age INT4, point FLOAT4);").close();
+ assertTableExists("testGroupByWithNullData8".toLowerCase());
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
- executeString("DROP TABLE table1");
+ executeString("DROP TABLE testGroupByWithNullData8");
}
@Test
public final void testGroupByWithNullData9() throws Exception {
- executeString("CREATE TABLE table1 (age INT4, point FLOAT4);").close();
- assertTableExists("table1");
+ executeString("CREATE TABLE testGroupByWithNullData9 (age INT4, point FLOAT4);").close();
+ assertTableExists("testGroupByWithNullData9".toLowerCase());
ResultSet res = executeQuery();
assertResultSet(res);
cleanupQuery(res);
- executeString("DROP TABLE table1");
+ executeString("DROP TABLE testGroupByWithNullData9");
}
@Test
http://git-wip-us.apache.org/repos/asf/tajo/blob/4b1b7799/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java
new file mode 100644
index 0000000..6eedb42
--- /dev/null
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInnerJoinQuery.java
@@ -0,0 +1,335 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.tajo.engine.query;
+
+import com.google.protobuf.ServiceException;
+import org.apache.tajo.IntegrationTest;
+import org.apache.tajo.NamedTest;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.sql.ResultSet;
+
+@Category(IntegrationTest.class)
+@RunWith(Parameterized.class)
+@NamedTest("TestJoinQuery")
+public class TestInnerJoinQuery extends TestJoinQuery {
+
+ public TestInnerJoinQuery(String joinOption) throws Exception {
+ super(joinOption);
+ }
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ TestJoinQuery.setup();
+ }
+
+ @AfterClass
+ public static void classTearDown() throws ServiceException {
+ TestJoinQuery.classTearDown();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest(queries = {
+ @QuerySpec("select n_name, r_name, n_regionkey, r_regionkey from nation, region order by n_name, r_name"),
+ // testCrossJoinWithAsterisk
+ @QuerySpec("select region.*, customer.* from region, customer"),
+ @QuerySpec("select region.*, customer.* from customer, region"),
+ @QuerySpec("select * from customer, region"),
+ @QuerySpec("select length(r_comment) as len, *, c_custkey*10 from customer, region order by len,r_regionkey,r_name")
+ })
+ public final void testCrossJoin() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testCrossJoinWithThetaJoinConditionInWhere() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testInnerJoinWithThetaJoinConditionInWhere() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testWhereClauseJoin1() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testWhereClauseJoin2() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testWhereClauseJoin3() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testWhereClauseJoin4() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testWhereClauseJoin5() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testWhereClauseJoin6() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testTPCHQ2Join() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testJoinWithMultipleJoinQual1() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testJoinCoReferredEvals1() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testJoinCoReferredEvalsWithSameExprs1() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testJoinCoReferredEvalsWithSameExprs2() throws Exception {
+ // including grouping operator
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testInnerJoinAndCaseWhen() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testInnerJoinWithEmptyTable() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testCrossJoinWithEmptyTable1() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest(prepare = {
+ "CREATE DATABASE JOINS",
+ "CREATE TABLE JOINS.part_ as SELECT * FROM part",
+ "CREATE TABLE JOINS.supplier_ as SELECT * FROM supplier"
+ }, cleanup = {
+ "DROP TABLE JOINS.part_ PURGE",
+ "DROP TABLE JOINS.supplier_ PURGE",
+ "DROP DATABASE JOINS"
+ })
+ public final void testJoinOnMultipleDatabases() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ public final void testJoinWithJson() throws Exception {
+ // select length(r_comment) as len, *, c_custkey*10 from customer, region order by len,r_regionkey,r_name
+ ResultSet res = executeJsonQuery();
+ assertResultSet(res);
+ cleanupQuery(res);
+ }
+
+ @Test
+ public final void testJoinOnMultipleDatabasesWithJson() throws Exception {
+ executeString("CREATE DATABASE JOINS");
+ assertDatabaseExists("joins");
+ executeString("CREATE TABLE JOINS.part_ as SELECT * FROM part");
+ assertTableExists("joins.part_");
+ executeString("CREATE TABLE JOINS.supplier_ as SELECT * FROM supplier");
+ assertTableExists("joins.supplier_");
+
+ try {
+ ResultSet res = executeJsonQuery();
+ assertResultSet(res);
+ cleanupQuery(res);
+ } finally {
+ executeString("DROP TABLE JOINS.part_ PURGE");
+ executeString("DROP TABLE JOINS.supplier_ PURGE");
+ executeString("DROP DATABASE JOINS");
+ }
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testJoinAsterisk() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testDifferentTypesJoinCondition() throws Exception {
+ // select * from table20 t3 join table21 t4 on t3.id = t4.id;
+ executeDDL("table1_int8_ddl.sql", "table1", "table20");
+ executeDDL("table1_int4_ddl.sql", "table1", "table21");
+ try {
+ runSimpleTests();
+ } finally {
+ executeString("DROP TABLE table20");
+ executeString("DROP TABLE table21");
+ }
+ }
+
+ @Test
+ @SimpleTest
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ public void testComplexJoinCondition1() throws Exception {
+ // select n1.n_nationkey, n1.n_name, n2.n_name from nation n1 join nation n2 on n1.n_name = upper(n2.n_name);
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testComplexJoinCondition2() throws Exception {
+ // select n1.n_nationkey, n1.n_name, upper(n2.n_name) name from nation n1 join nation n2
+ // on n1.n_name = upper(n2.n_name);
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testComplexJoinCondition3() throws Exception {
+ // select n1.n_nationkey, n1.n_name, n2.n_name from nation n1 join nation n2 on lower(n1.n_name) = lower(n2.n_name);
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testComplexJoinCondition4() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testJoinWithOrPredicates() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testNaturalJoin() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testCrossJoinAndCaseWhen() throws Exception {
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testCrossJoinWithAsterisk1() throws Exception {
+ // select region.*, customer.* from region, customer;
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testCrossJoinWithAsterisk2() throws Exception {
+ // select region.*, customer.* from customer, region;
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testCrossJoinWithAsterisk3() throws Exception {
+ // select * from customer, region
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public void testCrossJoinWithAsterisk4() throws Exception {
+ // select length(r_regionkey), *, c_custkey*10 from customer, region
+ runSimpleTests();
+ }
+
+ @Test
+ @Option(withExplain = true, withExplainGlobal = true, parameterized = true)
+ @SimpleTest()
+ public final void testBroadcastTwoPartJoin() throws Exception {
+ runSimpleTests();
+ }
+}