1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sql.parser.opengauss.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.OpenGaussStatementParser.AbsoluteCountContext;
25 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AddColumnSpecificationContext;
26 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AddConstraintSpecificationContext;
27 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AllContext;
28 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterAggregateContext;
29 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterConversionContext;
30 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterDefaultPrivilegesContext;
31 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterDefinitionClauseContext;
32 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterDirectoryContext;
33 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterDomainContext;
34 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterExtensionContext;
35 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterForeignTableContext;
36 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterFunctionContext;
37 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterGroupContext;
38 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterIndexContext;
39 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterLanguageContext;
40 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterMaterializedViewContext;
41 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterPackageContext;
42 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterProcedureContext;
43 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterRenameViewContext;
44 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterRuleContext;
45 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterSchemaContext;
46 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterSequenceContext;
47 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterSynonymContext;
48 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTableActionContext;
49 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTableContext;
50 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTablespaceContext;
51 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTextSearchDictionaryContext;
52 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTextSearchParserContext;
53 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTextSearchTemplateContext;
54 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterTypeContext;
55 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterViewContext;
56 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.BackwardAllContext;
57 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.BackwardContext;
58 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.BackwardCountContext;
59 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CloseContext;
60 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ColumnConstraintContext;
61 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ColumnDefinitionContext;
62 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CommentContext;
63 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CountContext;
64 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateAggregateContext;
65 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateCastContext;
66 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateConversionContext;
67 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateDatabaseContext;
68 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateDefinitionClauseContext;
69 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateDefinitionContext;
70 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateDirectoryContext;
71 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateDomainContext;
72 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateExtensionContext;
73 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateFunctionContext;
74 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateIndexContext;
75 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateLanguageContext;
76 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateProcedureContext;
77 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreatePublicationContext;
78 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateRuleContext;
79 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateSchemaContext;
80 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateSequenceContext;
81 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateSynonymContext;
82 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateTableContext;
83 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateTablespaceContext;
84 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateTextSearchContext;
85 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateTypeContext;
86 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CreateViewContext;
87 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CursorContext;
88 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CursorNameContext;
89 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DeallocateContext;
90 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DeclareContext;
91 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropCastContext;
92 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropColumnSpecificationContext;
93 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropConstraintSpecificationContext;
94 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropConversionContext;
95 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropDatabaseContext;
96 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropDirectoryContext;
97 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropDomainContext;
98 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropExtensionContext;
99 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropFunctionContext;
100 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropIndexContext;
101 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropLanguageContext;
102 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropProcedureContext;
103 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropPublicationContext;
104 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropRuleContext;
105 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropSchemaContext;
106 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropSequenceContext;
107 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropServerContext;
108 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropSynonymContext;
109 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropTableContext;
110 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropTablespaceContext;
111 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropTypeContext;
112 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.DropViewContext;
113 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.FetchContext;
114 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.FirstContext;
115 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ForwardAllContext;
116 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ForwardContext;
117 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ForwardCountContext;
118 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.FuncArgExprContext;
119 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.FunctionExprWindowlessContext;
120 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.IndexElemContext;
121 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.IndexNameContext;
122 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.IndexNamesContext;
123 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.IndexParamsContext;
124 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.LastContext;
125 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ModifyColumnSpecificationContext;
126 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ModifyConstraintSpecificationContext;
127 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.MoveContext;
128 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.NameContext;
129 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.NameListContext;
130 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.NextContext;
131 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.PrepareContext;
132 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.PriorContext;
133 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.RelativeCountContext;
134 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.RenameColumnSpecificationContext;
135 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.RenameTableSpecificationContext;
136 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.TableConstraintContext;
137 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.TableConstraintUsingIndexContext;
138 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.TableNameClauseContext;
139 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.TableNamesClauseContext;
140 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.TruncateTableContext;
141 import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.ValidateConstraintSpecificationContext;
142 import org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.OpenGaussStatementVisitor;
143 import org.apache.shardingsphere.sql.parser.statement.core.enums.DirectionType;
144 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
145 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.CreateDefinitionSegment;
146 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.ColumnDefinitionSegment;
147 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.AddColumnDefinitionSegment;
148 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.DropColumnDefinitionSegment;
149 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.ModifyColumnDefinitionSegment;
150 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.RenameColumnSegment;
151 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
152 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintSegment;
153 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
154 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.DropConstraintDefinitionSegment;
155 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.ModifyConstraintDefinitionSegment;
156 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.ValidateConstraintDefinitionSegment;
157 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.cursor.CursorNameSegment;
158 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.cursor.DirectionSegment;
159 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexNameSegment;
160 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
161 import org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.RenameTableDefinitionSegment;
162 import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
163 import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
164 import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.FunctionSegment;
165 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataTypeSegment;
166 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.NameSegment;
167 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
168 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
169 import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
170 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.AlterPackageStatement;
171 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.CloseStatement;
172 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.CommentStatement;
173 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.CursorStatement;
174 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DeallocateStatement;
175 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.FetchStatement;
176 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.MoveStatement;
177 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.PrepareStatement;
178 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.TruncateStatement;
179 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.CreateDatabaseStatement;
180 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.DropDatabaseStatement;
181 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.directory.CreateDirectoryStatement;
182 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.directory.DropDirectoryStatement;
183 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.domain.AlterDomainStatement;
184 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.domain.CreateDomainStatement;
185 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.AlterFunctionStatement;
186 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.CreateFunctionStatement;
187 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.function.DropFunctionStatement;
188 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.AlterIndexStatement;
189 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.CreateIndexStatement;
190 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.DropIndexStatement;
191 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.procedure.AlterProcedureStatement;
192 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.procedure.CreateProcedureStatement;
193 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.procedure.DropProcedureStatement;
194 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.schema.AlterSchemaStatement;
195 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.schema.CreateSchemaStatement;
196 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.schema.DropSchemaStatement;
197 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.sequence.AlterSequenceStatement;
198 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.sequence.CreateSequenceStatement;
199 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.sequence.DropSequenceStatement;
200 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.server.DropServerStatement;
201 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.synonym.AlterSynonymStatement;
202 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.synonym.CreateSynonymStatement;
203 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.synonym.DropSynonymStatement;
204 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.table.AlterTableStatement;
205 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.table.CreateTableStatement;
206 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.table.DropTableStatement;
207 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.tablespace.AlterTablespaceStatement;
208 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.tablespace.CreateTablespaceStatement;
209 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.tablespace.DropTablespaceStatement;
210 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.type.AlterTypeStatement;
211 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.type.CreateTypeStatement;
212 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.AlterMaterializedViewStatement;
213 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.AlterViewStatement;
214 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.CreateViewStatement;
215 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.DropViewStatement;
216 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.DeleteStatement;
217 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.InsertStatement;
218 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
219 import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.UpdateStatement;
220 import org.apache.shardingsphere.sql.parser.statement.core.value.collection.CollectionValue;
221 import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
222 import org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.NumberLiteralValue;
223 import org.apache.shardingsphere.sql.parser.statement.opengauss.ddl.OpenGaussAlterDirectoryStatement;
224 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.PostgreSQLAlterDefaultPrivilegesStatement;
225 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.PostgreSQLDeclareStatement;
226 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.PostgreSQLDropDomainStatement;
227 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.PostgreSQLDropTypeStatement;
228 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.aggregate.PostgreSQLAlterAggregateStatement;
229 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.aggregate.PostgreSQLCreateAggregateStatement;
230 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.cast.PostgreSQLCreateCastStatement;
231 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.cast.PostgreSQLDropCastStatement;
232 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.conversion.PostgreSQLAlterConversionStatement;
233 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.conversion.PostgreSQLCreateConversionStatement;
234 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.conversion.PostgreSQLDropConversionStatement;
235 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.extension.PostgreSQLAlterExtensionStatement;
236 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.extension.PostgreSQLCreateExtensionStatement;
237 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.extension.PostgreSQLDropExtensionStatement;
238 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.foreigntable.PostgreSQLAlterForeignTableStatement;
239 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.group.PostgreSQLAlterGroupStatement;
240 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.language.PostgreSQLAlterLanguageStatement;
241 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.language.PostgreSQLCreateLanguageStatement;
242 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.language.PostgreSQLDropLanguageStatement;
243 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.publication.PostgreSQLCreatePublicationStatement;
244 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.publication.PostgreSQLDropPublicationStatement;
245 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.rule.PostgreSQLAlterRuleStatement;
246 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.rule.PostgreSQLCreateRuleStatement;
247 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.rule.PostgreSQLDropRuleStatement;
248 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.textsearch.PostgreSQLAlterTextSearchStatement;
249 import org.apache.shardingsphere.sql.parser.statement.postgresql.ddl.textsearch.PostgreSQLCreateTextSearchStatement;
250
251 import java.util.ArrayList;
252 import java.util.Collection;
253 import java.util.Collections;
254 import java.util.Iterator;
255 import java.util.LinkedList;
256 import java.util.Optional;
257 import java.util.stream.Collectors;
258
259
260
261
262 public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisitor implements DDLStatementVisitor {
263
264 @SuppressWarnings("unchecked")
265 @Override
266 public ASTNode visitCreateTable(final CreateTableContext ctx) {
267 CreateTableStatement result = new CreateTableStatement();
268 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
269 result.setIfNotExists(null != ctx.ifNotExists());
270 if (null != ctx.createDefinitionClause()) {
271 CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
272 for (CreateDefinitionSegment each : createDefinitions.getValue()) {
273 if (each instanceof ColumnDefinitionSegment) {
274 result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
275 } else if (each instanceof ConstraintDefinitionSegment) {
276 result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
277 }
278 }
279 }
280 return result;
281 }
282
283 @Override
284 public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
285 CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
286 for (CreateDefinitionContext each : ctx.createDefinition()) {
287 if (null != each.columnDefinition()) {
288 result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
289 }
290 if (null != each.tableConstraint()) {
291 result.getValue().add((ConstraintDefinitionSegment) visit(each.tableConstraint()));
292 }
293 }
294 return result;
295 }
296
297 @SuppressWarnings("unchecked")
298 @Override
299 public ASTNode visitAlterTable(final AlterTableContext ctx) {
300 AlterTableStatement result = new AlterTableStatement();
301 result.setTable((SimpleTableSegment) visit(ctx.tableNameClause().tableName()));
302 if (null != ctx.alterDefinitionClause()) {
303 for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
304 if (each instanceof AddColumnDefinitionSegment) {
305 result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
306 } else if (each instanceof ModifyColumnDefinitionSegment) {
307 result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
308 } else if (each instanceof DropColumnDefinitionSegment) {
309 result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
310 } else if (each instanceof AddConstraintDefinitionSegment) {
311 result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
312 } else if (each instanceof ValidateConstraintDefinitionSegment) {
313 result.getValidateConstraintDefinitions().add((ValidateConstraintDefinitionSegment) each);
314 } else if (each instanceof ModifyConstraintDefinitionSegment) {
315 result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) each);
316 } else if (each instanceof DropConstraintDefinitionSegment) {
317 result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
318 } else if (each instanceof RenameTableDefinitionSegment) {
319 result.setRenameTable(((RenameTableDefinitionSegment) each).getRenameTable());
320 } else if (each instanceof RenameColumnSegment) {
321 result.getRenameColumnDefinitions().add((RenameColumnSegment) each);
322 }
323 }
324 }
325 return result;
326 }
327
328 @Override
329 public ASTNode visitAlterAggregate(final AlterAggregateContext ctx) {
330 return new PostgreSQLAlterAggregateStatement();
331 }
332
333 @Override
334 public ASTNode visitAlterDefaultPrivileges(final AlterDefaultPrivilegesContext ctx) {
335 return new PostgreSQLAlterDefaultPrivilegesStatement();
336 }
337
338 @Override
339 public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
340 CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
341 if (null != ctx.alterTableActions()) {
342 result.getValue().addAll(ctx.alterTableActions().alterTableAction().stream().flatMap(each -> getAlterDefinitionSegments(each).stream()).collect(Collectors.toList()));
343 }
344 if (null != ctx.renameColumnSpecification()) {
345 result.getValue().add((RenameColumnSegment) visit(ctx.renameColumnSpecification()));
346 }
347 if (null != ctx.renameTableSpecification()) {
348 result.getValue().add((RenameTableDefinitionSegment) visit(ctx.renameTableSpecification()));
349 }
350 return result;
351 }
352
353 @SuppressWarnings("unchecked")
354 private Collection<AlterDefinitionSegment> getAlterDefinitionSegments(final AlterTableActionContext ctx) {
355 Collection<AlterDefinitionSegment> result = new LinkedList<>();
356 if (null != ctx.addColumnSpecification()) {
357 result.addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.addColumnSpecification())).getValue());
358 }
359 if (null != ctx.addConstraintSpecification() && null != ctx.addConstraintSpecification().tableConstraint()) {
360 result.add((AddConstraintDefinitionSegment) visit(ctx.addConstraintSpecification()));
361 }
362 if (null != ctx.validateConstraintSpecification()) {
363 result.add((ValidateConstraintDefinitionSegment) visit(ctx.validateConstraintSpecification()));
364 }
365 if (null != ctx.modifyColumnSpecification()) {
366 result.add((ModifyColumnDefinitionSegment) visit(ctx.modifyColumnSpecification()));
367 }
368 if (null != ctx.modifyConstraintSpecification()) {
369 result.add((ModifyConstraintDefinitionSegment) visit(ctx.modifyConstraintSpecification()));
370 }
371 if (null != ctx.dropColumnSpecification()) {
372 result.add((DropColumnDefinitionSegment) visit(ctx.dropColumnSpecification()));
373 }
374 if (null != ctx.dropConstraintSpecification()) {
375 result.add((DropConstraintDefinitionSegment) visit(ctx.dropConstraintSpecification()));
376 }
377 return result;
378 }
379
380 @Override
381 public ASTNode visitAlterForeignTable(final AlterForeignTableContext ctx) {
382 return new PostgreSQLAlterForeignTableStatement();
383 }
384
385 @Override
386 public ASTNode visitAlterGroup(final AlterGroupContext ctx) {
387 return new PostgreSQLAlterGroupStatement();
388 }
389
390 @Override
391 public ASTNode visitAlterPackage(final AlterPackageContext ctx) {
392 return new AlterPackageStatement();
393 }
394
395 @Override
396 public ASTNode visitAlterMaterializedView(final AlterMaterializedViewContext ctx) {
397 return new AlterMaterializedViewStatement();
398 }
399
400 @Override
401 public ASTNode visitAddConstraintSpecification(final AddConstraintSpecificationContext ctx) {
402 return new AddConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintDefinitionSegment) visit(ctx.tableConstraint()));
403 }
404
405 @Override
406 public ASTNode visitValidateConstraintSpecification(final ValidateConstraintSpecificationContext ctx) {
407 return new ValidateConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
408 }
409
410 @Override
411 public ASTNode visitModifyConstraintSpecification(final ModifyConstraintSpecificationContext ctx) {
412 return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
413 }
414
415 @Override
416 public ASTNode visitDropConstraintSpecification(final DropConstraintSpecificationContext ctx) {
417 return new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
418 }
419
420 @Override
421 public ASTNode visitAlterDomain(final AlterDomainContext ctx) {
422 return new AlterDomainStatement();
423 }
424
425 @Override
426 public ASTNode visitRenameTableSpecification(final RenameTableSpecificationContext ctx) {
427 RenameTableDefinitionSegment result = new RenameTableDefinitionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
428 TableNameSegment tableName = new TableNameSegment(ctx.identifier().start.getStartIndex(), ctx.identifier().stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
429 result.setRenameTable(new SimpleTableSegment(tableName));
430 return result;
431 }
432
433 @Override
434 public ASTNode visitAddColumnSpecification(final AddColumnSpecificationContext ctx) {
435 CollectionValue<AddColumnDefinitionSegment> result = new CollectionValue<>();
436 ColumnDefinitionContext columnDefinition = ctx.columnDefinition();
437 if (null != columnDefinition) {
438 AddColumnDefinitionSegment addColumnDefinition = new AddColumnDefinitionSegment(
439 ctx.columnDefinition().getStart().getStartIndex(), columnDefinition.getStop().getStopIndex(), Collections.singleton((ColumnDefinitionSegment) visit(columnDefinition)));
440 result.getValue().add(addColumnDefinition);
441 }
442 return result;
443 }
444
445 @Override
446 public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
447 ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
448 DataTypeSegment dataType = (DataTypeSegment) visit(ctx.dataType());
449 boolean isPrimaryKey = ctx.columnConstraint().stream().anyMatch(each -> null != each.columnConstraintOption() && null != each.columnConstraintOption().primaryKey());
450
451 ColumnDefinitionSegment result = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, isPrimaryKey, false, getText(ctx));
452 for (ColumnConstraintContext each : ctx.columnConstraint()) {
453 if (null != each.columnConstraintOption().tableName()) {
454 result.getReferencedTables().add((SimpleTableSegment) visit(each.columnConstraintOption().tableName()));
455 }
456 }
457 return result;
458 }
459
460 private String getText(final ParserRuleContext ctx) {
461 return ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
462 }
463
464 @Override
465 public ASTNode visitTableConstraintUsingIndex(final TableConstraintUsingIndexContext ctx) {
466 ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
467 if (null != ctx.constraintName()) {
468 result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
469 }
470 if (null != ctx.indexName()) {
471 result.setIndexName((IndexSegment) visit(ctx.indexName()));
472 }
473 return result;
474 }
475
476 @SuppressWarnings("unchecked")
477 @Override
478 public ASTNode visitTableConstraint(final TableConstraintContext ctx) {
479 ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
480 if (null != ctx.constraintClause()) {
481 result.setConstraintName((ConstraintSegment) visit(ctx.constraintClause().constraintName()));
482 }
483 if (null != ctx.tableConstraintOption().primaryKey()) {
484 result.getPrimaryKeyColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.tableConstraintOption().columnNames(0))).getValue());
485 }
486 if (null != ctx.tableConstraintOption().FOREIGN()) {
487 result.setReferencedTable((SimpleTableSegment) visit(ctx.tableConstraintOption().tableName()));
488 }
489 return result;
490 }
491
492 @Override
493 public ASTNode visitModifyColumnSpecification(final ModifyColumnSpecificationContext ctx) {
494
495 ColumnSegment column = (ColumnSegment) visit(ctx.modifyColumn().columnName());
496 DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType());
497 ColumnDefinitionSegment columnDefinition = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, false, false, getText(ctx));
498 return new ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinition);
499 }
500
501 @Override
502 public ASTNode visitDropColumnSpecification(final DropColumnSpecificationContext ctx) {
503 return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), Collections.singleton((ColumnSegment) visit(ctx.columnName())));
504 }
505
506 @Override
507 public ASTNode visitRenameColumnSpecification(final RenameColumnSpecificationContext ctx) {
508 return new RenameColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ColumnSegment) visit(ctx.columnName(0)), (ColumnSegment) visit(ctx.columnName(1)));
509 }
510
511 @SuppressWarnings("unchecked")
512 @Override
513 public ASTNode visitDropTable(final DropTableContext ctx) {
514 boolean containsCascade = null != ctx.dropTableOpt() && null != ctx.dropTableOpt().CASCADE();
515 DropTableStatement result = new DropTableStatement();
516 result.setIfExists(null != ctx.ifExists());
517 result.setContainsCascade(containsCascade);
518 result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
519 return result;
520 }
521
522 @SuppressWarnings("unchecked")
523 @Override
524 public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
525 return new TruncateStatement(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNamesClause())).getValue());
526 }
527
528 @SuppressWarnings("unchecked")
529 @Override
530 public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
531 CreateIndexStatement result = new CreateIndexStatement();
532 result.setIfNotExists(null != ctx.ifNotExists());
533 result.setTable((SimpleTableSegment) visit(ctx.tableName()));
534 result.getColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.indexParams())).getValue());
535 if (null == ctx.indexName()) {
536 result.setAnonymousIndexStartIndex(ctx.ON().getSymbol().getStartIndex() - 1);
537 } else {
538 result.setIndex((IndexSegment) visit(ctx.indexName()));
539 }
540 return result;
541 }
542
543 @Override
544 public ASTNode visitIndexParams(final IndexParamsContext ctx) {
545 CollectionValue<ColumnSegment> result = new CollectionValue<>();
546 for (IndexElemContext each : ctx.indexElem()) {
547 if (null != each.colId()) {
548 result.getValue().add(new ColumnSegment(each.colId().start.getStartIndex(), each.colId().stop.getStopIndex(), new IdentifierValue(each.colId().getText())));
549 }
550 if (null != each.functionExprWindowless()) {
551 FunctionSegment functionSegment = (FunctionSegment) visit(each.functionExprWindowless());
552 functionSegment.getParameters().forEach(param -> {
553 if (param instanceof ColumnSegment) {
554 result.getValue().add((ColumnSegment) param);
555 }
556 });
557 }
558 }
559 return result;
560 }
561
562 @Override
563 public ASTNode visitFunctionExprWindowless(final FunctionExprWindowlessContext ctx) {
564 FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.funcApplication().funcName().getText(), getOriginalText(ctx));
565 result.getParameters().addAll(getExpressions(ctx.funcApplication().funcArgList().funcArgExpr()));
566 return result;
567 }
568
569 private Collection<ExpressionSegment> getExpressions(final Collection<FuncArgExprContext> aExprContexts) {
570 if (null == aExprContexts) {
571 return Collections.emptyList();
572 }
573 Collection<ExpressionSegment> result = new ArrayList<>(aExprContexts.size());
574 for (FuncArgExprContext each : aExprContexts) {
575 result.add((ExpressionSegment) visit(each.aExpr()));
576 }
577 return result;
578 }
579
580 @Override
581 public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
582 AlterIndexStatement result = new AlterIndexStatement();
583 result.setIndex(createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())));
584 if (null != ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
585 result.setRenameIndex((IndexSegment) visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
586 }
587 return result;
588 }
589
590 private IndexSegment createIndexSegment(final SimpleTableSegment tableSegment) {
591 IndexNameSegment indexName = new IndexNameSegment(tableSegment.getTableName().getStartIndex(), tableSegment.getTableName().getStopIndex(), tableSegment.getTableName().getIdentifier());
592 IndexSegment result = new IndexSegment(tableSegment.getStartIndex(), tableSegment.getStopIndex(), indexName);
593 tableSegment.getOwner().ifPresent(result::setOwner);
594 return result;
595 }
596
597 @SuppressWarnings("unchecked")
598 @Override
599 public ASTNode visitDropIndex(final DropIndexContext ctx) {
600 DropIndexStatement result = new DropIndexStatement();
601 result.setIfExists(null != ctx.ifExists());
602 result.getIndexes().addAll(createIndexSegments(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue()));
603 return result;
604 }
605
606 private Collection<IndexSegment> createIndexSegments(final Collection<SimpleTableSegment> tableSegments) {
607 Collection<IndexSegment> result = new LinkedList<>();
608 for (SimpleTableSegment each : tableSegments) {
609 result.add(createIndexSegment(each));
610 }
611 return result;
612 }
613
614 @Override
615 public ASTNode visitIndexNames(final IndexNamesContext ctx) {
616 CollectionValue<IndexSegment> result = new CollectionValue<>();
617 for (IndexNameContext each : ctx.indexName()) {
618 result.getValue().add((IndexSegment) visit(each));
619 }
620 return result;
621 }
622
623 @Override
624 public ASTNode visitTableNameClause(final TableNameClauseContext ctx) {
625 return visit(ctx.tableName());
626 }
627
628 @Override
629 public ASTNode visitTableNamesClause(final TableNamesClauseContext ctx) {
630 Collection<SimpleTableSegment> tableSegments = new LinkedList<>();
631 for (int i = 0; i < ctx.tableNameClause().size(); i++) {
632 tableSegments.add((SimpleTableSegment) visit(ctx.tableNameClause(i)));
633 }
634 CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
635 result.getValue().addAll(tableSegments);
636 return result;
637 }
638
639 @Override
640 public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
641 return new AlterFunctionStatement();
642 }
643
644 @Override
645 public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
646 return new AlterProcedureStatement();
647 }
648
649 @Override
650 public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
651 return new CreateFunctionStatement();
652 }
653
654 @Override
655 public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
656 return new CreateProcedureStatement();
657 }
658
659 @Override
660 public ASTNode visitDropFunction(final DropFunctionContext ctx) {
661 return new DropFunctionStatement();
662 }
663
664 @SuppressWarnings("unchecked")
665 @Override
666 public ASTNode visitDropView(final DropViewContext ctx) {
667 DropViewStatement result = new DropViewStatement();
668 result.setIfExists(null != ctx.ifExists());
669 result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue());
670 return result;
671 }
672
673 @Override
674 public ASTNode visitCreateView(final CreateViewContext ctx) {
675 CreateViewStatement result = new CreateViewStatement();
676 result.setReplaceView(null != ctx.REPLACE());
677 result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
678 result.setViewDefinition(getOriginalText(ctx.select()));
679 result.setSelect((SelectStatement) visit(ctx.select()));
680 return result;
681 }
682
683 @Override
684 public ASTNode visitAlterView(final AlterViewContext ctx) {
685 AlterViewStatement result = new AlterViewStatement();
686 result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
687 if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
688 NameContext nameContext = ((AlterRenameViewContext) ctx.alterViewClauses()).name();
689 result.setRenameView(
690 new SimpleTableSegment(new TableNameSegment(nameContext.getStart().getStartIndex(), nameContext.getStop().getStopIndex(), (IdentifierValue) visit(nameContext.identifier()))));
691 }
692 return result;
693 }
694
695 @Override
696 public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
697 return new DropDatabaseStatement(((IdentifierValue) visit(ctx.name())).getValue(), null != ctx.ifExists());
698 }
699
700 @Override
701 public ASTNode visitDropServer(final DropServerContext ctx) {
702 return new DropServerStatement();
703 }
704
705 @Override
706 public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
707 return new DropProcedureStatement();
708 }
709
710 @Override
711 public ASTNode visitDropPublication(final DropPublicationContext ctx) {
712 return new PostgreSQLDropPublicationStatement();
713 }
714
715 @Override
716 public ASTNode visitDropCast(final DropCastContext ctx) {
717 return new PostgreSQLDropCastStatement();
718 }
719
720 @Override
721 public ASTNode visitDropRule(final DropRuleContext ctx) {
722 return new PostgreSQLDropRuleStatement();
723 }
724
725 @Override
726 public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
727 return new CreateDatabaseStatement(((IdentifierValue) visit(ctx.name())).getValue(), false);
728 }
729
730 @Override
731 public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
732 return new CreateSequenceStatement(((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
733 }
734
735 @Override
736 public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
737 return new AlterSequenceStatement(((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
738 }
739
740 @SuppressWarnings({"unchecked", "rawtypes"})
741 @Override
742 public ASTNode visitDropSequence(final DropSequenceContext ctx) {
743 return new DropSequenceStatement(((CollectionValue) visit(ctx.qualifiedNameList())).getValue());
744 }
745
746 @Override
747 public ASTNode visitDropSynonym(final DropSynonymContext ctx) {
748 return new DropSynonymStatement();
749 }
750
751 @Override
752 public ASTNode visitDropType(final DropTypeContext ctx) {
753 return new PostgreSQLDropTypeStatement();
754 }
755
756 @Override
757 public ASTNode visitDropDirectory(final DropDirectoryContext ctx) {
758 return new DropDirectoryStatement();
759 }
760
761 @Override
762 public ASTNode visitPrepare(final PrepareContext ctx) {
763 PrepareStatement result = new PrepareStatement();
764 if (null != ctx.preparableStmt().select()) {
765 result.setSelect((SelectStatement) visit(ctx.preparableStmt().select()));
766 }
767 if (null != ctx.preparableStmt().insert()) {
768 result.setInsert((InsertStatement) visit(ctx.preparableStmt().insert()));
769 }
770 if (null != ctx.preparableStmt().update()) {
771 result.setUpdate((UpdateStatement) visit(ctx.preparableStmt().update()));
772 }
773 if (null != ctx.preparableStmt().delete()) {
774 result.setDelete((DeleteStatement) visit(ctx.preparableStmt().delete()));
775 }
776 return result;
777 }
778
779 @Override
780 public ASTNode visitDeallocate(final DeallocateContext ctx) {
781 return new DeallocateStatement();
782 }
783
784 @Override
785 public ASTNode visitCreateSynonym(final CreateSynonymContext ctx) {
786 return new CreateSynonymStatement();
787 }
788
789 @Override
790 public ASTNode visitCreateAggregate(final CreateAggregateContext ctx) {
791 return new PostgreSQLCreateAggregateStatement();
792 }
793
794 @Override
795 public ASTNode visitCreatePublication(final CreatePublicationContext ctx) {
796 return new PostgreSQLCreatePublicationStatement();
797 }
798
799 @Override
800 public ASTNode visitCreateDirectory(final CreateDirectoryContext ctx) {
801 return new CreateDirectoryStatement();
802 }
803
804 @Override
805 public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
806 return new CreateTablespaceStatement();
807 }
808
809 @Override
810 public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
811 return new AlterTablespaceStatement(null, null);
812 }
813
814 @Override
815 public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
816 return new DropTablespaceStatement();
817 }
818
819 @Override
820 public ASTNode visitDropDomain(final DropDomainContext ctx) {
821 return new PostgreSQLDropDomainStatement();
822 }
823
824 @Override
825 public ASTNode visitCreateDomain(final CreateDomainContext ctx) {
826 return new CreateDomainStatement();
827 }
828
829 @Override
830 public ASTNode visitCreateRule(final CreateRuleContext ctx) {
831 return new PostgreSQLCreateRuleStatement();
832 }
833
834 @Override
835 public ASTNode visitCreateLanguage(final CreateLanguageContext ctx) {
836 return new PostgreSQLCreateLanguageStatement();
837 }
838
839 @Override
840 public ASTNode visitCreateSchema(final CreateSchemaContext ctx) {
841 CreateSchemaStatement result = new CreateSchemaStatement();
842 if (null != ctx.createSchemaClauses().colId()) {
843 result.setSchemaName(new IdentifierValue(ctx.createSchemaClauses().colId().getText()));
844 }
845 if (null != ctx.createSchemaClauses().roleSpec() && null != ctx.createSchemaClauses().roleSpec().identifier()) {
846 result.setUsername((IdentifierValue) visit(ctx.createSchemaClauses().roleSpec().identifier()));
847 }
848 return result;
849 }
850
851 @Override
852 public ASTNode visitAlterSchema(final AlterSchemaContext ctx) {
853 AlterSchemaStatement result = new AlterSchemaStatement();
854 result.setSchemaName((IdentifierValue) visit(ctx.name().get(0)));
855 if (ctx.name().size() > 1) {
856 result.setRenameSchema((IdentifierValue) visit(ctx.name().get(1)));
857 }
858 return result;
859 }
860
861 @SuppressWarnings("unchecked")
862 @Override
863 public ASTNode visitDropSchema(final DropSchemaContext ctx) {
864 DropSchemaStatement result = new DropSchemaStatement();
865 result.getSchemaNames().addAll(((CollectionValue<IdentifierValue>) visit(ctx.nameList())).getValue());
866 result.setContainsCascade(null != ctx.dropBehavior() && null != ctx.dropBehavior().CASCADE());
867 return result;
868 }
869
870 @SuppressWarnings("unchecked")
871 @Override
872 public ASTNode visitNameList(final NameListContext ctx) {
873 CollectionValue<IdentifierValue> result = new CollectionValue<>();
874 if (null != ctx.nameList()) {
875 result.combine((CollectionValue<IdentifierValue>) visit(ctx.nameList()));
876 }
877 if (null != ctx.name()) {
878 result.getValue().add((IdentifierValue) visit(ctx.name()));
879 }
880 return result;
881 }
882
883 @Override
884 public ASTNode visitAlterLanguage(final AlterLanguageContext ctx) {
885 return new PostgreSQLAlterLanguageStatement();
886 }
887
888 @Override
889 public ASTNode visitAlterSynonym(final AlterSynonymContext ctx) {
890 return new AlterSynonymStatement();
891 }
892
893 @Override
894 public ASTNode visitAlterDirectory(final AlterDirectoryContext ctx) {
895 return new OpenGaussAlterDirectoryStatement();
896 }
897
898 @Override
899 public ASTNode visitAlterRule(final AlterRuleContext ctx) {
900 return new PostgreSQLAlterRuleStatement();
901 }
902
903 @Override
904 public ASTNode visitAlterType(final AlterTypeContext ctx) {
905 return new AlterTypeStatement();
906 }
907
908 @Override
909 public ASTNode visitDropLanguage(final DropLanguageContext ctx) {
910 return new PostgreSQLDropLanguageStatement();
911 }
912
913 @Override
914 public ASTNode visitCreateConversion(final CreateConversionContext ctx) {
915 return new PostgreSQLCreateConversionStatement();
916 }
917
918 @Override
919 public ASTNode visitCreateCast(final CreateCastContext ctx) {
920 return new PostgreSQLCreateCastStatement();
921 }
922
923 @Override
924 public ASTNode visitCreateType(final CreateTypeContext ctx) {
925 return new CreateTypeStatement();
926 }
927
928 @Override
929 public ASTNode visitDropConversion(final DropConversionContext ctx) {
930 return new PostgreSQLDropConversionStatement();
931 }
932
933 @Override
934 public ASTNode visitAlterConversion(final AlterConversionContext ctx) {
935 return new PostgreSQLAlterConversionStatement();
936 }
937
938 @Override
939 public ASTNode visitCreateTextSearch(final CreateTextSearchContext ctx) {
940 return new PostgreSQLCreateTextSearchStatement();
941 }
942
943 @Override
944 public ASTNode visitAlterTextSearchDictionary(final AlterTextSearchDictionaryContext ctx) {
945 return new PostgreSQLAlterTextSearchStatement();
946 }
947
948 @Override
949 public ASTNode visitAlterTextSearchTemplate(final AlterTextSearchTemplateContext ctx) {
950 return new PostgreSQLAlterTextSearchStatement();
951 }
952
953 @Override
954 public ASTNode visitAlterTextSearchParser(final AlterTextSearchParserContext ctx) {
955 return new PostgreSQLAlterTextSearchStatement();
956 }
957
958 @Override
959 public ASTNode visitCreateExtension(final CreateExtensionContext ctx) {
960 return new PostgreSQLCreateExtensionStatement();
961 }
962
963 @Override
964 public ASTNode visitAlterExtension(final AlterExtensionContext ctx) {
965 return new PostgreSQLAlterExtensionStatement();
966 }
967
968 @Override
969 public ASTNode visitDropExtension(final DropExtensionContext ctx) {
970 return new PostgreSQLDropExtensionStatement();
971 }
972
973 @Override
974 public ASTNode visitDeclare(final DeclareContext ctx) {
975 return new PostgreSQLDeclareStatement((CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
976 }
977
978 @Override
979 public ASTNode visitComment(final CommentContext ctx) {
980 if (null != ctx.commentClauses().objectTypeAnyName() && null != ctx.commentClauses().objectTypeAnyName().TABLE()) {
981 return commentOnTable(ctx);
982 }
983 if (null != ctx.commentClauses().COLUMN()) {
984 return commentOnColumn(ctx);
985 }
986 return new CommentStatement();
987 }
988
989 @SuppressWarnings("unchecked")
990 private CommentStatement commentOnColumn(final CommentContext ctx) {
991 CommentStatement result = new CommentStatement();
992 Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
993 Optional<NameSegment> columnName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
994 columnName.ifPresent(optional -> result.setColumn(new ColumnSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
995 result.setComment(new IdentifierValue(ctx.commentClauses().commentText().getText()));
996 setTableSegment(result, nameSegmentIterator);
997 return result;
998 }
999
1000 @SuppressWarnings("unchecked")
1001 private CommentStatement commentOnTable(final CommentContext ctx) {
1002 CommentStatement result = new CommentStatement();
1003 Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
1004 result.setComment(new IdentifierValue(ctx.commentClauses().commentText().getText()));
1005 setTableSegment(result, nameSegmentIterator);
1006 return result;
1007 }
1008
1009 private void setTableSegment(final CommentStatement statement, final Iterator<NameSegment> nameSegmentIterator) {
1010 Optional<NameSegment> tableName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
1011 tableName.ifPresent(optional -> statement.setTable(new SimpleTableSegment(new TableNameSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier()))));
1012 Optional<NameSegment> schemaName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
1013 schemaName.ifPresent(optional -> statement.getTable().setOwner(new OwnerSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
1014 Optional<NameSegment> databaseName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
1015 databaseName.ifPresent(optional -> statement.getTable().getOwner()
1016 .ifPresent(owner -> owner.setOwner(new OwnerSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier()))));
1017 }
1018
1019 @Override
1020 public ASTNode visitCursor(final CursorContext ctx) {
1021 return new CursorStatement((CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
1022 }
1023
1024 @Override
1025 public ASTNode visitCursorName(final CursorNameContext ctx) {
1026 return new CursorNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.name()));
1027 }
1028
1029 @Override
1030 public ASTNode visitClose(final CloseContext ctx) {
1031 return new CloseStatement(null == ctx.cursorName() ? null : (CursorNameSegment) visit(ctx.cursorName()), null != ctx.ALL());
1032 }
1033
1034 @Override
1035 public ASTNode visitMove(final MoveContext ctx) {
1036 return new MoveStatement((CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
1037 }
1038
1039 @Override
1040 public ASTNode visitFetch(final FetchContext ctx) {
1041 return new FetchStatement((CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
1042 }
1043
1044 @Override
1045 public ASTNode visitNext(final NextContext ctx) {
1046 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.NEXT);
1047 }
1048
1049 @Override
1050 public ASTNode visitPrior(final PriorContext ctx) {
1051 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.PRIOR);
1052 }
1053
1054 @Override
1055 public ASTNode visitFirst(final FirstContext ctx) {
1056 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FIRST);
1057 }
1058
1059 @Override
1060 public ASTNode visitLast(final LastContext ctx) {
1061 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.LAST);
1062 }
1063
1064 @Override
1065 public ASTNode visitAbsoluteCount(final AbsoluteCountContext ctx) {
1066 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.ABSOLUTE_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
1067 }
1068
1069 @Override
1070 public ASTNode visitRelativeCount(final RelativeCountContext ctx) {
1071 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.RELATIVE_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
1072 }
1073
1074 @Override
1075 public ASTNode visitCount(final CountContext ctx) {
1076 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
1077 }
1078
1079 @Override
1080 public ASTNode visitAll(final AllContext ctx) {
1081 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.ALL);
1082 }
1083
1084 @Override
1085 public ASTNode visitForward(final ForwardContext ctx) {
1086 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FORWARD);
1087 }
1088
1089 @Override
1090 public ASTNode visitForwardCount(final ForwardCountContext ctx) {
1091 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FORWARD_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
1092 }
1093
1094 @Override
1095 public ASTNode visitForwardAll(final ForwardAllContext ctx) {
1096 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FORWARD_ALL);
1097 }
1098
1099 @Override
1100 public ASTNode visitBackward(final BackwardContext ctx) {
1101 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.BACKWARD);
1102 }
1103
1104 @Override
1105 public ASTNode visitBackwardCount(final BackwardCountContext ctx) {
1106 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.BACKWARD_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
1107 }
1108
1109 @Override
1110 public ASTNode visitBackwardAll(final BackwardAllContext ctx) {
1111 return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.BACKWARD_ALL);
1112 }
1113 }