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