-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathtestCreateTable.java
More file actions
113 lines (100 loc) · 6.6 KB
/
Copy pathtestCreateTable.java
File metadata and controls
113 lines (100 loc) · 6.6 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package redshift;
import gudusoft.gsqlparser.*;
import gudusoft.gsqlparser.nodes.TColumnDefinition;
import gudusoft.gsqlparser.nodes.TConstraint;
import gudusoft.gsqlparser.stmt.TCreateTableSqlStatement;
import gudusoft.gsqlparser.stmt.TSelectSqlStatement;
import junit.framework.TestCase;
public class testCreateTable extends TestCase {
public void test1() {
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift);
sqlparser.sqltext = "create table tickit.public.test (c1 int);";
assertTrue(sqlparser.parse() == 0);
assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable);
TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0);
assertTrue(createTable.getTableName().toString().equalsIgnoreCase("tickit.public.test"));
TColumnDefinition cd = createTable.getColumnList().getColumn(0);
assertTrue(cd.getColumnName().toString().equalsIgnoreCase("c1"));
assertTrue(cd.getDatatype().getDataType() == EDataType.int_t);
}
public void test2() {
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift);
sqlparser.sqltext = "create table sales(\n" +
"salesid integer not null,\n" +
"listid integer not null,\n" +
"sellerid integer not null,\n" +
"buyerid integer not null,\n" +
"eventid integer not null encode mostly16,\n" +
"dateid smallint not null,\n" +
"qtysold smallint not null encode mostly8,\n" +
"pricepaid decimal(8,2) encode delta32k,\n" +
"commission decimal(8,2) encode delta32k,\n" +
"saletime timestamp,\n" +
"primary key(salesid),\n" +
"foreign key(listid) references listing(listid),\n" +
"foreign key(sellerid) references users(userid),\n" +
"foreign key(buyerid) references users(userid),\n" +
"foreign key(dateid) references date(dateid))\n" +
"distkey(listid)\n" +
"compound sortkey(listid,sellerid);";
// System.out.print(sqlparser.sqltext);
assertTrue(sqlparser.parse() == 0);
assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable);
TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0);
assertTrue(createTable.getTableName().toString().equalsIgnoreCase("sales"));
assertTrue(createTable.getColumnList().size() == 10);
assertTrue(createTable.getTableConstraints().size() == 5);
TColumnDefinition cd = createTable.getColumnList().getColumn(4);
assertTrue(cd.getColumnName().toString().equalsIgnoreCase("eventid"));
//System.out.print(cd.getDatatype().getDataType());
assertTrue(cd.getDatatype().getDataType() == EDataType.int_t);
// assertTrue(cd.getColumnAttributes().getEncoding().equalsIgnoreCase("mostly16"));
assertTrue(cd.getColumnAttributes().getColumnAttribute(0).getColumnAttributeType() == EColumnAttributeType.encode);
assertTrue(cd.getColumnAttributes().getColumnAttribute(0).getEncoding().equalsIgnoreCase("mostly16"));
TConstraint constraint = createTable.getTableConstraints().getConstraint(0);
assertTrue(constraint.getConstraint_type() == EConstraintType.primary_key);
assertTrue(constraint.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("salesid"));
constraint = createTable.getTableConstraints().getConstraint(1);
assertTrue(constraint.getConstraint_type() == EConstraintType.foreign_key);
assertTrue(constraint.getColumnList().getElement(0).getColumnName().toString().equalsIgnoreCase("listid"));
assertTrue(constraint.getReferencedObject().toString().equalsIgnoreCase("listing"));
assertTrue(constraint.getReferencedColumnList().getObjectName(0).toString().equalsIgnoreCase("listid"));
}
public void test3() {
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift);
sqlparser.sqltext = "create table eventdistevensort diststyle even sortkey (venueid)\n" +
"as select eventid, venueid, dateid, eventname from event;";
assertTrue(sqlparser.parse() == 0);
assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable);
TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0);
assertTrue(createTable.getTableName().toString().equalsIgnoreCase("eventdistevensort"));
TSelectSqlStatement select = createTable.getSubQuery();
assertTrue(select.tables.getTable(0).toString().equalsIgnoreCase("event"));
assertTrue(select.getResultColumnList().size() == 4);
assertTrue(select.getResultColumnList().getResultColumn(0).getExpr().toString().equalsIgnoreCase("eventid"));
}
public void test4() {
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift);
sqlparser.sqltext = "CREATE TABLE customer_v1 (\n" +
"c_custkey int8 NOT NULL DISTKEY SORTKEY PRIMARY KEY ,\n" +
"c_name varchar(25) NOT NULL ,\n" +
"c_address varchar(40) NOT NULL ,\n" +
"c_nationkey int4 NOT NULL REFERENCES nation(n_nationkey) ,\n" +
"c_phone char(15) NOT NULL ,\n" +
"c_acctbal numeric(12,2) NOT NULL ,\n" +
"c_mktsegment char(10) NOT NULL ,\n" +
"c_comment varchar(117) NOT NULL\n" +
");";
assertTrue(sqlparser.parse() == 0);
assertTrue(sqlparser.sqlstatements.get(0).sqlstatementtype == ESqlStatementType.sstcreatetable);
TCreateTableSqlStatement createTable = (TCreateTableSqlStatement) sqlparser.sqlstatements.get(0);
assertTrue(createTable.getTableName().toString().equalsIgnoreCase("customer_v1"));
TColumnDefinition cd = createTable.getColumnList().getColumn(0);
assertTrue(cd.getColumnName().toString().equalsIgnoreCase("c_custkey"));
assertTrue(cd.getDatatype().getDataType() == EDataType.bigint_t);
assertTrue(cd.getColumnAttributes().getColumnAttribute(0).getColumnAttributeType() == EColumnAttributeType.distkey);
assertTrue(cd.getColumnAttributes().getColumnAttribute(1).getColumnAttributeType() == EColumnAttributeType.sortkey);
assertTrue(cd.getConstraints().getConstraint(0).getConstraint_type() == EConstraintType.notnull);
assertTrue(cd.getConstraints().getConstraint(1).getConstraint_type() == EConstraintType.primary_key);
}
}