1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.type;
19
20 import org.apache.shardingsphere.sql.parser.api.ASTNode;
21 import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
22 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AddColumnSpecificationContext;
23 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterCheckConstraintContext;
24 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterColumnAddOptionContext;
25 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterDatabaseContext;
26 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterDefinitionClauseContext;
27 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterFunctionContext;
28 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterIndexContext;
29 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterProcedureContext;
30 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterSchemaContext;
31 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterSequenceContext;
32 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterServiceContext;
33 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterTableContext;
34 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterTableDropConstraintContext;
35 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterTriggerContext;
36 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterViewContext;
37 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnConstraintContext;
38 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnDefinitionContext;
39 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnDefinitionOptionContext;
40 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNameContext;
41 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ColumnNameWithSortContext;
42 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateDatabaseContext;
43 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateFunctionContext;
44 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateIndexContext;
45 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateProcedureContext;
46 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateSchemaContext;
47 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateSequenceContext;
48 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateServiceContext;
49 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTableClauseContext;
50 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTableContext;
51 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTableDefinitionContext;
52 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTableDefinitionsContext;
53 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateTriggerContext;
54 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.CreateViewContext;
55 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropColumnSpecificationContext;
56 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropConstraintNameContext;
57 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropDatabaseContext;
58 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropFunctionContext;
59 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropIndexContext;
60 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropProcedureContext;
61 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropSchemaContext;
62 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropSequenceContext;
63 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropServiceContext;
64 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropTableContext;
65 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropTriggerContext;
66 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.DropViewContext;
67 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ModifyColumnSpecificationContext;
68 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TableConstraintContext;
69 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.TruncateTableContext;
70 import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ViewNameContext;
71 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.AlterDefinitionSegment;
72 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.CreateDefinitionSegment;
73 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
74 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.AddColumnDefinitionSegment;
75 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.DropColumnDefinitionSegment;
76 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
77 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.ConstraintDefinitionSegment;
78 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.ConstraintSegment;
79 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
80 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.DropConstraintDefinitionSegment;
81 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.ModifyConstraintDefinitionSegment;
82 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
83 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
84 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DataTypeSegment;
85 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
86 import org.apache.shardingsphere.sql.parser.sql.common.value.collection.CollectionValue;
87 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterDatabaseStatement;
88 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterFunctionStatement;
89 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterIndexStatement;
90 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterProcedureStatement;
91 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterSchemaStatement;
92 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterSequenceStatement;
93 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterServiceStatement;
94 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterTableStatement;
95 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterTriggerStatement;
96 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerAlterViewStatement;
97 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateDatabaseStatement;
98 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateFunctionStatement;
99 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateIndexStatement;
100 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateProcedureStatement;
101 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateSchemaStatement;
102 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateSequenceStatement;
103 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateServiceStatement;
104 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTableStatement;
105 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateTriggerStatement;
106 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerCreateViewStatement;
107 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropDatabaseStatement;
108 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropFunctionStatement;
109 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropIndexStatement;
110 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropProcedureStatement;
111 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropSchemaStatement;
112 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropSequenceStatement;
113 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropServiceStatement;
114 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropTableStatement;
115 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropTriggerStatement;
116 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerDropViewStatement;
117 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.ddl.SQLServerTruncateStatement;
118 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dml.SQLServerSelectStatement;
119 import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.SQLServerStatementVisitor;
120
121 import java.util.Collection;
122 import java.util.Collections;
123 import java.util.LinkedList;
124
125
126
127
128 public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisitor implements DDLStatementVisitor {
129
130 @Override
131 public ASTNode visitCreateTable(final CreateTableContext ctx) {
132 return null == ctx.createTableClause() ? visit(ctx.createTableAsSelectClause()) : visit(ctx.createTableClause());
133 }
134
135 @Override
136 public ASTNode visitCreateTableClause(final CreateTableClauseContext ctx) {
137 SQLServerCreateTableStatement result = new SQLServerCreateTableStatement();
138 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
139 CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) generateCreateDefinitionSegment(ctx.createDefinitionClause().createTableDefinitions());
140 for (CreateDefinitionSegment each : createDefinitions.getValue()) {
141 if (each instanceof ColumnDefinitionSegment) {
142 result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
143 } else if (each instanceof ConstraintDefinitionSegment) {
144 result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
145 }
146 }
147 return result;
148 }
149
150 private ASTNode generateCreateDefinitionSegment(final CreateTableDefinitionsContext ctx) {
151 CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
152 for (CreateTableDefinitionContext each : ctx.createTableDefinition()) {
153 if (null != each.columnDefinition()) {
154 result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
155 }
156 if (null != each.tableConstraint()) {
157 result.getValue().add((ConstraintDefinitionSegment) visit(each.tableConstraint()));
158 }
159 }
160 return result;
161 }
162
163 @Override
164 public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
165 ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
166 DataTypeSegment dataType = (DataTypeSegment) visit(ctx.dataType());
167 boolean isPrimaryKey = isPrimaryKey(ctx);
168
169 ColumnDefinitionSegment result = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, isPrimaryKey, false);
170 for (ColumnDefinitionOptionContext each : ctx.columnDefinitionOption()) {
171 for (ColumnConstraintContext columnConstraint : each.columnConstraint()) {
172 if (null != columnConstraint.columnForeignKeyConstraint()) {
173 result.getReferencedTables().add((SimpleTableSegment) visit(columnConstraint.columnForeignKeyConstraint().tableName()));
174 }
175 }
176 }
177 for (ColumnConstraintContext each : ctx.columnConstraints().columnConstraint()) {
178 if (null != each.columnForeignKeyConstraint()) {
179 result.getReferencedTables().add((SimpleTableSegment) visit(each.columnForeignKeyConstraint().tableName()));
180 }
181 }
182 return result;
183 }
184
185 private boolean isPrimaryKey(final ColumnDefinitionContext ctx) {
186 for (ColumnDefinitionOptionContext each : ctx.columnDefinitionOption()) {
187 for (ColumnConstraintContext columnConstraint : each.columnConstraint()) {
188 if (null != columnConstraint.primaryKeyConstraint() && null != columnConstraint.primaryKeyConstraint().primaryKey()) {
189 return true;
190 }
191 }
192 }
193 for (ColumnConstraintContext each : ctx.columnConstraints().columnConstraint()) {
194 if (null != each.primaryKeyConstraint() && null != each.primaryKeyConstraint().primaryKey()) {
195 return true;
196 }
197 }
198 return false;
199 }
200
201 @SuppressWarnings("unchecked")
202 @Override
203 public ASTNode visitTableConstraint(final TableConstraintContext ctx) {
204 ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
205 if (null != ctx.constraintName()) {
206 result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
207 }
208 if (null != ctx.tablePrimaryConstraint() && null != ctx.tablePrimaryConstraint().primaryKeyUnique().primaryKey()) {
209 if (null != ctx.tablePrimaryConstraint().diskTablePrimaryConstraintOption()) {
210 result.getPrimaryKeyColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.tablePrimaryConstraint().diskTablePrimaryConstraintOption().columnNames())).getValue());
211 }
212 if (null != ctx.tablePrimaryConstraint().memoryTablePrimaryConstraintOption()) {
213 result.getPrimaryKeyColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.tablePrimaryConstraint().memoryTablePrimaryConstraintOption().columnNames())).getValue());
214 }
215 }
216 if (null != ctx.tableForeignKeyConstraint()) {
217 result.setReferencedTable((SimpleTableSegment) visit(ctx.tableForeignKeyConstraint().tableName()));
218 }
219 return result;
220 }
221
222 @SuppressWarnings("unchecked")
223 @Override
224 public ASTNode visitAlterTable(final AlterTableContext ctx) {
225 SQLServerAlterTableStatement result = new SQLServerAlterTableStatement();
226 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
227 for (AlterDefinitionClauseContext alterDefinitionClauseContext : ctx.alterDefinitionClause()) {
228 for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(alterDefinitionClauseContext)).getValue()) {
229 if (each instanceof AddColumnDefinitionSegment) {
230 result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
231 } else if (each instanceof ModifyColumnDefinitionSegment) {
232 result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
233 } else if (each instanceof DropColumnDefinitionSegment) {
234 result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
235 } else if (each instanceof AddConstraintDefinitionSegment) {
236 result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
237 } else if (each instanceof ModifyConstraintDefinitionSegment) {
238 result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) each);
239 } else if (each instanceof DropConstraintDefinitionSegment) {
240 result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
241 }
242 }
243 }
244 return result;
245 }
246
247 @SuppressWarnings("unchecked")
248 @Override
249 public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
250 CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
251 if (null != ctx.addColumnSpecification()) {
252 result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.addColumnSpecification())).getValue());
253 }
254 if (null != ctx.modifyColumnSpecification()) {
255 result.getValue().add((ModifyColumnDefinitionSegment) visit(ctx.modifyColumnSpecification()));
256 }
257 if (null != ctx.alterDrop() && null != ctx.alterDrop().dropColumnSpecification()) {
258 result.getValue().add((DropColumnDefinitionSegment) visit(ctx.alterDrop().dropColumnSpecification()));
259 }
260 if (null != ctx.alterDrop() && null != ctx.alterDrop().alterTableDropConstraint()) {
261 result.combine((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDrop().alterTableDropConstraint()));
262 }
263 if (null != ctx.alterCheckConstraint()) {
264 result.getValue().add((AlterDefinitionSegment) visit(ctx.alterCheckConstraint()));
265 }
266 return result;
267 }
268
269 @Override
270 public ASTNode visitAddColumnSpecification(final AddColumnSpecificationContext ctx) {
271 CollectionValue<AddColumnDefinitionSegment> result = new CollectionValue<>();
272 if (null != ctx.alterColumnAddOptions()) {
273 for (AlterColumnAddOptionContext each : ctx.alterColumnAddOptions().alterColumnAddOption()) {
274 if (null != each.columnDefinition()) {
275 AddColumnDefinitionSegment addColumnDefinition = new AddColumnDefinitionSegment(
276 each.columnDefinition().getStart().getStartIndex(), each.columnDefinition().getStop().getStopIndex(),
277 Collections.singletonList((ColumnDefinitionSegment) visit(each.columnDefinition())));
278 result.getValue().add(addColumnDefinition);
279 }
280 }
281 }
282 return result;
283 }
284
285 @Override
286 public ASTNode visitModifyColumnSpecification(final ModifyColumnSpecificationContext ctx) {
287
288 ColumnSegment column = (ColumnSegment) visit(ctx.alterColumnOperation().columnName());
289 DataTypeSegment dataType = (DataTypeSegment) visit(ctx.dataType());
290 ColumnDefinitionSegment columnDefinition = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, false, false);
291 return new ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinition);
292 }
293
294 @Override
295 public ASTNode visitDropColumnSpecification(final DropColumnSpecificationContext ctx) {
296 Collection<ColumnSegment> columns = new LinkedList<>();
297 for (ColumnNameContext each : ctx.columnName()) {
298 columns.add((ColumnSegment) visit(each));
299 }
300 return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
301 }
302
303 @SuppressWarnings("unchecked")
304 @Override
305 public ASTNode visitDropTable(final DropTableContext ctx) {
306 SQLServerDropTableStatement result = new SQLServerDropTableStatement(null != ctx.ifExists());
307 result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
308 return result;
309 }
310
311 @Override
312 public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
313 SQLServerTruncateStatement result = new SQLServerTruncateStatement();
314 result.getTables().add((SimpleTableSegment) visit(ctx.tableName()));
315 return result;
316 }
317
318 @Override
319 public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
320 SQLServerCreateIndexStatement result = new SQLServerCreateIndexStatement();
321 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
322 result.setIndex((IndexSegment) visit(ctx.indexName()));
323 result.getColumns().addAll(((CollectionValue) visit(ctx.columnNamesWithSort())).getValue());
324 return result;
325 }
326
327 @Override
328 public ASTNode visitColumnNameWithSort(final ColumnNameWithSortContext ctx) {
329 return visit(ctx.columnName());
330 }
331
332 @Override
333 public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
334 SQLServerAlterIndexStatement result = new SQLServerAlterIndexStatement();
335 if (null != ctx.indexName()) {
336 result.setIndex((IndexSegment) visit(ctx.indexName()));
337 }
338 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
339 return result;
340 }
341
342 @Override
343 public ASTNode visitDropIndex(final DropIndexContext ctx) {
344 SQLServerDropIndexStatement result = new SQLServerDropIndexStatement(null != ctx.ifExists());
345 result.getIndexes().add((IndexSegment) visit(ctx.indexName()));
346 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
347 return result;
348 }
349
350 @Override
351 public ASTNode visitAlterCheckConstraint(final AlterCheckConstraintContext ctx) {
352 return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
353 }
354
355 @Override
356 public ASTNode visitAlterTableDropConstraint(final AlterTableDropConstraintContext ctx) {
357 CollectionValue<DropConstraintDefinitionSegment> result = new CollectionValue<>();
358 for (DropConstraintNameContext each : ctx.dropConstraintName()) {
359 result.getValue().add(new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(each.constraintName())));
360 }
361 return result;
362 }
363
364 @Override
365 public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
366 SQLServerCreateDatabaseStatement result = new SQLServerCreateDatabaseStatement();
367 result.setDatabaseName(ctx.databaseName().getText());
368 return result;
369 }
370
371 @Override
372 public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
373 return new SQLServerCreateFunctionStatement();
374 }
375
376 @Override
377 public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
378 return new SQLServerCreateProcedureStatement();
379 }
380
381 @Override
382 public ASTNode visitCreateView(final CreateViewContext ctx) {
383 SQLServerCreateViewStatement result = new SQLServerCreateViewStatement();
384 result.setView((SimpleTableSegment) visit(ctx.viewName()));
385 result.setViewDefinition(getOriginalText(ctx.createOrAlterViewClause().select()));
386 result.setSelect((SQLServerSelectStatement) visit(ctx.createOrAlterViewClause().select()));
387 return result;
388 }
389
390 @Override
391 public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
392 return new SQLServerCreateTriggerStatement();
393 }
394
395 @Override
396 public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
397 SQLServerCreateSequenceStatement result = new SQLServerCreateSequenceStatement();
398 result.setSequenceName(ctx.sequenceName().name().getText());
399 return result;
400 }
401
402 @Override
403 public ASTNode visitCreateSchema(final CreateSchemaContext ctx) {
404 return new SQLServerCreateSchemaStatement();
405 }
406
407 @Override
408 public ASTNode visitCreateService(final CreateServiceContext ctx) {
409 return new SQLServerCreateServiceStatement();
410 }
411
412 @Override
413 public ASTNode visitAlterSchema(final AlterSchemaContext ctx) {
414 return new SQLServerAlterSchemaStatement();
415 }
416
417 @Override
418 public ASTNode visitAlterService(final AlterServiceContext ctx) {
419 return new SQLServerAlterServiceStatement();
420 }
421
422 @Override
423 public ASTNode visitDropSchema(final DropSchemaContext ctx) {
424 return new SQLServerDropSchemaStatement();
425 }
426
427 @Override
428 public ASTNode visitDropService(final DropServiceContext ctx) {
429 return new SQLServerDropServiceStatement();
430 }
431
432 @Override
433 public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
434 return new SQLServerAlterTriggerStatement();
435 }
436
437 @Override
438 public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
439 return new SQLServerAlterSequenceStatement();
440 }
441
442 @Override
443 public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
444 return new SQLServerAlterProcedureStatement();
445 }
446
447 @Override
448 public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
449 return new SQLServerAlterFunctionStatement();
450 }
451
452 @Override
453 public ASTNode visitAlterView(final AlterViewContext ctx) {
454 SQLServerAlterViewStatement result = new SQLServerAlterViewStatement();
455 result.setView((SimpleTableSegment) visit(ctx.viewName()));
456 result.setViewDefinition(getOriginalText(ctx.createOrAlterViewClause().select()));
457 result.setSelect((SQLServerSelectStatement) visit(ctx.createOrAlterViewClause().select()));
458 return result;
459 }
460
461 @Override
462 public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
463 return new SQLServerAlterDatabaseStatement();
464 }
465
466 @Override
467 public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
468 return new SQLServerDropDatabaseStatement();
469 }
470
471 @Override
472 public ASTNode visitDropFunction(final DropFunctionContext ctx) {
473 return new SQLServerDropFunctionStatement();
474 }
475
476 @Override
477 public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
478 return new SQLServerDropProcedureStatement();
479 }
480
481 @Override
482 public ASTNode visitDropView(final DropViewContext ctx) {
483 SQLServerDropViewStatement result = new SQLServerDropViewStatement();
484 for (ViewNameContext each : ctx.viewName()) {
485 result.getViews().add((SimpleTableSegment) visit(each));
486 }
487 return result;
488 }
489
490 @Override
491 public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
492 return new SQLServerDropTriggerStatement();
493 }
494
495 @Override
496 public ASTNode visitDropSequence(final DropSequenceContext ctx) {
497 return new SQLServerDropSequenceStatement();
498 }
499 }