1
1
package net .sf .jsqlparser .statement .alter ;
2
2
3
- import static net .sf .jsqlparser .test .TestUtils .assertSqlCanBeParsedAndDeparsed ;
4
- import static net .sf .jsqlparser .test .TestUtils .assertStatementCanBeDeparsedAs ;
5
-
6
3
import java .util .Arrays ;
7
4
import java .util .List ;
8
-
9
- import junit .framework .TestCase ;
10
5
import net .sf .jsqlparser .JSQLParserException ;
11
6
import net .sf .jsqlparser .parser .CCJSqlParserUtil ;
12
7
import net .sf .jsqlparser .statement .Statement ;
13
8
import net .sf .jsqlparser .statement .alter .AlterExpression .ColumnDataType ;
9
+ import static net .sf .jsqlparser .test .TestUtils .assertSqlCanBeParsedAndDeparsed ;
10
+ import static net .sf .jsqlparser .test .TestUtils .assertStatementCanBeDeparsedAs ;
11
+ import static org .junit .Assert .assertEquals ;
12
+ import static org .junit .Assert .assertNotNull ;
13
+ import static org .junit .Assert .assertNull ;
14
+ import static org .junit .Assert .assertTrue ;
15
+ import org .junit .Test ;
14
16
15
- public class AlterTest extends TestCase {
16
-
17
- public AlterTest (String arg0 ) {
18
- super (arg0 );
19
- }
17
+ public class AlterTest {
20
18
19
+ @ Test
21
20
public void testAlterTableAddColumn () throws JSQLParserException {
22
21
Statement stmt = CCJSqlParserUtil .
23
22
parse ("ALTER TABLE mytable ADD COLUMN mycolumn varchar (255)" );
@@ -31,6 +30,7 @@ public void testAlterTableAddColumn() throws JSQLParserException {
31
30
assertEquals ("varchar (255)" , colDataTypes .get (0 ).getColDataType ().toString ());
32
31
}
33
32
33
+ @ Test
34
34
public void testAlterTableAddColumn_ColumnKeyWordImplicit () throws JSQLParserException {
35
35
Statement stmt = CCJSqlParserUtil .parse ("ALTER TABLE mytable ADD mycolumn varchar (255)" );
36
36
assertTrue (stmt instanceof Alter );
@@ -43,70 +43,87 @@ public void testAlterTableAddColumn_ColumnKeyWordImplicit() throws JSQLParserExc
43
43
assertEquals ("varchar (255)" , colDataTypes .get (0 ).getColDataType ().toString ());
44
44
}
45
45
46
+ @ Test
46
47
public void testAlterTablePrimaryKey () throws JSQLParserException {
47
48
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id)" );
48
49
}
49
50
51
+ @ Test
50
52
public void testAlterTablePrimaryKeyDeferrable () throws JSQLParserException {
51
53
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id) DEFERRABLE" );
52
54
}
53
55
56
+ @ Test
54
57
public void testAlterTablePrimaryKeyNotDeferrable () throws JSQLParserException {
55
58
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id) NOT DEFERRABLE" );
56
59
}
57
60
61
+ @ Test
58
62
public void testAlterTablePrimaryKeyValidate () throws JSQLParserException {
59
63
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id) VALIDATE" );
60
64
}
61
65
66
+ @ Test
62
67
public void testAlterTablePrimaryKeyNoValidate () throws JSQLParserException {
63
68
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id) NOVALIDATE" );
64
69
}
65
70
71
+ @ Test
66
72
public void testAlterTablePrimaryKeyDeferrableValidate () throws JSQLParserException {
67
73
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id) DEFERRABLE VALIDATE" );
68
74
}
69
75
76
+ @ Test
70
77
public void testAlterTablePrimaryKeyDeferrableDisableNoValidate () throws JSQLParserException {
71
78
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD PRIMARY KEY (id) DEFERRABLE DISABLE NOVALIDATE" );
72
79
}
73
80
81
+ @ Test
74
82
public void testAlterTableUniqueKey () throws JSQLParserException {
75
83
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE `schema_migrations` ADD UNIQUE KEY `unique_schema_migrations` (`version`)" );
76
84
}
77
85
86
+ @ Test
78
87
public void testAlterTableForgeignKey () throws JSQLParserException {
79
88
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE test ADD FOREIGN KEY (user_id) REFERENCES ra_user (id) ON DELETE CASCADE" );
80
89
}
81
90
91
+ @ Test
82
92
public void testAlterTableAddConstraint () throws JSQLParserException {
83
93
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT FK_RESOURCELINKTYPE_PARENTTYPE_PRIMARYKEY FOREIGN KEY (PARENTTYPE_PRIMARYKEY) REFERENCES RESOURCETYPE(PRIMARYKEY)" );
84
94
}
85
95
96
+ @ Test
86
97
public void testAlterTableAddConstraintWithConstraintState () throws JSQLParserException {
87
98
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT FK_RESOURCELINKTYPE_PARENTTYPE_PRIMARYKEY FOREIGN KEY (PARENTTYPE_PRIMARYKEY) REFERENCES RESOURCETYPE(PRIMARYKEY) DEFERRABLE DISABLE NOVALIDATE" );
88
99
}
89
-
100
+
101
+ @ Test
90
102
public void testAlterTableAddConstraintWithConstraintState2 () throws JSQLParserException {
91
103
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT RESOURCELINKTYPE_PRIMARYKEY PRIMARY KEY (PRIMARYKEY) DEFERRABLE NOVALIDATE" );
92
104
}
93
105
106
+ @ Test
94
107
public void testAlterTableForgeignKey2 () throws JSQLParserException {
95
108
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE test ADD FOREIGN KEY (user_id) REFERENCES ra_user (id)" );
96
109
}
97
110
111
+ @ Test
98
112
public void testAlterTableForgeignKey3 () throws JSQLParserException {
99
113
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE test ADD FOREIGN KEY (user_id) REFERENCES ra_user (id) ON DELETE RESTRICT" );
100
114
}
101
115
116
+ @ Test
102
117
public void testAlterTableForgeignKey4 () throws JSQLParserException {
103
118
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE test ADD FOREIGN KEY (user_id) REFERENCES ra_user (id) ON DELETE SET NULL" );
104
119
}
105
120
121
+ @ Test
106
122
public void testAlterTableDropColumn () throws JSQLParserException {
107
123
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE test DROP COLUMN YYY" );
108
124
}
109
125
126
+ @ Test
110
127
public void testAlterTableDropColumn2 () throws JSQLParserException {
111
128
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable DROP COLUMN col1, DROP COLUMN col2" );
112
129
@@ -120,6 +137,7 @@ public void testAlterTableDropColumn2() throws JSQLParserException {
120
137
assertEquals ("col2" , col2Exp .getColumnName ());
121
138
}
122
139
140
+ @ Test
123
141
public void testAlterTableDropConstraint () throws JSQLParserException {
124
142
final String sql = "ALTER TABLE test DROP CONSTRAINT YYY" ;
125
143
Statement stmt = CCJSqlParserUtil .parse (sql );
@@ -128,6 +146,7 @@ public void testAlterTableDropConstraint() throws JSQLParserException {
128
146
assertEquals (alterExpression .getConstraintName (), "YYY" );
129
147
}
130
148
149
+ @ Test
131
150
public void testAlterTablePK () throws JSQLParserException {
132
151
final String sql = "ALTER TABLE `Author` ADD CONSTRAINT `AuthorPK` PRIMARY KEY (`ID`)" ;
133
152
Statement stmt = CCJSqlParserUtil .parse (sql );
@@ -138,6 +157,7 @@ public void testAlterTablePK() throws JSQLParserException {
138
157
assertEquals (alterExpression .getIndex ().getColumnsNames ().get (0 ), "`ID`" );
139
158
}
140
159
160
+ @ Test
141
161
public void testAlterTableFK () throws JSQLParserException {
142
162
String sql = "ALTER TABLE `Novels` ADD FOREIGN KEY (AuthorID) REFERENCES Author (ID)" ;
143
163
Statement stmt = CCJSqlParserUtil .parse (sql );
@@ -150,18 +170,22 @@ public void testAlterTableFK() throws JSQLParserException {
150
170
assertEquals (alterExpression .getFkSourceColumns ().get (0 ), "ID" );
151
171
}
152
172
173
+ @ Test
153
174
public void testAlterTableCheckConstraint () throws JSQLParserException {
154
175
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE `Author` ADD CONSTRAINT name_not_empty CHECK (`NAME` <> '')" );
155
176
}
156
177
178
+ @ Test
157
179
public void testAlterTableAddColumn2 () throws JSQLParserException {
158
180
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals ADD (col1 integer, col2 integer)" );
159
181
}
160
182
183
+ @ Test
161
184
public void testAlterTableAddColumn3 () throws JSQLParserException {
162
185
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN mycolumn varchar (255)" );
163
186
}
164
187
188
+ @ Test
165
189
public void testAlterTableAddColumn4 () throws JSQLParserException {
166
190
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN col1 varchar (255), ADD COLUMN col2 integer" );
167
191
@@ -179,6 +203,7 @@ public void testAlterTableAddColumn4() throws JSQLParserException {
179
203
assertEquals ("integer" , col2DataTypes .get (0 ).getColDataType ().toString ());
180
204
}
181
205
206
+ @ Test
182
207
public void testAlterTableAddColumn5 () throws JSQLParserException {
183
208
Statement stmt = CCJSqlParserUtil .parse ("ALTER TABLE mytable ADD col1 timestamp (3)" );
184
209
@@ -193,6 +218,7 @@ public void testAlterTableAddColumn5() throws JSQLParserException {
193
218
assertEquals ("timestamp (3)" , col1DataTypes .get (0 ).getColDataType ().toString ());
194
219
}
195
220
221
+ @ Test
196
222
public void testAlterTableAddColumn6 () throws JSQLParserException {
197
223
final String sql = "ALTER TABLE mytable ADD COLUMN col1 timestamp (3) not null" ;
198
224
Statement stmt = CCJSqlParserUtil .parse (sql );
@@ -204,10 +230,12 @@ public void testAlterTableAddColumn6() throws JSQLParserException {
204
230
assertEquals ("null" , col1Exp .getColDataTypeList ().get (0 ).getColumnSpecs ().get (1 ));
205
231
}
206
232
233
+ @ Test
207
234
public void testAlterTableModifyColumn1 () throws JSQLParserException {
208
235
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE animals MODIFY (col1 integer, col2 number (8, 2))" );
209
236
}
210
237
238
+ @ Test
211
239
public void testAlterTableModifyColumn2 () throws JSQLParserException {
212
240
Statement stmt = CCJSqlParserUtil .parse ("ALTER TABLE mytable modify col1 timestamp (6)" );
213
241
@@ -218,6 +246,7 @@ public void testAlterTableModifyColumn2() throws JSQLParserException {
218
246
getOperation ());
219
247
}
220
248
249
+ @ Test
221
250
public void testAlterTableAddColumnWithZone () throws JSQLParserException {
222
251
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN col1 timestamp with time zone" );
223
252
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN col1 timestamp without time zone" );
@@ -233,24 +262,28 @@ public void testAlterTableAddColumnWithZone() throws JSQLParserException {
233
262
assertEquals ("timestamp with time zone" , col1DataTypes .get (0 ).getColDataType ().toString ());
234
263
}
235
264
265
+ @ Test
236
266
public void testAlterTableAddColumnKeywordTypes () throws JSQLParserException {
237
267
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN col1 xml" );
238
268
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN col1 interval" );
239
269
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE mytable ADD COLUMN col1 bit varying" );
240
270
}
241
-
271
+
272
+ @ Test
242
273
public void testDropColumnRestrictIssue510 () throws JSQLParserException {
243
274
assertSqlCanBeParsedAndDeparsed ("ALTER TABLE TABLE1 DROP COLUMN NewColumn CASCADE" );
244
275
}
245
-
276
+
277
+ @ Test
246
278
public void testDropColumnRestrictIssue551 () throws JSQLParserException {
247
279
Statement stmt = CCJSqlParserUtil .parse ("ALTER TABLE table1 DROP NewColumn" );
248
-
280
+
249
281
// COLUMN keyword appears in deparsed statement, drop becomes all caps
250
282
assertStatementCanBeDeparsedAs (stmt , "ALTER TABLE table1 DROP COLUMN NewColumn" );
251
-
283
+
252
284
}
253
-
285
+
286
+ @ Test
254
287
public void testAddConstraintKeyIssue320 () throws JSQLParserException {
255
288
String tableName = "table1" ;
256
289
String columnName1 = "col1" ;
@@ -260,16 +293,21 @@ public void testAddConstraintKeyIssue320() throws JSQLParserException {
260
293
String constraintName1 = "table1_constraint_1" ;
261
294
String constraintName2 = "table1_constraint_2" ;
262
295
263
- for (String constraintType : Arrays .asList ("UNIQUE KEY" , "KEY" )) {
264
- assertSqlCanBeParsedAndDeparsed ("ALTER TABLE " + tableName + " ADD CONSTRAINT " + constraintName1 + " "
296
+ for (String constraintType : Arrays .asList ("UNIQUE KEY" , "KEY" )) {
297
+ assertSqlCanBeParsedAndDeparsed ("ALTER TABLE " + tableName + " ADD CONSTRAINT " + constraintName1 + " "
265
298
+ constraintType + " (" + columnName1 + ")" );
266
299
267
- assertSqlCanBeParsedAndDeparsed ("ALTER TABLE " + tableName + " ADD CONSTRAINT " + constraintName1 + " "
300
+ assertSqlCanBeParsedAndDeparsed ("ALTER TABLE " + tableName + " ADD CONSTRAINT " + constraintName1 + " "
268
301
+ constraintType + " (" + columnName1 + ", " + columnName2 + ")" );
269
302
270
- assertSqlCanBeParsedAndDeparsed ("ALTER TABLE " + tableName + " ADD CONSTRAINT " + constraintName1 + " "
271
- + constraintType + " (" + columnName1 + ", " + columnName2 + "), ADD CONSTRAINT "
303
+ assertSqlCanBeParsedAndDeparsed ("ALTER TABLE " + tableName + " ADD CONSTRAINT " + constraintName1 + " "
304
+ + constraintType + " (" + columnName1 + ", " + columnName2 + "), ADD CONSTRAINT "
272
305
+ constraintName2 + " " + constraintType + " (" + columnName3 + ", " + columnName4 + ")" );
273
306
}
274
307
}
308
+
309
+ @ Test
310
+ public void testIssue633 () throws JSQLParserException {
311
+ assertSqlCanBeParsedAndDeparsed ("ALTER TABLE team_phases ADD CONSTRAINT team_phases_id_key UNIQUE (id)" );
312
+ }
275
313
}
0 commit comments