-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathtestLargeUnion.java
More file actions
36 lines (31 loc) · 1.67 KB
/
Copy pathtestLargeUnion.java
File metadata and controls
36 lines (31 loc) · 1.67 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
package common;
import gudusoft.gsqlparser.*;
import gudusoft.gsqlparser.nodes.TCTE;
import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement;
import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
import junit.framework.TestCase;
import java.util.ArrayList;
public class testLargeUnion extends TestCase {
public static void test1(){
// 递归使用的是栈里面的内存,JVM默认一个线程的栈内存是1MB,单独跑这个case,
// 线程栈里只有这个case的内容,一起跑,栈里可能还有其它的内容,挤压了这个case可用栈内存的空间。
//
//增加JVM参数 -Xss2M 就可以解决这个问题
TGSqlParser sqlParser = new TGSqlParser(EDbVendor.dbvsnowflake);
sqlParser.sqlfilename = gspCommon.BASE_SQL_DIR_PRIVATE_JAVA+"snowflake/atlan/large_union.sql";
sqlParser.parse();
TCreateTableSqlStatement createTable = (TCreateTableSqlStatement)sqlParser.sqlstatements.get(0);
TSelectSqlStatement select = createTable.getSubQuery();
TCTE cte = select.getCteList().getCTE(0);
assertTrue(cte.getTableName().toString().equalsIgnoreCase("catalog_columns"));
select = cte.getSubquery();
ArrayList<TSelectSqlStatement> selectList = select.getFlattenedSelects();
assertTrue(selectList.size() == 1937);
TSelectSqlStatement first = selectList.get(0);
TSelectSqlStatement last = selectList.get(selectList.size()-1);
assertTrue(first.getStartToken().lineNo == 6);
assertTrue(first.getEndToken().lineNo == 15);
assertTrue(last.getStartToken().lineNo == 23238);
assertTrue(last.getEndToken().lineNo == 23247);
}
}