-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathtestLateralView.java
More file actions
63 lines (50 loc) · 2.81 KB
/
Copy pathtestLateralView.java
File metadata and controls
63 lines (50 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package hive;
/*
* Date: 13-8-12
*/
import gudusoft.gsqlparser.EDbVendor;
import gudusoft.gsqlparser.ETableSource;
import gudusoft.gsqlparser.TGSqlParser;
import gudusoft.gsqlparser.nodes.TFunctionCall;
import gudusoft.gsqlparser.nodes.TTable;
import gudusoft.gsqlparser.nodes.TLateralView;
import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
import junit.framework.TestCase;
public class testLateralView extends TestCase {
public void test1(){
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive);
sqlparser.sqltext = "SELECT * FROM exampleTable\n" +
" LATERAL VIEW explode(col1) myTable1 AS myCol1\n" +
" LATERAL VIEW explode(myCol1) myTable2 AS myCol2;";
//System.out.println(sqlparser.sqltext);
assertTrue(sqlparser.parse() == 0);
TSelectSqlStatement select = (TSelectSqlStatement)sqlparser.sqlstatements.get(0);
TTable table = select.tables.getTable(0);
assertTrue(table.getTableType() == ETableSource.objectname);
assertTrue(table.getTableName().toString().equalsIgnoreCase("exampleTable"));
assertTrue(table.getLateralViewList().size() == 2);
TLateralView view = table.getLateralViewList().get(0);
TFunctionCall call = view.getUdtf();
assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode"));
assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("col1"));
assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable1"));
assertTrue(view.getColumnAliasList().size() == 1);
assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol1"));
view = table.getLateralViewList().get(1);
call = view.getUdtf();
assertTrue(call.getFunctionName().toString().equalsIgnoreCase("explode"));
assertTrue(call.getArgs().getExpression(0).toString().equalsIgnoreCase("myCol1"));
assertTrue(view.getTableAlias().getAliasName().toString().equalsIgnoreCase("myTable2"));
assertTrue(view.getColumnAliasList().size() == 1);
assertTrue(view.getColumnAliasList().getObjectName(0).toString().equalsIgnoreCase("myCol2"));
}
public void test2() {
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvhive);
sqlparser.sqltext = "select full_name, t.* from foodmart.trimmed_employee\n" +
"lateral view json_tuple('{\"email\":\"amy@only_for_json_udf_test.net\", \"owner\":123}','owner','email') t as owner,email;";
//System.out.println(sqlparser.sqltext);
assertTrue(sqlparser.parse() == 0);
TSelectSqlStatement select = (TSelectSqlStatement) sqlparser.sqlstatements.get(0);
assertTrue(select.joins.size() == 1);
}
}