1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sql.parser.oracle.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.OracleStatementParser.AddColumnSpecificationContext;
23 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AddConstraintSpecificationContext;
24 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAnalyticViewContext;
25 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAttributeDimensionContext;
26 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterAuditPolicyContext;
27 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterClusterContext;
28 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseContext;
29 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseDictionaryContext;
30 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseLinkContext;
31 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDefinitionClauseContext;
32 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDimensionContext;
33 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDiskgroupContext;
34 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFlashbackArchiveContext;
35 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFunctionContext;
36 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterHierarchyContext;
37 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexContext;
38 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexTypeContext;
39 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterInmemoryJoinGroupContext;
40 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterJavaContext;
41 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterLibraryContext;
42 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterLockdownProfileContext;
43 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterMaterializedViewContext;
44 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterMaterializedViewLogContext;
45 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterMaterializedZonemapContext;
46 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterOperatorContext;
47 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterOutlineContext;
48 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterPackageContext;
49 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterPluggableDatabaseContext;
50 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterProcedureContext;
51 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterProfileContext;
52 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterRollbackSegmentContext;
53 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSequenceContext;
54 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSessionContext;
55 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSynonymContext;
56 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSystemContext;
57 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTableContext;
58 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTablespaceContext;
59 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTriggerContext;
60 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTypeContext;
61 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterViewContext;
62 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AnalyzeContext;
63 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AssociateStatisticsContext;
64 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AuditContext;
65 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AuditTraditionalContext;
66 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AuditUnifiedContext;
67 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.BodyContext;
68 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CollectionVariableDeclContext;
69 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnClausesContext;
70 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnDefinitionContext;
71 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnNameContext;
72 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnOrVirtualDefinitionContext;
73 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CommentContext;
74 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ConstraintClausesContext;
75 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateClusterContext;
76 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateContextContext;
77 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateControlFileContext;
78 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDatabaseContext;
79 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDatabaseLinkContext;
80 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDefinitionClauseContext;
81 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDimensionContext;
82 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDirectoryContext;
83 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateDiskgroupContext;
84 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateEditionContext;
85 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateFlashbackArchiveContext;
86 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateFunctionContext;
87 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateIndexContext;
88 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateInmemoryJoinGroupContext;
89 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateJavaContext;
90 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateLibraryContext;
91 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateLockdownProfileContext;
92 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateMaterializedViewContext;
93 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateMaterializedViewLogContext;
94 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateOperatorContext;
95 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreatePFileContext;
96 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateProcedureContext;
97 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateProfileContext;
98 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRelationalTableClauseContext;
99 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRestorePointContext;
100 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateRollbackSegmentContext;
101 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSPFileContext;
102 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSequenceContext;
103 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateSynonymContext;
104 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateTableContext;
105 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateTablespaceContext;
106 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateTriggerContext;
107 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateTypeContext;
108 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CreateViewContext;
109 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CursorDefinitionContext;
110 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CursorForLoopStatementContext;
111 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DataTypeDefinitionContext;
112 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DisassociateStatisticsContext;
113 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DmlStatementContext;
114 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropClusterContext;
115 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropColumnClauseContext;
116 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropColumnSpecificationContext;
117 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropConstraintClauseContext;
118 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropContextContext;
119 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDatabaseLinkContext;
120 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDimensionContext;
121 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDirectoryContext;
122 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDiskgroupContext;
123 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropEditionContext;
124 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropFlashbackArchiveContext;
125 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropFunctionContext;
126 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropIndexContext;
127 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropIndexTypeContext;
128 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropInmemoryJoinGroupContext;
129 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropJavaContext;
130 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropLibraryContext;
131 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropLockdownProfileContext;
132 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedViewContext;
133 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedViewLogContext;
134 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropMaterializedZonemapContext;
135 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOperatorContext;
136 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropOutlineContext;
137 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropPackageContext;
138 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropPluggableDatabaseContext;
139 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropProcedureContext;
140 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropProfileContext;
141 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropRestorePointContext;
142 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropRollbackSegmentContext;
143 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropSequenceContext;
144 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropSynonymContext;
145 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTableContext;
146 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTableSpaceContext;
147 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTriggerContext;
148 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropTypeContext;
149 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropViewContext;
150 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DynamicSqlStmtContext;
151 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ExceptionHandlerContext;
152 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackDatabaseContext;
153 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FlashbackTableContext;
154 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.FunctionContext;
155 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexExpressionContext;
156 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexExpressionsContext;
157 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexNameContext;
158 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.IndexTypeNameContext;
159 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.InlineConstraintContext;
160 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ItemDeclarationContext;
161 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ModifyColPropertiesContext;
162 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ModifyCollectionRetrievalContext;
163 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ModifyColumnSpecificationContext;
164 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ModifyConstraintClauseContext;
165 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.NestedTableTypeSpecContext;
166 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.NoAuditContext;
167 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ObjectBaseTypeDefContext;
168 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ObjectSubTypeDefContext;
169 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ObjectTypeDefContext;
170 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OpenForStatementContext;
171 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OperateColumnClauseContext;
172 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OutOfLineConstraintContext;
173 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OutOfLineRefConstraintContext;
174 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.OwnerContext;
175 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PackageNameContext;
176 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ParameterDeclarationContext;
177 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PlsqlBlockContext;
178 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PlsqlFunctionSourceContext;
179 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PlsqlProcedureSourceContext;
180 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ProcedureCallContext;
181 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.PurgeContext;
182 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.RelationalPropertyContext;
183 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.RenameContext;
184 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SchemaNameContext;
185 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SelectContext;
186 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SelectIntoStatementContext;
187 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SqlStatementInPlsqlContext;
188 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.StatementContext;
189 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SwitchContext;
190 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.SystemActionContext;
191 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TableNameContext;
192 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TruncateTableContext;
193 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.TypeNameContext;
194 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.VariableNameContext;
195 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.VarrayTypeSpecContext;
196 import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.DropDatabaseContext;
197 import org.apache.shardingsphere.sql.parser.oracle.visitor.statement.OracleStatementVisitor;
198 import org.apache.shardingsphere.sql.parser.sql.common.segment.dal.VariableSegment;
199 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.AlterDefinitionSegment;
200 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.CreateDefinitionSegment;
201 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.ColumnDefinitionSegment;
202 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.AddColumnDefinitionSegment;
203 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.DropColumnDefinitionSegment;
204 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyCollectionRetrievalSegment;
205 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
206 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.ConstraintDefinitionSegment;
207 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.ConstraintSegment;
208 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
209 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.DropConstraintDefinitionSegment;
210 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.constraint.alter.ModifyConstraintDefinitionSegment;
211 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexSegment;
212 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.index.IndexTypeSegment;
213 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.packages.PackageSegment;
214 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.routine.FunctionNameSegment;
215 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.tablespace.TablespaceSegment;
216 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeDefinitionSegment;
217 import org.apache.shardingsphere.sql.parser.sql.common.segment.ddl.type.TypeSegment;
218 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
219 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
220 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
221 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DataTypeSegment;
222 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
223 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
224 import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
225 import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
226 import org.apache.shardingsphere.sql.parser.sql.common.value.collection.CollectionValue;
227 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
228 import org.apache.shardingsphere.sql.parser.sql.common.value.literal.impl.StringLiteralValue;
229 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAnalyticViewStatement;
230 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAttributeDimensionStatement;
231 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterAuditPolicyStatement;
232 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterClusterStatement;
233 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseDictionaryStatement;
234 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseLinkStatement;
235 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseStatement;
236 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDimensionStatement;
237 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDiskgroupStatement;
238 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterFlashbackArchiveStatement;
239 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterFunctionStatement;
240 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterHierarchyStatement;
241 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterIndexStatement;
242 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterIndexTypeStatement;
243 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterInmemoryJoinGroupStatement;
244 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterJavaStatement;
245 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterLibraryStatement;
246 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterLockdownProfileStatement;
247 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterMaterializedViewLogStatement;
248 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterMaterializedViewStatement;
249 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterMaterializedZonemapStatement;
250 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterOperatorStatement;
251 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterOutlineStatement;
252 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterPackageStatement;
253 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterPluggableDatabaseStatement;
254 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterProcedureStatement;
255 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterProfileStatement;
256 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterRollbackSegmentStatement;
257 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSequenceStatement;
258 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSessionStatement;
259 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSynonymStatement;
260 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSystemStatement;
261 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTableStatement;
262 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTablespaceStatement;
263 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTriggerStatement;
264 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTypeStatement;
265 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterViewStatement;
266 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAnalyzeStatement;
267 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAssociateStatisticsStatement;
268 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAuditStatement;
269 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCommentStatement;
270 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateClusterStatement;
271 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateContextStatement;
272 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateControlFileStatement;
273 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDatabaseLinkStatement;
274 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDatabaseStatement;
275 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDimensionStatement;
276 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDirectoryStatement;
277 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateDiskgroupStatement;
278 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateEditionStatement;
279 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFlashbackArchiveStatement;
280 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateFunctionStatement;
281 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateIndexStatement;
282 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateInmemoryJoinGroupStatement;
283 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateJavaStatement;
284 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateLibraryStatement;
285 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateLockdownProfileStatement;
286 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateMaterializedViewLogStatement;
287 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateMaterializedViewStatement;
288 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateNestedTableTypeStatement;
289 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateObjectTypeStatement;
290 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateOperatorStatement;
291 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreatePFileStatement;
292 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateProcedureStatement;
293 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateProfileStatement;
294 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateRestorePointStatement;
295 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateRollbackSegmentStatement;
296 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSPFileStatement;
297 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSequenceStatement;
298 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSubTypeStatement;
299 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateSynonymStatement;
300 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateTableStatement;
301 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateTablespaceStatement;
302 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateTriggerStatement;
303 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateVarrayTypeStatement;
304 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateViewStatement;
305 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDisassociateStatisticsStatement;
306 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropClusterStatement;
307 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropContextStatement;
308 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDatabaseLinkStatement;
309 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDimensionStatement;
310 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDirectoryStatement;
311 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDiskgroupStatement;
312 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropEditionStatement;
313 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropFlashbackArchiveStatement;
314 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropFunctionStatement;
315 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropIndexStatement;
316 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropIndexTypeStatement;
317 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropInmemoryJoinGroupStatement;
318 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropJavaStatement;
319 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropLibraryStatement;
320 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropLockdownProfileStatement;
321 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropMaterializedViewLogStatement;
322 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropMaterializedViewStatement;
323 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropMaterializedZonemapStatement;
324 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropOperatorStatement;
325 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropOutlineStatement;
326 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropPackageStatement;
327 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropPluggableDatabaseStatement;
328 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropProcedureStatement;
329 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropProfileStatement;
330 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropRestorePointStatement;
331 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropRollbackSegmentStatement;
332 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropSequenceStatement;
333 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropSynonymStatement;
334 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTableSpaceStatement;
335 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTableStatement;
336 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTriggerStatement;
337 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropTypeStatement;
338 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropViewStatement;
339 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleFlashbackDatabaseStatement;
340 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleFlashbackTableStatement;
341 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleNoAuditStatement;
342 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OraclePLSQLBlockStatement;
343 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OraclePurgeStatement;
344 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleRenameStatement;
345 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleSwitchStatement;
346 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleSystemActionStatement;
347 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleTruncateStatement;
348 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleDropDatabaseStatement;
349 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleSelectStatement;
350 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.plsql.CursorForLoopStatementSegment;
351 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.plsql.ProcedureBodyEndNameSegment;
352 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.plsql.ProcedureCallNameSegment;
353 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.plsql.SQLStatementSegment;
354
355 import java.util.Collection;
356 import java.util.Collections;
357 import java.util.Comparator;
358 import java.util.LinkedHashSet;
359 import java.util.LinkedList;
360 import java.util.Optional;
361 import java.util.Set;
362 import java.util.stream.Collectors;
363
364
365
366
367 public final class OracleDDLStatementVisitor extends OracleStatementVisitor implements DDLStatementVisitor {
368
369 @Override
370 public ASTNode visitCreateView(final CreateViewContext ctx) {
371 OracleCreateViewStatement result = new OracleCreateViewStatement();
372 OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor();
373 getGlobalParameterMarkerSegments().addAll(visitor.getGlobalParameterMarkerSegments());
374 getStatementParameterMarkerSegments().addAll(visitor.getStatementParameterMarkerSegments());
375 result.setView((SimpleTableSegment) visit(ctx.viewName()));
376 result.setSelect((SelectStatement) visitor.visit(ctx.select()));
377 result.setViewDefinition(getOriginalText(ctx.select()));
378 result.addParameterMarkerSegments(getGlobalParameterMarkerSegments());
379 return result;
380 }
381
382 @SuppressWarnings("unchecked")
383 @Override
384 public ASTNode visitCreateTable(final CreateTableContext ctx) {
385 OracleCreateTableStatement result = new OracleCreateTableStatement();
386 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
387 if (null != ctx.createDefinitionClause()) {
388 CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
389 for (CreateDefinitionSegment each : createDefinitions.getValue()) {
390 if (each instanceof ColumnDefinitionSegment) {
391 result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
392 } else if (each instanceof ConstraintDefinitionSegment) {
393 result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
394 }
395 }
396 }
397 return result;
398 }
399
400 @Override
401 public ASTNode visitCreateType(final CreateTypeContext ctx) {
402 boolean isReplace = null != ctx.REPLACE();
403 boolean isEditionable = null == ctx.NONEDITIONABLE();
404 TypeSegment typeSegment = (TypeSegment) visit(ctx.plsqlTypeSource().typeName());
405 if (null != ctx.plsqlTypeSource().objectSubTypeDef()) {
406 ObjectSubTypeDefContext objectSubTypeDefContext = ctx.plsqlTypeSource().objectSubTypeDef();
407 return new OracleCreateSubTypeStatement(isReplace, isEditionable,
408 null == objectSubTypeDefContext.finalClause() || null == objectSubTypeDefContext.finalClause().NOT(),
409 null == objectSubTypeDefContext.instantiableClause() || null == objectSubTypeDefContext.instantiableClause().NOT(),
410 typeSegment,
411 objectSubTypeDefContext.dataTypeDefinition().stream().map(definition -> (TypeDefinitionSegment) visit(definition)).collect(Collectors.toList()));
412 } else {
413 return visitCreateTypeObjectBaseTypeDef(ctx.plsqlTypeSource().objectBaseTypeDef(), isReplace, isEditionable, typeSegment);
414 }
415 }
416
417 private ASTNode visitCreateTypeObjectBaseTypeDef(final ObjectBaseTypeDefContext ctx, final boolean isReplace, final boolean isEditionable, final TypeSegment typeSegment) {
418 if (null != ctx.objectTypeDef()) {
419 ObjectTypeDefContext objectTypeDefContext = ctx.objectTypeDef();
420 return new OracleCreateObjectTypeStatement(isReplace, isEditionable, null == objectTypeDefContext.finalClause() || null == objectTypeDefContext.finalClause().NOT(),
421 null == objectTypeDefContext.instantiableClause() || null == objectTypeDefContext.instantiableClause().NOT(),
422 null == objectTypeDefContext.persistableClause() || null == objectTypeDefContext.persistableClause().NOT(),
423 typeSegment, objectTypeDefContext.dataTypeDefinition().stream().map(definition -> (TypeDefinitionSegment) visit(definition)).collect(Collectors.toList()));
424 } else if (null != ctx.varrayTypeSpec()) {
425 VarrayTypeSpecContext varrayTypeSpecContext = ctx.varrayTypeSpec();
426 return new OracleCreateVarrayTypeStatement(isReplace, isEditionable,
427 null == varrayTypeSpecContext.INTEGER_() ? -1 : Integer.parseInt(varrayTypeSpecContext.INTEGER_().getText()),
428 null != varrayTypeSpecContext.typeSpec().NULL(),
429 null == varrayTypeSpecContext.typeSpec().persistableClause() || null == varrayTypeSpecContext.typeSpec().persistableClause().NOT(),
430 typeSegment,
431 (DataTypeSegment) visit(varrayTypeSpecContext.typeSpec().dataType()));
432 } else {
433 NestedTableTypeSpecContext nestedTableTypeSpecContext = ctx.nestedTableTypeSpec();
434 return new OracleCreateNestedTableTypeStatement(isReplace, isEditionable,
435 null != nestedTableTypeSpecContext.typeSpec().NULL(),
436 null == nestedTableTypeSpecContext.typeSpec().persistableClause() || null == nestedTableTypeSpecContext.typeSpec().persistableClause().NOT(),
437 typeSegment,
438 (DataTypeSegment) visit(nestedTableTypeSpecContext.typeSpec().dataType()));
439 }
440 }
441
442 @Override
443 public ASTNode visitDataTypeDefinition(final DataTypeDefinitionContext ctx) {
444 return new TypeDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.name().getText(), (DataTypeSegment) visit(ctx.dataType()));
445 }
446
447 @SuppressWarnings("unchecked")
448 @Override
449 public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
450 CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
451 if (null != ctx.createRelationalTableClause()) {
452 result.combine((CollectionValue<CreateDefinitionSegment>) visit(ctx.createRelationalTableClause()));
453 }
454 return result;
455 }
456
457 @Override
458 public ASTNode visitCreateRelationalTableClause(final CreateRelationalTableClauseContext ctx) {
459 CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
460 if (null == ctx.relationalProperties()) {
461 return result;
462 }
463 for (RelationalPropertyContext each : ctx.relationalProperties().relationalProperty()) {
464 if (null != each.columnDefinition()) {
465 result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
466 }
467 if (null != each.outOfLineConstraint()) {
468 result.getValue().add((ConstraintDefinitionSegment) visit(each.outOfLineConstraint()));
469 }
470 if (null != each.outOfLineRefConstraint()) {
471 result.getValue().add((ConstraintDefinitionSegment) visit(each.outOfLineRefConstraint()));
472 }
473 }
474 return result;
475 }
476
477 @Override
478 public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
479 ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
480 DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType());
481 boolean isPrimaryKey = ctx.inlineConstraint().stream().anyMatch(each -> null != each.primaryKey());
482 boolean isNotNull = ctx.inlineConstraint().stream().anyMatch(each -> null != each.NOT() && null != each.NULL());
483 ColumnDefinitionSegment result = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, isPrimaryKey, isNotNull);
484 if (null != ctx.REF() && null != ctx.dataType()) {
485 result.setRef(true);
486 }
487 for (InlineConstraintContext each : ctx.inlineConstraint()) {
488 if (null != each.referencesClause()) {
489 result.getReferencedTables().add((SimpleTableSegment) visit(each.referencesClause().tableName()));
490 }
491 }
492 if (null != ctx.inlineRefConstraint()) {
493 result.getReferencedTables().add((SimpleTableSegment) visit(ctx.inlineRefConstraint().tableName()));
494 }
495 return result;
496 }
497
498 @SuppressWarnings("unchecked")
499 @Override
500 public ASTNode visitOutOfLineConstraint(final OutOfLineConstraintContext ctx) {
501 ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
502 if (null != ctx.constraintName()) {
503 result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
504 }
505 if (null != ctx.primaryKey()) {
506 result.getPrimaryKeyColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.columnNames())).getValue());
507 }
508 if (null != ctx.UNIQUE()) {
509 result.getIndexColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.columnNames())).getValue());
510 }
511 if (null != ctx.referencesClause()) {
512 result.setReferencedTable((SimpleTableSegment) visit(ctx.referencesClause().tableName()));
513 }
514 return result;
515 }
516
517 @Override
518 public ASTNode visitOutOfLineRefConstraint(final OutOfLineRefConstraintContext ctx) {
519 ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
520 if (null != ctx.constraintName()) {
521 result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
522 }
523 if (null != ctx.referencesClause()) {
524 result.setReferencedTable((SimpleTableSegment) visit(ctx.referencesClause().tableName()));
525 }
526 return result;
527 }
528
529 @SuppressWarnings("unchecked")
530 @Override
531 public ASTNode visitAlterTable(final AlterTableContext ctx) {
532 OracleAlterTableStatement result = new OracleAlterTableStatement();
533 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
534 if (null != ctx.alterDefinitionClause()) {
535 for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
536 if (each instanceof AddColumnDefinitionSegment) {
537 result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
538 } else if (each instanceof ModifyColumnDefinitionSegment) {
539 result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
540 } else if (each instanceof DropColumnDefinitionSegment) {
541 result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
542 } else if (each instanceof AddConstraintDefinitionSegment) {
543 result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
544 } else if (each instanceof ModifyConstraintDefinitionSegment) {
545 result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) each);
546 } else if (each instanceof DropConstraintDefinitionSegment) {
547 result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
548 } else if (each instanceof ModifyCollectionRetrievalSegment) {
549 result.setModifyCollectionRetrieval((ModifyCollectionRetrievalSegment) each);
550 }
551 }
552 }
553 return result;
554 }
555
556 @Override
557 public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
558 OracleAlterTablespaceStatement result = new OracleAlterTablespaceStatement();
559 if (null != ctx.tablespaceName()) {
560 result.setTablespaceSegment(
561 new TablespaceSegment(ctx.tablespaceName().getStart().getStartIndex(), ctx.tablespaceName().getStop().getStopIndex(), (IdentifierValue) visit(ctx.tablespaceName())));
562 }
563 if (null != ctx.newTablespaceName()) {
564 result.setRenameTablespaceSegment(
565 new TablespaceSegment(ctx.newTablespaceName().getStart().getStartIndex(), ctx.newTablespaceName().getStop().getStopIndex(), (IdentifierValue) visit(ctx.newTablespaceName())));
566 }
567 return result;
568 }
569
570 @SuppressWarnings("unchecked")
571 @Override
572 public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
573 CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
574 if (null != ctx.columnClauses()) {
575 result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.columnClauses())).getValue());
576 }
577 if (null != ctx.constraintClauses()) {
578 result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.constraintClauses())).getValue());
579 }
580
581 return result;
582 }
583
584 @SuppressWarnings("unchecked")
585 @Override
586 public ASTNode visitColumnClauses(final ColumnClausesContext ctx) {
587 CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
588 for (OperateColumnClauseContext each : ctx.operateColumnClause()) {
589 if (null != each.addColumnSpecification()) {
590 result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(each.addColumnSpecification())).getValue());
591 }
592 if (null != each.modifyColumnSpecification()) {
593 result.getValue().add((ModifyColumnDefinitionSegment) visit(each.modifyColumnSpecification()));
594 }
595 if (null != each.dropColumnClause()) {
596 result.getValue().add((DropColumnDefinitionSegment) visit(each.dropColumnClause()));
597 }
598 }
599 if (null != ctx.modifyCollectionRetrieval()) {
600 result.getValue().add((ModifyCollectionRetrievalSegment) visit(ctx.modifyCollectionRetrieval()));
601 }
602 return result;
603 }
604
605 @SuppressWarnings("unchecked")
606 @Override
607 public ASTNode visitConstraintClauses(final ConstraintClausesContext ctx) {
608
609 CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
610 if (null != ctx.addConstraintSpecification()) {
611 result.combine((CollectionValue<AlterDefinitionSegment>) visit(ctx.addConstraintSpecification()));
612 }
613 if (null != ctx.modifyConstraintClause()) {
614 result.getValue().add((AlterDefinitionSegment) visit(ctx.modifyConstraintClause()));
615 }
616 for (DropConstraintClauseContext each : ctx.dropConstraintClause()) {
617 if (null != each.constraintName()) {
618 result.getValue().add((AlterDefinitionSegment) visit(each));
619 }
620 }
621 return result;
622 }
623
624 @Override
625 public ASTNode visitModifyCollectionRetrieval(final ModifyCollectionRetrievalContext ctx) {
626 return new ModifyCollectionRetrievalSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SimpleTableSegment) visit(ctx.tableName()));
627 }
628
629 @Override
630 public ASTNode visitAddColumnSpecification(final AddColumnSpecificationContext ctx) {
631 CollectionValue<AddColumnDefinitionSegment> result = new CollectionValue<>();
632 for (ColumnOrVirtualDefinitionContext each : ctx.columnOrVirtualDefinitions().columnOrVirtualDefinition()) {
633 if (null != each.columnDefinition()) {
634 AddColumnDefinitionSegment addColumnDefinition = new AddColumnDefinitionSegment(
635 each.columnDefinition().getStart().getStartIndex(), each.columnDefinition().getStop().getStopIndex(),
636 Collections.singletonList((ColumnDefinitionSegment) visit(each.columnDefinition())));
637 result.getValue().add(addColumnDefinition);
638 }
639 }
640 return result;
641 }
642
643 @Override
644 public ASTNode visitModifyColumnSpecification(final ModifyColumnSpecificationContext ctx) {
645
646 ColumnDefinitionSegment columnDefinition = null;
647 for (ModifyColPropertiesContext each : ctx.modifyColProperties()) {
648 columnDefinition = (ColumnDefinitionSegment) visit(each);
649 }
650 return new ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinition);
651 }
652
653 @Override
654 public ASTNode visitDropColumnClause(final DropColumnClauseContext ctx) {
655 if (null != ctx.dropColumnSpecification()) {
656 return visit(ctx.dropColumnSpecification());
657 }
658 Collection<ColumnSegment> columns = new LinkedList<>();
659 if (null != ctx.columnOrColumnList().columnName()) {
660 columns.add((ColumnSegment) visit(ctx.columnOrColumnList().columnName()));
661 } else {
662 for (ColumnNameContext each : ctx.columnOrColumnList().columnNames().columnName()) {
663 columns.add((ColumnSegment) visit(each));
664 }
665 }
666 return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
667 }
668
669 @Override
670 public ASTNode visitModifyColProperties(final ModifyColPropertiesContext ctx) {
671 ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
672 DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType());
673
674 return new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, false, false);
675 }
676
677 @Override
678 public ASTNode visitDropColumnSpecification(final DropColumnSpecificationContext ctx) {
679 Collection<ColumnSegment> columns = new LinkedList<>();
680 if (null != ctx.columnOrColumnList().columnName()) {
681 columns.add((ColumnSegment) visit(ctx.columnOrColumnList().columnName()));
682 } else {
683 for (ColumnNameContext each : ctx.columnOrColumnList().columnNames().columnName()) {
684 columns.add((ColumnSegment) visit(each));
685 }
686 }
687 return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
688 }
689
690 @Override
691 public ASTNode visitAddConstraintSpecification(final AddConstraintSpecificationContext ctx) {
692 CollectionValue<AddConstraintDefinitionSegment> result = new CollectionValue<>();
693 for (OutOfLineConstraintContext each : ctx.outOfLineConstraint()) {
694 result.getValue().add(new AddConstraintDefinitionSegment(each.getStart().getStartIndex(), each.getStop().getStopIndex(), (ConstraintDefinitionSegment) visit(each)));
695 }
696 if (null != ctx.outOfLineRefConstraint()) {
697 result.getValue().add(new AddConstraintDefinitionSegment(ctx.outOfLineRefConstraint().getStart().getStartIndex(), ctx.outOfLineRefConstraint().getStop().getStopIndex(),
698 (ConstraintDefinitionSegment) visit(ctx.outOfLineRefConstraint())));
699 }
700 return result;
701 }
702
703 @Override
704 public ASTNode visitModifyConstraintClause(final ModifyConstraintClauseContext ctx) {
705 if (null != ctx.constraintOption().constraintWithName()) {
706 return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
707 (ConstraintSegment) visit(ctx.constraintOption().constraintWithName().constraintName()));
708 } else {
709 return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null);
710 }
711 }
712
713 @Override
714 public ASTNode visitDropConstraintClause(final DropConstraintClauseContext ctx) {
715 return new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
716 }
717
718 @Override
719 public ASTNode visitDropContext(final DropContextContext ctx) {
720 return new OracleDropContextStatement();
721 }
722
723 @Override
724 public ASTNode visitDropTable(final DropTableContext ctx) {
725 OracleDropTableStatement result = new OracleDropTableStatement();
726 result.getTables().add((SimpleTableSegment) visit(ctx.tableName()));
727 return result;
728 }
729
730 @Override
731 public ASTNode visitDropDatabaseLink(final DropDatabaseLinkContext ctx) {
732 return new OracleDropDatabaseLinkStatement();
733 }
734
735 @Override
736 public ASTNode visitAlterDatabaseLink(final AlterDatabaseLinkContext ctx) {
737 return new OracleAlterDatabaseLinkStatement();
738 }
739
740 @Override
741 public ASTNode visitAlterDatabaseDictionary(final AlterDatabaseDictionaryContext ctx) {
742 return new OracleAlterDatabaseDictionaryStatement();
743 }
744
745 @Override
746 public ASTNode visitAlterView(final AlterViewContext ctx) {
747 OracleAlterViewStatement result = new OracleAlterViewStatement();
748 result.setView((SimpleTableSegment) visit(ctx.viewName()));
749 result.setConstraintDefinitionSegment((ConstraintDefinitionSegment) getAlterViewConstraintDefinition(ctx));
750 return result;
751 }
752
753 private ASTNode getAlterViewConstraintDefinition(final AlterViewContext ctx) {
754 ConstraintDefinitionSegment result = null;
755 if (null != ctx.outOfLineConstraint()) {
756 result = (ConstraintDefinitionSegment) visit(ctx.outOfLineConstraint());
757 } else if (null != ctx.constraintName()) {
758 result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
759 result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
760 }
761 return result;
762 }
763
764 @Override
765 public ASTNode visitDropPackage(final DropPackageContext ctx) {
766 return new OracleDropPackageStatement();
767 }
768
769 @Override
770 public ASTNode visitAlterPackage(final AlterPackageContext ctx) {
771 return new OracleAlterPackageStatement();
772 }
773
774 @Override
775 public ASTNode visitCreateSynonym(final CreateSynonymContext ctx) {
776 return new OracleCreateSynonymStatement();
777 }
778
779 @Override
780 public ASTNode visitDropSynonym(final DropSynonymContext ctx) {
781 return new OracleDropSynonymStatement();
782 }
783
784 @Override
785 public ASTNode visitCreateDirectory(final CreateDirectoryContext ctx) {
786 return new OracleCreateDirectoryStatement();
787 }
788
789 @Override
790 public ASTNode visitDropView(final DropViewContext ctx) {
791 OracleDropViewStatement result = new OracleDropViewStatement();
792 result.getViews().add((SimpleTableSegment) visit(ctx.viewName()));
793 return result;
794 }
795
796 @Override
797 public ASTNode visitCreateEdition(final CreateEditionContext ctx) {
798 return new OracleCreateEditionStatement();
799 }
800
801 @Override
802 public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
803 return new OracleDropTriggerStatement();
804 }
805
806 @Override
807 public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
808 return new OracleCreateTriggerStatement();
809 }
810
811 @Override
812 public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
813 return new OracleAlterTriggerStatement();
814 }
815
816 @Override
817 public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
818 OracleTruncateStatement result = new OracleTruncateStatement();
819 result.getTables().add((SimpleTableSegment) visit(ctx.tableName()));
820 return result;
821 }
822
823 @Override
824 public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
825 OracleCreateIndexStatement result = new OracleCreateIndexStatement();
826 if (null != ctx.createIndexDefinitionClause().tableIndexClause()) {
827 result.setTable((SimpleTableSegment) visit(ctx.createIndexDefinitionClause().tableIndexClause().tableName()));
828 result.getColumns().addAll(((CollectionValue) visit(ctx.createIndexDefinitionClause().tableIndexClause().indexExpressions())).getValue());
829 }
830 result.setIndex((IndexSegment) visit(ctx.indexName()));
831 return result;
832 }
833
834 @Override
835 public ASTNode visitIndexExpressions(final IndexExpressionsContext ctx) {
836 CollectionValue<ColumnSegment> result = new CollectionValue<>();
837 for (IndexExpressionContext each : ctx.indexExpression()) {
838 ASTNode astNode = visit(each);
839 if (astNode instanceof ColumnSegment) {
840 result.getValue().add((ColumnSegment) astNode);
841 }
842 if (astNode instanceof FunctionSegment) {
843 ((FunctionSegment) astNode).getParameters().forEach(parameter -> {
844 if (parameter instanceof ColumnSegment) {
845 result.getValue().add((ColumnSegment) parameter);
846 }
847 });
848 }
849 }
850 return result;
851 }
852
853 @Override
854 public ASTNode visitIndexExpression(final IndexExpressionContext ctx) {
855 return null == ctx.expr() ? visit(ctx.columnName()) : visit(ctx.expr());
856 }
857
858 @Override
859 public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
860 OracleAlterIndexStatement result = new OracleAlterIndexStatement();
861 result.setIndex((IndexSegment) visit(ctx.indexName()));
862 return result;
863 }
864
865 @Override
866 public ASTNode visitDropIndex(final DropIndexContext ctx) {
867 OracleDropIndexStatement result = new OracleDropIndexStatement();
868 result.getIndexes().add((IndexSegment) visit(ctx.indexName()));
869 return result;
870 }
871
872 @Override
873 public ASTNode visitAlterSynonym(final AlterSynonymContext ctx) {
874 return new OracleAlterSynonymStatement();
875 }
876
877 @Override
878 public ASTNode visitAlterSession(final AlterSessionContext ctx) {
879 return new OracleAlterSessionStatement();
880 }
881
882 @Override
883 public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
884 return new OracleAlterDatabaseStatement();
885 }
886
887 @Override
888 public ASTNode visitAlterSystem(final AlterSystemContext ctx) {
889 return new OracleAlterSystemStatement();
890 }
891
892 @Override
893 public ASTNode visitAnalyze(final AnalyzeContext ctx) {
894 OracleAnalyzeStatement result = new OracleAnalyzeStatement();
895 if (null != ctx.tableName()) {
896 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
897 }
898 if (null != ctx.indexName()) {
899 result.setIndex((IndexSegment) visit(ctx.indexName()));
900 }
901 return result;
902 }
903
904 @Override
905 public ASTNode visitAssociateStatistics(final AssociateStatisticsContext ctx) {
906 OracleAssociateStatisticsStatement result = new OracleAssociateStatisticsStatement();
907 if (null != ctx.columnAssociation()) {
908 for (TableNameContext each : ctx.columnAssociation().tableName()) {
909 result.getTables().add((SimpleTableSegment) visit(each));
910 }
911 for (ColumnNameContext each : ctx.columnAssociation().columnName()) {
912 result.getColumns().add((ColumnSegment) visit(each));
913 }
914 }
915 if (null != ctx.functionAssociation()) {
916 for (IndexNameContext each : ctx.functionAssociation().indexName()) {
917 result.getIndexes().add((IndexSegment) visit(each));
918 }
919 for (FunctionContext each : ctx.functionAssociation().function()) {
920 result.getFunctions().add((FunctionSegment) visit(each));
921 }
922 for (PackageNameContext each : ctx.functionAssociation().packageName()) {
923 result.getPackages().add((PackageSegment) visit(each));
924 }
925 for (TypeNameContext each : ctx.functionAssociation().typeName()) {
926 result.getTypes().add((TypeSegment) visit(each));
927 }
928 for (IndexTypeNameContext each : ctx.functionAssociation().indexTypeName()) {
929 result.getIndexTypes().add((IndexTypeSegment) visit(each));
930 }
931 }
932 return result;
933 }
934
935 @Override
936 public ASTNode visitDisassociateStatistics(final DisassociateStatisticsContext ctx) {
937 OracleDisassociateStatisticsStatement result = new OracleDisassociateStatisticsStatement();
938 if (null != ctx.tableName()) {
939 for (TableNameContext each : ctx.tableName()) {
940 result.getTables().add((SimpleTableSegment) visit(each));
941 }
942 for (ColumnNameContext each : ctx.columnName()) {
943 result.getColumns().add((ColumnSegment) visit(each));
944 }
945 }
946 if (null != ctx.indexName()) {
947 for (IndexNameContext each : ctx.indexName()) {
948 result.getIndexes().add((IndexSegment) visit(each));
949 }
950 }
951 if (null != ctx.function()) {
952 for (FunctionContext each : ctx.function()) {
953 result.getFunctions().add((FunctionSegment) visit(each));
954 }
955 }
956 if (null != ctx.packageName()) {
957 for (PackageNameContext each : ctx.packageName()) {
958 result.getPackages().add((PackageSegment) visit(each));
959 }
960 }
961 if (null != ctx.typeName()) {
962 for (TypeNameContext each : ctx.typeName()) {
963 result.getTypes().add((TypeSegment) visit(each));
964 }
965 }
966 if (null != ctx.indexTypeName()) {
967 for (IndexTypeNameContext each : ctx.indexTypeName()) {
968 result.getIndexTypes().add((IndexTypeSegment) visit(each));
969 }
970 }
971 return result;
972 }
973
974 @Override
975 public ASTNode visitAudit(final AuditContext ctx) {
976 return null == ctx.auditTraditional() ? visit(ctx.auditUnified()) : visit(ctx.auditTraditional());
977 }
978
979 @Override
980 public ASTNode visitAuditTraditional(final AuditTraditionalContext ctx) {
981 return new OracleAuditStatement();
982 }
983
984 @Override
985 public ASTNode visitAuditUnified(final AuditUnifiedContext ctx) {
986 return new OracleAuditStatement();
987 }
988
989 @Override
990 public ASTNode visitNoAudit(final NoAuditContext ctx) {
991 return new OracleNoAuditStatement();
992 }
993
994 @Override
995 public ASTNode visitComment(final CommentContext ctx) {
996 OracleCommentStatement result = new OracleCommentStatement();
997 if (null != ctx.tableName()) {
998 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
999 }
1000 if (null != ctx.columnName()) {
1001 result.setColumn((ColumnSegment) visit(ctx.columnName()));
1002 }
1003 if (null != ctx.indexTypeName()) {
1004 result.setIndexType((IndexTypeSegment) visit(ctx.indexTypeName()));
1005 }
1006 result.setComment(new IdentifierValue(ctx.STRING_().getText()));
1007 return result;
1008 }
1009
1010 @Override
1011 public ASTNode visitFlashbackDatabase(final FlashbackDatabaseContext ctx) {
1012 return new OracleFlashbackDatabaseStatement();
1013 }
1014
1015 @Override
1016 public ASTNode visitFlashbackTable(final FlashbackTableContext ctx) {
1017 OracleFlashbackTableStatement result = new OracleFlashbackTableStatement();
1018 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
1019
1020 if (null != ctx.renameToTable()) {
1021 result.setRenameTable((SimpleTableSegment) visit(ctx.renameToTable().tableName()));
1022 }
1023 return result;
1024 }
1025
1026 @Override
1027 public ASTNode visitPurge(final PurgeContext ctx) {
1028 OraclePurgeStatement result = new OraclePurgeStatement();
1029 if (null != ctx.tableName()) {
1030 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
1031 }
1032 if (null != ctx.indexName()) {
1033 result.setIndex((IndexSegment) visit(ctx.indexName()));
1034 }
1035 return result;
1036 }
1037
1038 @Override
1039 public ASTNode visitRename(final RenameContext ctx) {
1040 return new OracleRenameStatement();
1041 }
1042
1043 @Override
1044 public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
1045 return new OracleCreateDatabaseStatement();
1046 }
1047
1048 @Override
1049 public ASTNode visitCreateDatabaseLink(final CreateDatabaseLinkContext ctx) {
1050 return new OracleCreateDatabaseLinkStatement();
1051 }
1052
1053 @Override
1054 public ASTNode visitCreateDimension(final CreateDimensionContext ctx) {
1055 return new OracleCreateDimensionStatement();
1056 }
1057
1058 @Override
1059 public ASTNode visitAlterDimension(final AlterDimensionContext ctx) {
1060 return new OracleAlterDimensionStatement();
1061 }
1062
1063 @Override
1064 public ASTNode visitDropDimension(final DropDimensionContext ctx) {
1065 return new OracleDropDimensionStatement();
1066 }
1067
1068 @Override
1069 public ASTNode visitDropDirectory(final DropDirectoryContext ctx) {
1070 return new OracleDropDirectoryStatement();
1071 }
1072
1073 @Override
1074 public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
1075 return visitCreateFunction0(ctx);
1076 }
1077
1078 private ASTNode visitCreateFunction0(final CreateFunctionContext ctx) {
1079 if (null != ctx.plsqlFunctionSource().declareSection()) {
1080 visit(ctx.plsqlFunctionSource().declareSection());
1081 }
1082 if (null != ctx.plsqlFunctionSource().body()) {
1083 visit(ctx.plsqlFunctionSource().body());
1084 }
1085 getSqlStatementsInPlsql().sort(Comparator.comparingInt(SQLStatementSegment::getStartIndex));
1086 getProcedureCallNames().sort(Comparator.comparingInt(ProcedureCallNameSegment::getStartIndex));
1087 getDynamicSqlStatementExpressions().sort(Comparator.comparingInt(ExpressionSegment::getStartIndex));
1088 OracleCreateFunctionStatement result = new OracleCreateFunctionStatement(getSqlStatementsInPlsql(), getProcedureCallNames(), getDynamicSqlStatementExpressions());
1089 result.setFunctionName(visitFunctionName(ctx.plsqlFunctionSource()));
1090 return result;
1091 }
1092
1093 private FunctionNameSegment visitFunctionName(final PlsqlFunctionSourceContext ctx) {
1094 OwnerContext schema = ctx.function().owner();
1095 IdentifierValue functionName = (IdentifierValue) visit(ctx.function().name().identifier());
1096 if (null == schema) {
1097 return new FunctionNameSegment(ctx.function().name().start.getStartIndex(), ctx.function().name().stop.getStopIndex(), functionName);
1098 }
1099 OwnerSegment owner = new OwnerSegment(schema.start.getStartIndex(), schema.stop.getStopIndex(), (IdentifierValue) visit(schema.identifier()));
1100 FunctionNameSegment result = new FunctionNameSegment(ctx.function().start.getStartIndex(), ctx.function().stop.getStopIndex(), functionName);
1101 result.setOwner(owner);
1102 return result;
1103 }
1104
1105 @Override
1106 public ASTNode visitDropEdition(final DropEditionContext ctx) {
1107 return new OracleDropEditionStatement();
1108 }
1109
1110 @Override
1111 public ASTNode visitDropOutline(final DropOutlineContext ctx) {
1112 return new OracleDropOutlineStatement();
1113 }
1114
1115 @Override
1116 public ASTNode visitAlterOutline(final AlterOutlineContext ctx) {
1117 return new OracleAlterOutlineStatement();
1118 }
1119
1120 @Override
1121 public ASTNode visitAlterAnalyticView(final AlterAnalyticViewContext ctx) {
1122 return new OracleAlterAnalyticViewStatement();
1123 }
1124
1125 @Override
1126 public ASTNode visitAlterAttributeDimension(final AlterAttributeDimensionContext ctx) {
1127 return new OracleAlterAttributeDimensionStatement();
1128 }
1129
1130 @Override
1131 public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
1132 OracleCreateSequenceStatement result = new OracleCreateSequenceStatement();
1133 result.setSequenceName(ctx.sequenceName().getText());
1134 return result;
1135 }
1136
1137 @Override
1138 public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
1139 return new OracleAlterSequenceStatement();
1140 }
1141
1142 @Override
1143 public ASTNode visitCreateContext(final CreateContextContext ctx) {
1144 return new OracleCreateContextStatement();
1145 }
1146
1147 @Override
1148 public ASTNode visitCreateSPFile(final CreateSPFileContext ctx) {
1149 return new OracleCreateSPFileStatement();
1150 }
1151
1152 @Override
1153 public ASTNode visitCreatePFile(final CreatePFileContext ctx) {
1154 return new OracleCreatePFileStatement();
1155 }
1156
1157 @Override
1158 public ASTNode visitCreateControlFile(final CreateControlFileContext ctx) {
1159 return new OracleCreateControlFileStatement();
1160 }
1161
1162 @Override
1163 public ASTNode visitCreateFlashbackArchive(final CreateFlashbackArchiveContext ctx) {
1164 return new OracleCreateFlashbackArchiveStatement();
1165 }
1166
1167 @Override
1168 public ASTNode visitAlterFlashbackArchive(final AlterFlashbackArchiveContext ctx) {
1169 return new OracleAlterFlashbackArchiveStatement();
1170 }
1171
1172 @Override
1173 public ASTNode visitDropFlashbackArchive(final DropFlashbackArchiveContext ctx) {
1174 return new OracleDropFlashbackArchiveStatement();
1175 }
1176
1177 @Override
1178 public ASTNode visitCreateDiskgroup(final CreateDiskgroupContext ctx) {
1179 return new OracleCreateDiskgroupStatement();
1180 }
1181
1182 @Override
1183 public ASTNode visitDropDiskgroup(final DropDiskgroupContext ctx) {
1184 return new OracleDropDiskgroupStatement();
1185 }
1186
1187 @Override
1188 public ASTNode visitCreateRollbackSegment(final CreateRollbackSegmentContext ctx) {
1189 return new OracleCreateRollbackSegmentStatement();
1190 }
1191
1192 @Override
1193 public ASTNode visitDropRollbackSegment(final DropRollbackSegmentContext ctx) {
1194 return new OracleDropRollbackSegmentStatement();
1195 }
1196
1197 @Override
1198 public ASTNode visitDropTableSpace(final DropTableSpaceContext ctx) {
1199 return new OracleDropTableSpaceStatement();
1200 }
1201
1202 @Override
1203 public ASTNode visitCreateLockdownProfile(final CreateLockdownProfileContext ctx) {
1204 return new OracleCreateLockdownProfileStatement();
1205 }
1206
1207 @Override
1208 public ASTNode visitDropLockdownProfile(final DropLockdownProfileContext ctx) {
1209 return new OracleDropLockdownProfileStatement();
1210 }
1211
1212 @Override
1213 public ASTNode visitCreateInmemoryJoinGroup(final CreateInmemoryJoinGroupContext ctx) {
1214 return new OracleCreateInmemoryJoinGroupStatement();
1215 }
1216
1217 @Override
1218 public ASTNode visitAlterInmemoryJoinGroup(final AlterInmemoryJoinGroupContext ctx) {
1219 return new OracleAlterInmemoryJoinGroupStatement();
1220 }
1221
1222 @Override
1223 public ASTNode visitDropInmemoryJoinGroup(final DropInmemoryJoinGroupContext ctx) {
1224 return new OracleDropInmemoryJoinGroupStatement();
1225 }
1226
1227 @Override
1228 public ASTNode visitCreateRestorePoint(final CreateRestorePointContext ctx) {
1229 return new OracleCreateRestorePointStatement();
1230 }
1231
1232 @Override
1233 public ASTNode visitDropRestorePoint(final DropRestorePointContext ctx) {
1234 return new OracleDropRestorePointStatement();
1235 }
1236
1237 @Override
1238 public ASTNode visitAlterOperator(final AlterOperatorContext ctx) {
1239 return new OracleAlterOperatorStatement();
1240 }
1241
1242 @Override
1243 public ASTNode visitAlterProfile(final AlterProfileContext ctx) {
1244 return new OracleAlterProfileStatement();
1245 }
1246
1247 @Override
1248 public ASTNode visitAlterRollbackSegment(final AlterRollbackSegmentContext ctx) {
1249 return new OracleAlterRollbackSegmentStatement();
1250 }
1251
1252 @Override
1253 public ASTNode visitDropOperator(final DropOperatorContext ctx) {
1254 return new OracleDropOperatorStatement();
1255 }
1256
1257 @Override
1258 public ASTNode visitDropSequence(final DropSequenceContext ctx) {
1259 return new OracleDropSequenceStatement();
1260 }
1261
1262 @Override
1263 public ASTNode visitAlterLibrary(final AlterLibraryContext ctx) {
1264 return new OracleAlterLibraryStatement();
1265 }
1266
1267 @Override
1268 public ASTNode visitDropType(final DropTypeContext ctx) {
1269 return new OracleDropTypeStatement();
1270 }
1271
1272 @Override
1273 public ASTNode visitAlterMaterializedZonemap(final AlterMaterializedZonemapContext ctx) {
1274 return new OracleAlterMaterializedZonemapStatement();
1275 }
1276
1277 @Override
1278 public ASTNode visitAlterJava(final AlterJavaContext ctx) {
1279 return new OracleAlterJavaStatement();
1280 }
1281
1282 @Override
1283 public ASTNode visitAlterAuditPolicy(final AlterAuditPolicyContext ctx) {
1284 return new OracleAlterAuditPolicyStatement();
1285 }
1286
1287 @Override
1288 public ASTNode visitAlterCluster(final AlterClusterContext ctx) {
1289 return new OracleAlterClusterStatement();
1290 }
1291
1292 @Override
1293 public ASTNode visitAlterDiskgroup(final AlterDiskgroupContext ctx) {
1294 return new OracleAlterDiskgroupStatement();
1295 }
1296
1297 @Override
1298 public ASTNode visitAlterIndexType(final AlterIndexTypeContext ctx) {
1299 return new OracleAlterIndexTypeStatement();
1300 }
1301
1302 @Override
1303 public ASTNode visitAlterMaterializedView(final AlterMaterializedViewContext ctx) {
1304 return new OracleAlterMaterializedViewStatement();
1305 }
1306
1307 @Override
1308 public ASTNode visitAlterMaterializedViewLog(final AlterMaterializedViewLogContext ctx) {
1309 return new OracleAlterMaterializedViewLogStatement();
1310 }
1311
1312 @Override
1313 public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
1314 return new OracleAlterFunctionStatement();
1315 }
1316
1317 @Override
1318 public ASTNode visitAlterHierarchy(final AlterHierarchyContext ctx) {
1319 return new OracleAlterHierarchyStatement();
1320 }
1321
1322 @Override
1323 public ASTNode visitAlterLockdownProfile(final AlterLockdownProfileContext ctx) {
1324 return new OracleAlterLockdownProfileStatement();
1325 }
1326
1327 @Override
1328 public ASTNode visitAlterPluggableDatabase(final AlterPluggableDatabaseContext ctx) {
1329 return new OracleAlterPluggableDatabaseStatement();
1330 }
1331
1332 @Override
1333 public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
1334 return visitCreateProcedure0(ctx);
1335 }
1336
1337 private ASTNode visitCreateProcedure0(final CreateProcedureContext ctx) {
1338 if (null != ctx.plsqlProcedureSource().parameterDeclaration()) {
1339 for (ParameterDeclarationContext each : ctx.plsqlProcedureSource().parameterDeclaration()) {
1340 visit(each);
1341 }
1342 }
1343 if (null != ctx.plsqlProcedureSource().declareSection()) {
1344 visit(ctx.plsqlProcedureSource().declareSection());
1345 }
1346 if (null != ctx.plsqlProcedureSource().body()) {
1347 visit(ctx.plsqlProcedureSource().body());
1348 }
1349 getSqlStatementsInPlsql().sort(Comparator.comparingInt(SQLStatementSegment::getStartIndex));
1350 getProcedureCallNames().sort(Comparator.comparingInt(ProcedureCallNameSegment::getStartIndex));
1351 getDynamicSqlStatementExpressions().sort(Comparator.comparingInt(ExpressionSegment::getStartIndex));
1352 OracleCreateProcedureStatement result = new OracleCreateProcedureStatement(getSqlStatementsInPlsql(), getProcedureCallNames(), getProcedureBodyEndNameSegments(),
1353 getDynamicSqlStatementExpressions());
1354 result.setProcedureName(visitProcedureName(ctx.plsqlProcedureSource()));
1355 result.getVariableNames().addAll(getVariableNames());
1356 getSqlStatementsInPlsql().forEach(each -> each.getSqlStatement().getVariableNames().addAll(getVariableNames()));
1357 result.getCursorForLoopStatements().addAll(getCursorForLoopStatementSegments());
1358 return result;
1359 }
1360
1361 @Override
1362 public ASTNode visitParameterDeclaration(final ParameterDeclarationContext ctx) {
1363 if (null != ctx.parameterName()) {
1364 IdentifierValue paramName = (IdentifierValue) visit(ctx.parameterName().identifier());
1365 getVariableNames().add(paramName.getValue().toLowerCase());
1366 return new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), paramName.getValue());
1367 }
1368 return super.visitParameterDeclaration(ctx);
1369 }
1370
1371 @Override
1372 public ASTNode visitItemDeclaration(final ItemDeclarationContext ctx) {
1373 CollectionValue<VariableSegment> result = new CollectionValue<>();
1374 if (null != ctx.collectionVariableDecl() && null != ctx.collectionVariableDecl().variableName()) {
1375 for (VariableNameContext each : ctx.collectionVariableDecl().variableName()) {
1376 getVariableSegment(each).ifPresent(optional -> result.getValue().add(optional));
1377 }
1378 }
1379 if (null != ctx.constantDeclaration() && null != ctx.constantDeclaration().variableName()) {
1380 getVariableSegment(ctx.constantDeclaration().variableName()).ifPresent(optional -> result.getValue().add(optional));
1381 }
1382 if (null != ctx.cursorVariableDeclaration() && null != ctx.cursorVariableDeclaration().variableName()) {
1383 getVariableSegment(ctx.cursorVariableDeclaration().variableName()).ifPresent(optional -> result.getValue().add(optional));
1384 }
1385 if (null != ctx.exceptionDeclaration() && null != ctx.exceptionDeclaration().variableName()) {
1386 getVariableSegment(ctx.exceptionDeclaration().variableName()).ifPresent(optional -> result.getValue().add(optional));
1387 }
1388 if (null != ctx.recordVariableDeclaration() && null != ctx.recordVariableDeclaration().variableName()) {
1389 getVariableSegment(ctx.recordVariableDeclaration().variableName()).ifPresent(optional -> result.getValue().add(optional));
1390 }
1391 if (null != ctx.variableDeclaration() && null != ctx.variableDeclaration().variableName()) {
1392 getVariableSegment(ctx.variableDeclaration().variableName()).ifPresent(optional -> result.getValue().add(optional));
1393 }
1394 return result;
1395 }
1396
1397 private Optional<VariableSegment> getVariableSegment(final VariableNameContext variableNameContext) {
1398 if (null == variableNameContext) {
1399 return Optional.empty();
1400 }
1401 if (null != variableNameContext.identifier()) {
1402 String variableName = ((IdentifierValue) visitIdentifier(variableNameContext.identifier())).getValue().toLowerCase();
1403 getVariableNames().add(variableName);
1404 return Optional.of(new VariableSegment(variableNameContext.start.getStartIndex(), variableNameContext.stop.getStopIndex(), variableName));
1405 }
1406 if (null != variableNameContext.stringLiterals()) {
1407 String variableName = variableNameContext.stringLiterals().STRING_().getText().toLowerCase();
1408 getVariableNames().add(variableName);
1409 return Optional.of(new VariableSegment(variableNameContext.start.getStartIndex(), variableNameContext.stop.getStopIndex(), variableName));
1410 }
1411 return Optional.empty();
1412 }
1413
1414 @Override
1415 public ASTNode visitCollectionVariableDecl(final CollectionVariableDeclContext ctx) {
1416 if (null == ctx.variableName()) {
1417 return super.visitCollectionVariableDecl(ctx);
1418 }
1419 CollectionValue<VariableSegment> result = new CollectionValue<>();
1420 for (VariableNameContext each : ctx.variableName()) {
1421 getVariableSegment(each).ifPresent(optional -> result.getValue().add(optional));
1422 }
1423 return result;
1424 }
1425
1426 private FunctionNameSegment visitProcedureName(final PlsqlProcedureSourceContext ctx) {
1427 SchemaNameContext schemaName = ctx.schemaName();
1428 IdentifierValue procedureName = (IdentifierValue) visit(ctx.procedureName().identifier());
1429 if (null == schemaName) {
1430 return new FunctionNameSegment(ctx.procedureName().start.getStartIndex(), ctx.procedureName().stop.getStopIndex(), procedureName);
1431 }
1432 OwnerSegment owner = new OwnerSegment(schemaName.start.getStartIndex(), schemaName.stop.getStopIndex(), (IdentifierValue) visit(schemaName.identifier()));
1433 FunctionNameSegment result = new FunctionNameSegment(schemaName.start.getStartIndex(), ctx.procedureName().stop.getStopIndex(), procedureName);
1434 result.setOwner(owner);
1435 return result;
1436 }
1437
1438 @Override
1439 public ASTNode visitCursorDefinition(final CursorDefinitionContext ctx) {
1440 SQLStatement statement = visitSelect0(ctx.select());
1441 getCursorStatements().put(null != ctx.variableName().identifier() ? new IdentifierValue(ctx.variableName().getText()).getValue()
1442 : new StringLiteralValue(ctx.variableName().getText()).getValue(), statement);
1443 return defaultResult();
1444 }
1445
1446 @Override
1447 public ASTNode visitBody(final BodyContext ctx) {
1448 for (StatementContext each : ctx.statement()) {
1449 visit(each);
1450 }
1451 for (ExceptionHandlerContext eachExceptionHandler : ctx.exceptionHandler()) {
1452 for (StatementContext each : eachExceptionHandler.statement()) {
1453 visit(each);
1454 }
1455 }
1456 if (null != ctx.identifier()) {
1457 getProcedureBodyEndNameSegments().add(
1458 new ProcedureBodyEndNameSegment(ctx.identifier().getStart().getStartIndex(), ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
1459 }
1460 return defaultResult();
1461 }
1462
1463 @Override
1464 public ASTNode visitProcedureCall(final ProcedureCallContext ctx) {
1465 int startIndex = ctx.procedureName().start.getStartIndex();
1466 PackageSegment packageSegment = null;
1467 if (null != ctx.packageName()) {
1468 startIndex = ctx.packageName().start.getStartIndex();
1469 packageSegment = (PackageSegment) visit(ctx.packageName());
1470 }
1471 ProcedureCallNameSegment result = new ProcedureCallNameSegment(startIndex, ctx.procedureName().stop.getStopIndex(), (IdentifierValue) visit(ctx.procedureName().identifier()));
1472 result.setPackageSegment(packageSegment);
1473 getProcedureCallNames().add(result);
1474 return defaultResult();
1475 }
1476
1477 @Override
1478 public ASTNode visitCursorForLoopStatement(final CursorForLoopStatementContext ctx) {
1479 SQLStatement relatedCursorStatement;
1480 String cursorName = null;
1481 if (null != ctx.select()) {
1482 relatedCursorStatement = visitSelect0(ctx.select());
1483 } else {
1484 cursorName = null == ctx.cursor().variableName().identifier()
1485 ? new StringLiteralValue(ctx.cursor().getText()).getValue()
1486 : new IdentifierValue(ctx.cursor().getText()).getValue();
1487 relatedCursorStatement = getCursorStatements().get(cursorName);
1488 }
1489 increaseCursorForLoopLevel();
1490 for (StatementContext each : ctx.statement()) {
1491 visit(each);
1492 }
1493 Set<SQLStatement> sqlStatements = getTempCursorForLoopStatements().remove(getCursorForLoopLevel());
1494 CursorForLoopStatementSegment cursorForLoopStatementSegment = new CursorForLoopStatementSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
1495 new IdentifierValue(ctx.record().getText()).getValue(), cursorName, relatedCursorStatement, null == sqlStatements ? Collections.emptyList() : sqlStatements);
1496 getCursorForLoopStatementSegments().add(cursorForLoopStatementSegment);
1497 decreaseCursorForLoopLevel();
1498 return defaultResult();
1499 }
1500
1501 @Override
1502 public ASTNode visitOpenForStatement(final OpenForStatementContext ctx) {
1503 if (null != ctx.select()) {
1504 visitSelect0(ctx.select());
1505 }
1506
1507 return defaultResult();
1508 }
1509
1510 private SQLStatement visitSelect0(final SelectContext select) {
1511 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1512 SQLStatement result = (SQLStatement) visitor.visitSelect(select);
1513 getSqlStatementsInPlsql().add(new SQLStatementSegment(select.start.getStartIndex(), select.stop.getStopIndex(), result));
1514 addToTempCursorForLoopStatements(result);
1515 return result;
1516 }
1517
1518 private void addToTempCursorForLoopStatements(final SQLStatement sqlStatement) {
1519 if (0 == getCursorForLoopLevel()) {
1520 return;
1521 }
1522 for (int i = 1; i <= getCursorForLoopLevel(); i++) {
1523 getTempCursorForLoopStatements().computeIfAbsent(i, key -> new LinkedHashSet<>()).add(sqlStatement);
1524 }
1525 }
1526
1527 @Override
1528 public ASTNode visitSqlStatementInPlsql(final SqlStatementInPlsqlContext ctx) {
1529 if (null != ctx.commit()) {
1530 OracleStatementVisitor visitor = createOracleTCLStatementVisitor();
1531 SQLStatement result = (SQLStatement) visitor.visitCommit(ctx.commit());
1532 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.commit().start.getStartIndex(), ctx.commit().stop.getStopIndex(), result));
1533 addToTempCursorForLoopStatements(result);
1534 }
1535
1536 if (null != ctx.delete()) {
1537 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1538 SQLStatement result = (SQLStatement) visitor.visitDelete(ctx.delete());
1539 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.delete().start.getStartIndex(), ctx.delete().stop.getStopIndex(), result));
1540 addToTempCursorForLoopStatements(result);
1541 }
1542 if (null != ctx.insert()) {
1543 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1544 SQLStatement result = (SQLStatement) visitor.visitInsert(ctx.insert());
1545 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.insert().start.getStartIndex(), ctx.insert().stop.getStopIndex(), result));
1546 addToTempCursorForLoopStatements(result);
1547 }
1548 if (null != ctx.lockTable()) {
1549 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1550 SQLStatement result = (SQLStatement) visitor.visitLockTable(ctx.lockTable());
1551 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.lockTable().start.getStartIndex(), ctx.lockTable().stop.getStopIndex(), result));
1552 addToTempCursorForLoopStatements(result);
1553 }
1554 if (null != ctx.merge()) {
1555 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1556 SQLStatement result = (SQLStatement) visitor.visitMerge(ctx.merge());
1557 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.merge().start.getStartIndex(), ctx.merge().stop.getStopIndex(), result));
1558 addToTempCursorForLoopStatements(result);
1559 }
1560 if (null != ctx.rollback()) {
1561 OracleStatementVisitor visitor = createOracleTCLStatementVisitor();
1562 SQLStatement result = (SQLStatement) visitor.visitRollback(ctx.rollback());
1563 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.rollback().start.getStartIndex(), ctx.rollback().stop.getStopIndex(), result));
1564 addToTempCursorForLoopStatements(result);
1565 }
1566 if (null != ctx.savepoint()) {
1567 OracleStatementVisitor visitor = createOracleTCLStatementVisitor();
1568 SQLStatement result = (SQLStatement) visitor.visitSavepoint(ctx.savepoint());
1569 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.savepoint().start.getStartIndex(), ctx.savepoint().stop.getStopIndex(), result));
1570 addToTempCursorForLoopStatements(result);
1571 }
1572 if (null != ctx.setTransaction()) {
1573 OracleStatementVisitor visitor = createOracleTCLStatementVisitor();
1574 SQLStatement result = (SQLStatement) visitor.visitSetTransaction(ctx.setTransaction());
1575 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.setTransaction().start.getStartIndex(), ctx.setTransaction().stop.getStopIndex(), result));
1576 addToTempCursorForLoopStatements(result);
1577 }
1578 if (null != ctx.update()) {
1579 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1580 SQLStatement result = (SQLStatement) visitor.visitUpdate(ctx.update());
1581 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.update().start.getStartIndex(), ctx.update().stop.getStopIndex(), result));
1582 addToTempCursorForLoopStatements(result);
1583 }
1584 return defaultResult();
1585 }
1586
1587 private OracleStatementVisitor createOracleTCLStatementVisitor() {
1588 OracleStatementVisitor result = new OracleTCLStatementVisitor();
1589 result.getVariableNames().addAll(getVariableNames());
1590 return result;
1591 }
1592
1593 private OracleStatementVisitor createOracleDMLStatementVisitor() {
1594 OracleStatementVisitor result = new OracleDMLStatementVisitor();
1595 result.getVariableNames().addAll(getVariableNames());
1596 return result;
1597 }
1598
1599 @Override
1600 public ASTNode visitDmlStatement(final DmlStatementContext ctx) {
1601 if (null != ctx.insert()) {
1602 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1603 SQLStatement result = (SQLStatement) visitor.visitInsert(ctx.insert());
1604 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.insert().start.getStartIndex(), ctx.insert().stop.getStopIndex(), result));
1605 addToTempCursorForLoopStatements(result);
1606 }
1607 if (null != ctx.update()) {
1608 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1609 SQLStatement result = (SQLStatement) visitor.visitUpdate(ctx.update());
1610 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.update().start.getStartIndex(), ctx.update().stop.getStopIndex(), result));
1611 addToTempCursorForLoopStatements(result);
1612 }
1613 if (null != ctx.delete()) {
1614 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1615 SQLStatement result = (SQLStatement) visitor.visitDelete(ctx.delete());
1616 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.delete().start.getStartIndex(), ctx.delete().stop.getStopIndex(), result));
1617 addToTempCursorForLoopStatements(result);
1618 }
1619 if (null != ctx.merge()) {
1620 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1621 SQLStatement result = (SQLStatement) visitor.visitMerge(ctx.merge());
1622 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.merge().start.getStartIndex(), ctx.merge().stop.getStopIndex(), result));
1623 addToTempCursorForLoopStatements(result);
1624 }
1625
1626 return defaultResult();
1627 }
1628
1629 @Override
1630 public ASTNode visitSelectIntoStatement(final SelectIntoStatementContext ctx) {
1631
1632 OracleStatementVisitor visitor = createOracleDMLStatementVisitor();
1633 OracleSelectStatement result = (OracleSelectStatement) visitor.visitSelectIntoStatement(ctx);
1634 getSqlStatementsInPlsql().add(new SQLStatementSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), result));
1635 addToTempCursorForLoopStatements(result);
1636 return result;
1637 }
1638
1639 @Override
1640 public ASTNode visitDynamicSqlStmt(final DynamicSqlStmtContext ctx) {
1641 ExpressionSegment result = (ExpressionSegment) visit(ctx.expression().expr());
1642 getDynamicSqlStatementExpressions().add(result);
1643 return result;
1644 }
1645
1646 @Override
1647 public ASTNode visitPlsqlBlock(final PlsqlBlockContext ctx) {
1648 return new OraclePLSQLBlockStatement();
1649 }
1650
1651 @Override
1652 public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
1653 return new OracleAlterProcedureStatement();
1654 }
1655
1656 @Override
1657 public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
1658 return new OracleDropProcedureStatement();
1659 }
1660
1661 @Override
1662 public ASTNode visitDropIndexType(final DropIndexTypeContext ctx) {
1663 return new OracleDropIndexTypeStatement();
1664 }
1665
1666 @Override
1667 public ASTNode visitDropProfile(final DropProfileContext ctx) {
1668 return new OracleDropProfileStatement();
1669 }
1670
1671 @Override
1672 public ASTNode visitDropPluggableDatabase(final DropPluggableDatabaseContext ctx) {
1673 return new OracleDropPluggableDatabaseStatement();
1674 }
1675
1676 @Override
1677 public ASTNode visitDropJava(final DropJavaContext ctx) {
1678 return new OracleDropJavaStatement();
1679 }
1680
1681 @Override
1682 public ASTNode visitDropFunction(final DropFunctionContext ctx) {
1683 return new OracleDropFunctionStatement();
1684 }
1685
1686 @Override
1687 public ASTNode visitDropLibrary(final DropLibraryContext ctx) {
1688 return new OracleDropLibraryStatement();
1689 }
1690
1691 @Override
1692 public ASTNode visitDropCluster(final DropClusterContext ctx) {
1693 return new OracleDropClusterStatement();
1694 }
1695
1696 @Override
1697 public ASTNode visitDropMaterializedView(final DropMaterializedViewContext ctx) {
1698 return new OracleDropMaterializedViewStatement();
1699 }
1700
1701 @Override
1702 public ASTNode visitDropMaterializedViewLog(final DropMaterializedViewLogContext ctx) {
1703 return new OracleDropMaterializedViewLogStatement();
1704 }
1705
1706 @Override
1707 public ASTNode visitDropMaterializedZonemap(final DropMaterializedZonemapContext ctx) {
1708 return new OracleDropMaterializedZonemapStatement();
1709 }
1710
1711 @Override
1712 public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
1713 return new OracleCreateTablespaceStatement();
1714 }
1715
1716 @Override
1717 public ASTNode visitCreateMaterializedView(final CreateMaterializedViewContext ctx) {
1718 return new OracleCreateMaterializedViewStatement();
1719 }
1720
1721 @Override
1722 public ASTNode visitCreateMaterializedViewLog(final CreateMaterializedViewLogContext ctx) {
1723 return new OracleCreateMaterializedViewLogStatement();
1724 }
1725
1726 @Override
1727 public ASTNode visitCreateCluster(final CreateClusterContext ctx) {
1728 return new OracleCreateClusterStatement();
1729 }
1730
1731 @Override
1732 public ASTNode visitSystemAction(final SystemActionContext ctx) {
1733 return new OracleSystemActionStatement();
1734 }
1735
1736 @Override
1737 public ASTNode visitAlterType(final AlterTypeContext ctx) {
1738 return new OracleAlterTypeStatement();
1739 }
1740
1741 @Override
1742 public ASTNode visitCreateJava(final CreateJavaContext ctx) {
1743 return new OracleCreateJavaStatement();
1744 }
1745
1746 @Override
1747 public ASTNode visitCreateLibrary(final CreateLibraryContext ctx) {
1748 return new OracleCreateLibraryStatement();
1749 }
1750
1751 @Override
1752 public ASTNode visitSwitch(final SwitchContext ctx) {
1753 return new OracleSwitchStatement();
1754 }
1755
1756 @Override
1757 public ASTNode visitCreateProfile(final CreateProfileContext ctx) {
1758 return new OracleCreateProfileStatement();
1759 }
1760
1761 @Override
1762 public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
1763 return new OracleDropDatabaseStatement();
1764 }
1765
1766 @Override
1767 public ASTNode visitCreateOperator(final CreateOperatorContext ctx) {
1768 return new OracleCreateOperatorStatement();
1769 }
1770 }