You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ch...@apache.org on 2023/06/01 01:06:20 UTC
[shardingsphere] branch master updated: Fix sonar issue on OpenGaussDDLStatementVisitor (#25972)
This is an automated email from the ASF dual-hosted git repository.
chengzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 77026585ba1 Fix sonar issue on OpenGaussDDLStatementVisitor (#25972)
77026585ba1 is described below
commit 77026585ba16d4a0440af1ac50d3af1ab78942f8
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Thu Jun 1 09:06:12 2023 +0800
Fix sonar issue on OpenGaussDDLStatementVisitor (#25972)
* Fix sonar issue on OpenGaussDDLStatementVisitor
* Fix sonar issue on OpenGaussStatementVisitor
* Fix sonar issue on MySQLDDLStatementVisitor
* Fix sonar issue on MySQLDDLStatementVisitor
* Fix sonar issue on MySQLStatementVisitor
* Fix sonar issue on ComputeNodeStateChangedWatcher
* Fix sonar issue on PostgreSQLColumnPropertiesAppender
* Add PostgreSQLColumnTypeTest
* Fix sonar issue on DataConsistencyCheckUtils
---
.../consistency/DataConsistencyCheckUtils.java | 27 ++--
.../PostgreSQLColumnPropertiesAppender.java | 141 ++++++++++-----------
.../ddlgenerator/PostgreSQLColumnType.java | 57 +++++++++
.../ddlgenerator/PostgreSQLColumnTypeTest.java | 41 ++++++
.../watcher/ComputeNodeStateChangedWatcher.java | 26 ++--
.../visitor/statement/MySQLStatementVisitor.java | 14 +-
.../statement/type/MySQLDDLStatementVisitor.java | 105 ++++++++-------
.../statement/OpenGaussStatementVisitor.java | 75 ++++++-----
.../type/OpenGaussDDLStatementVisitor.java | 56 ++++----
9 files changed, 333 insertions(+), 209 deletions(-)
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/DataConsistencyCheckUtils.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/DataConsistencyCheckUtils.java
index 6ac7331ccb3..3131eac0c12 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/DataConsistencyCheckUtils.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/DataConsistencyCheckUtils.java
@@ -55,25 +55,28 @@ public final class DataConsistencyCheckUtils {
++columnIndex;
Object thisColumnValue = thisRecordIterator.next();
Object thatColumnValue = thatRecordIterator.next();
- boolean matched;
- if (thisColumnValue instanceof SQLXML && thatColumnValue instanceof SQLXML) {
- matched = ((SQLXML) thisColumnValue).getString().equals(((SQLXML) thatColumnValue).getString());
- } else if (thisColumnValue instanceof BigDecimal && thatColumnValue instanceof BigDecimal) {
- matched = isBigDecimalEquals((BigDecimal) thisColumnValue, (BigDecimal) thatColumnValue);
- } else if (thisColumnValue instanceof Array && thatColumnValue instanceof Array) {
- matched = Objects.deepEquals(((Array) thisColumnValue).getArray(), ((Array) thatColumnValue).getArray());
- } else {
- matched = equalsBuilder.append(thisColumnValue, thatColumnValue).isEquals();
- }
- if (!matched) {
+ if (!isMatched(equalsBuilder, thisColumnValue, thatColumnValue)) {
log.warn("Record column value not match, columnIndex={}, value1={}, value2={}, value1.class={}, value2.class={}.", columnIndex, thisColumnValue, thatColumnValue,
- null != thisColumnValue ? thisColumnValue.getClass().getName() : "", null != thatColumnValue ? thatColumnValue.getClass().getName() : "");
+ null != thisColumnValue ? thisColumnValue.getClass().getName() : "", null == thatColumnValue ? "" : thatColumnValue.getClass().getName());
return false;
}
}
return true;
}
+ private static boolean isMatched(final EqualsBuilder equalsBuilder, final Object thisColumnValue, final Object thatColumnValue) throws SQLException {
+ if (thisColumnValue instanceof SQLXML && thatColumnValue instanceof SQLXML) {
+ return ((SQLXML) thisColumnValue).getString().equals(((SQLXML) thatColumnValue).getString());
+ }
+ if (thisColumnValue instanceof BigDecimal && thatColumnValue instanceof BigDecimal) {
+ return isBigDecimalEquals((BigDecimal) thisColumnValue, (BigDecimal) thatColumnValue);
+ }
+ if (thisColumnValue instanceof Array && thatColumnValue instanceof Array) {
+ return Objects.deepEquals(((Array) thisColumnValue).getArray(), ((Array) thatColumnValue).getArray());
+ }
+ return equalsBuilder.append(thisColumnValue, thatColumnValue).isEquals();
+ }
+
/**
* Check two BigDecimal whether equals or not.
*
diff --git a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java
index 921682d057c..b66f9e8158d 100644
--- a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java
+++ b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java
@@ -52,7 +52,7 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
/**
* Append column properties.
*
- * @param context create table sql context
+ * @param context create table SQL context
*/
@SneakyThrows(SQLException.class)
public void append(final Map<String, Object> context) {
@@ -78,14 +78,22 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
if (null != context.get("typoid")) {
return getColumnFromType(context);
}
- if (null != context.get("coll_inherits")) {
- Collection<String> collInherits = convertPgArrayToList(context.get("coll_inherits"));
- context.put("coll_inherits", collInherits);
- if (!collInherits.isEmpty()) {
- return getColumnFromInherits(collInherits);
- }
+ if (null == context.get("coll_inherits")) {
+ return Collections.emptyList();
}
- return Collections.emptyList();
+ Collection<String> collInherits = toCollection((Array) context.get("coll_inherits"));
+ context.put("coll_inherits", collInherits);
+ return collInherits.isEmpty() ? Collections.emptyList() : getColumnFromInherits(collInherits);
+ }
+
+ private Collection<Map<String, Object>> getColumnFromType(final Map<String, Object> context) {
+ Map<String, Object> params = new LinkedHashMap<>();
+ params.put("tid", context.get("typoid"));
+ return executeByTemplate(params, "component/table/%s/get_columns_for_table.ftl");
+ }
+
+ private Collection<String> toCollection(final Array array) throws SQLException {
+ return Arrays.stream((String[]) array.getArray()).collect(Collectors.toList());
}
private Collection<Map<String, Object>> getColumnFromInherits(final Collection<String> collInherits) {
@@ -100,12 +108,6 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
return result;
}
- private Collection<Map<String, Object>> getColumnFromType(final Map<String, Object> context) {
- Map<String, Object> params = new LinkedHashMap<>();
- params.put("tid", context.get("typoid"));
- return executeByTemplate(params, "component/table/%s/get_columns_for_table.ftl");
- }
-
@SuppressWarnings("unchecked")
private String getInheritedFromTableOrType(final Map<String, Object> context) {
String result = "inheritedfrom";
@@ -117,22 +119,18 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
return result;
}
- private Collection<String> convertPgArrayToList(final Object array) throws SQLException {
- return Arrays.stream((String[]) ((Array) array).getArray()).collect(Collectors.toList());
- }
-
private Map<String, Collection<String>> getEditTypes(final Collection<Map<String, Object>> allColumns) throws SQLException {
Map<String, Collection<String>> result = new LinkedHashMap<>();
Map<String, Object> params = new LinkedHashMap<>();
params.put("type_ids", allColumns.stream().map(each -> each.get("atttypid").toString()).collect(Collectors.joining(",")));
for (Map<String, Object> each : executeByTemplate(params, "component/columns/%s/edit_mode_types_multi.ftl")) {
- result.put(each.get("main_oid").toString(), covertPgArrayAndSort(each.get("edit_types")));
+ result.put(each.get("main_oid").toString(), toCollectionAndSort((Array) each.get("edit_types")));
}
return result;
}
- private Collection<String> covertPgArrayAndSort(final Object editTypes) throws SQLException {
- return Arrays.stream((String[]) ((Array) editTypes).getArray()).sorted(String::compareTo).collect(Collectors.toList());
+ private Collection<String> toCollectionAndSort(final Array editTypes) throws SQLException {
+ return Arrays.stream((String[]) editTypes.getArray()).sorted(String::compareTo).collect(Collectors.toList());
}
private void columnFormatter(final Map<String, Object> column, final Collection<String> editTypes) throws SQLException {
@@ -146,14 +144,15 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
}
private void handlePrimaryColumn(final Map<String, Object> column) {
- if (null != column.get("attnum") && null != column.get("indkey")) {
- if (Arrays.stream(column.get("indkey").toString().split(" ")).collect(Collectors.toList()).contains(column.get("attnum").toString())) {
- column.put("is_pk", true);
- column.put("is_primary_key", true);
- } else {
- column.put("is_pk", false);
- column.put("is_primary_key", false);
- }
+ if (null == column.get("attnum") || null == column.get("indkey")) {
+ return;
+ }
+ if (Arrays.stream(column.get("indkey").toString().split(" ")).collect(Collectors.toList()).contains(column.get("attnum").toString())) {
+ column.put("is_pk", true);
+ column.put("is_primary_key", true);
+ } else {
+ column.put("is_pk", false);
+ column.put("is_primary_key", false);
}
}
@@ -165,58 +164,33 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
}
private void handleLengthPrecision(final Long elemoid, final Map<String, Object> column, final String fullType) {
- boolean precision = false;
- boolean length = false;
- String typeval = "";
- Long[] lTypes = {1560L, 1561L, 1562L, 1563L, 1042L, 1043L, 1014L, 1015L};
- Long[] dTypes = {1083L, 1114L, 1115L, 1183L, 1184L, 1185L, 1186L, 1187L, 1266L, 1270L};
- Long[] pTypes = {1231L, 1700L};
- if (0 != elemoid) {
- if (Arrays.asList(lTypes).contains(elemoid)) {
- typeval = "L";
- } else if (Arrays.asList(dTypes).contains(elemoid)) {
- typeval = "D";
- } else if (Arrays.asList(pTypes).contains(elemoid)) {
- typeval = "P";
- } else {
- typeval = " ";
- }
- }
- if ("P".equals(typeval)) {
- precision = true;
- }
- if (precision || "L".equals(typeval) || "D".equals(typeval)) {
- length = true;
- }
-
- if (length && precision) {
- Matcher matcher = LENGTH_PRECISION_PATTERN.matcher(fullType);
- if (matcher.find()) {
- column.put("attlen", matcher.group(1));
- column.put("attprecision", matcher.group(2));
- }
- } else if (length) {
- Matcher matcher = LENGTH_PATTERN.matcher(fullType);
- if (matcher.find()) {
- column.put("attlen", matcher.group(1));
- column.put("attprecision", null);
- }
+ switch (PostgreSQLColumnType.valueOf(elemoid)) {
+ case NUMERIC:
+ setColumnPrecision(column, fullType);
+ break;
+ case DATE:
+ case VARCHAR:
+ setColumnLength(column, fullType);
+ break;
+ default:
+ break;
}
}
- private void formatColumnVariables(final Map<String, Object> column) throws SQLException {
- if (null == column.get("attoptions")) {
- return;
+ private void setColumnPrecision(final Map<String, Object> column, final String fullType) {
+ Matcher matcher = LENGTH_PRECISION_PATTERN.matcher(fullType);
+ if (matcher.find()) {
+ column.put("attlen", matcher.group(1));
+ column.put("attprecision", matcher.group(2));
}
- Collection<Map<String, String>> attOptions = new LinkedList<>();
- Collection<String> columnVariables = Arrays.stream((String[]) ((Array) column.get("attoptions")).getArray()).collect(Collectors.toList());
- for (String each : columnVariables) {
- Map<String, String> columnVariable = new LinkedHashMap<>();
- columnVariable.put("name", each.substring(0, each.indexOf(ATT_OPTION_SPLIT)));
- columnVariable.put("value", each.substring(each.indexOf(ATT_OPTION_SPLIT) + 1));
- attOptions.add(columnVariable);
+ }
+
+ private static void setColumnLength(final Map<String, Object> column, final String fullType) {
+ Matcher matcher = LENGTH_PATTERN.matcher(fullType);
+ if (matcher.find()) {
+ column.put("attlen", matcher.group(1));
+ column.put("attprecision", null);
}
- column.put("attoptions", attOptions);
}
private String getFullDataType(final Map<String, Object> column) {
@@ -308,6 +282,21 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
return result;
}
+ private void formatColumnVariables(final Map<String, Object> column) throws SQLException {
+ if (null == column.get("attoptions")) {
+ return;
+ }
+ Collection<Map<String, String>> attOptions = new LinkedList<>();
+ Collection<String> columnVariables = Arrays.stream((String[]) ((Array) column.get("attoptions")).getArray()).collect(Collectors.toList());
+ for (String each : columnVariables) {
+ Map<String, String> columnVariable = new LinkedHashMap<>();
+ columnVariable.put("name", each.substring(0, each.indexOf(ATT_OPTION_SPLIT)));
+ columnVariable.put("value", each.substring(each.indexOf(ATT_OPTION_SPLIT) + 1));
+ attOptions.add(columnVariable);
+ }
+ column.put("attoptions", attOptions);
+ }
+
private String parseTypeName(final String name) {
String result = name;
boolean isArray = false;
diff --git a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnType.java b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnType.java
new file mode 100644
index 00000000000..3266e468f8b
--- /dev/null
+++ b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnType.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.data.pipeline.postgresql.ddlgenerator;
+
+import lombok.RequiredArgsConstructor;
+
+import java.util.Arrays;
+
+/**
+ * Column type for PostgreSQL.
+ */
+@RequiredArgsConstructor
+public enum PostgreSQLColumnType {
+
+ NUMERIC(new Long[] {1231L, 1700L}),
+
+ DATE(new Long[] {1083L, 1114L, 1115L, 1183L, 1184L, 1185L, 1186L, 1187L, 1266L, 1270L}),
+
+ VARCHAR(new Long[] {1560L, 1561L, 1562L, 1563L, 1042L, 1043L, 1014L, 1015L}),
+
+ UNKNOWN(new Long[] {});
+
+ private final Long[] values;
+
+ /**
+ * Get value of column type.
+ *
+ * @param elemoid elemoid
+ * @return value of column type
+ */
+ public static PostgreSQLColumnType valueOf(final Long elemoid) {
+ if (0 == elemoid) {
+ return UNKNOWN;
+ }
+ for (PostgreSQLColumnType each : values()) {
+ if (Arrays.asList(each.values).contains(elemoid)) {
+ return each;
+ }
+ }
+ return UNKNOWN;
+ }
+}
diff --git a/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnTypeTest.java b/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnTypeTest.java
new file mode 100644
index 00000000000..1dd355f361e
--- /dev/null
+++ b/kernel/data-pipeline/dialect/postgresql/src/test/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnTypeTest.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.data.pipeline.postgresql.ddlgenerator;
+
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+
+class PostgreSQLColumnTypeTest {
+
+ @Test
+ void assertValueOfZeroValue() {
+ assertThat(PostgreSQLColumnType.valueOf(0L), is(PostgreSQLColumnType.UNKNOWN));
+ }
+
+ @Test
+ void assertValueOfFoundValue() {
+ assertThat(PostgreSQLColumnType.valueOf(1231L), is(PostgreSQLColumnType.NUMERIC));
+ }
+
+ @Test
+ void assertValueOfNotExistedValue() {
+ assertThat(PostgreSQLColumnType.valueOf(1L), is(PostgreSQLColumnType.UNKNOWN));
+ }
+}
diff --git a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java
index bcaa8b1cd77..5661801e3c6 100644
--- a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java
+++ b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/status/compute/watcher/ComputeNodeStateChangedWatcher.java
@@ -61,19 +61,13 @@ public final class ComputeNodeStateChangedWatcher implements GovernanceWatcher<G
return Arrays.asList(Type.ADDED, Type.UPDATED, Type.DELETED);
}
- @SuppressWarnings("unchecked")
@Override
public Optional<GovernanceEvent> createGovernanceEvent(final DataChangedEvent event) {
String instanceId = ComputeNode.getInstanceIdByComputeNode(event.getKey());
if (!Strings.isNullOrEmpty(instanceId)) {
- if (event.getKey().equals(ComputeNode.getInstanceStatusNodePath(instanceId)) && Type.DELETED != event.getType()) {
- return Optional.of(new StateEvent(instanceId, event.getValue()));
- }
- if (event.getKey().equals(ComputeNode.getInstanceLabelsNodePath(instanceId)) && Type.DELETED != event.getType()) {
- return Optional.of(new LabelsEvent(instanceId, Strings.isNullOrEmpty(event.getValue()) ? new ArrayList<>() : YamlEngine.unmarshal(event.getValue(), Collection.class)));
- }
- if (event.getKey().equals(ComputeNode.getInstanceWorkerIdNodePath(instanceId))) {
- return Optional.of(new WorkerIdEvent(instanceId, Strings.isNullOrEmpty(event.getValue()) ? null : Integer.valueOf(event.getValue())));
+ Optional<GovernanceEvent> result = createInstanceGovernanceEvent(event, instanceId);
+ if (result.isPresent()) {
+ return result;
}
}
if (event.getKey().startsWith(ComputeNode.getOnlineInstanceNodePath())) {
@@ -88,6 +82,20 @@ public final class ComputeNodeStateChangedWatcher implements GovernanceWatcher<G
return Optional.empty();
}
+ @SuppressWarnings("unchecked")
+ private Optional<GovernanceEvent> createInstanceGovernanceEvent(final DataChangedEvent event, final String instanceId) {
+ if (event.getKey().equals(ComputeNode.getInstanceStatusNodePath(instanceId)) && Type.DELETED != event.getType()) {
+ return Optional.of(new StateEvent(instanceId, event.getValue()));
+ }
+ if (event.getKey().equals(ComputeNode.getInstanceLabelsNodePath(instanceId)) && Type.DELETED != event.getType()) {
+ return Optional.of(new LabelsEvent(instanceId, Strings.isNullOrEmpty(event.getValue()) ? new ArrayList<>() : YamlEngine.unmarshal(event.getValue(), Collection.class)));
+ }
+ if (event.getKey().equals(ComputeNode.getInstanceWorkerIdNodePath(instanceId))) {
+ return Optional.of(new WorkerIdEvent(instanceId, Strings.isNullOrEmpty(event.getValue()) ? null : Integer.valueOf(event.getValue())));
+ }
+ return Optional.empty();
+ }
+
private Optional<GovernanceEvent> createInstanceEvent(final DataChangedEvent event) {
Matcher matcher = getInstanceOnlinePathMatcher(event.getKey());
if (matcher.find()) {
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
index adfa5a982fd..27be666640d 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java
@@ -576,16 +576,13 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
int stopIndex = ctx.stop.getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (MySQLSelectStatement) visit(ctx.subquery()));
- if (null != ctx.EXISTS()) {
- return new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
- }
- return new SubqueryExpressionSegment(subquerySegment);
+ return null == ctx.EXISTS() ? new SubqueryExpressionSegment(subquerySegment) : new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
- ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
- parameterMarkerSegments.add(segment);
- return segment;
+ ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
+ parameterMarkerSegments.add(result);
+ return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
@@ -597,8 +594,7 @@ public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<AS
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
- SimpleExpressionSegment collateValueSegment = (SimpleExpressionSegment) visit(ctx.collateClause());
- return new CollateExpression(startIndex, stopIndex, collateValueSegment);
+ return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()));
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
index 846b1e8b2ba..3104bf4485b 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
@@ -279,35 +279,36 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
public ASTNode visitAlterTable(final AlterTableContext ctx) {
MySQLAlterTableStatement result = new MySQLAlterTableStatement();
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
- if (null != ctx.alterTableActions() && null != ctx.alterTableActions().alterCommandList() && null != ctx.alterTableActions().alterCommandList().alterList()) {
- for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterTableActions().alterCommandList().alterList())).getValue()) {
- if (each instanceof AddColumnDefinitionSegment) {
- result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
- } else if (each instanceof ModifyColumnDefinitionSegment) {
- result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
- } else if (each instanceof ChangeColumnDefinitionSegment) {
- result.getChangeColumnDefinitions().add((ChangeColumnDefinitionSegment) each);
- } else if (each instanceof DropColumnDefinitionSegment) {
- result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
- } else if (each instanceof AddConstraintDefinitionSegment) {
- result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
- } else if (each instanceof DropConstraintDefinitionSegment) {
- result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
- } else if (each instanceof RenameTableDefinitionSegment) {
- result.setRenameTable(((RenameTableDefinitionSegment) each).getRenameTable());
- } else if (each instanceof ConvertTableDefinitionSegment) {
- result.setConvertTableDefinition((ConvertTableDefinitionSegment) each);
- } else if (each instanceof DropIndexDefinitionSegment) {
- result.getDropIndexDefinitions().add((DropIndexDefinitionSegment) each);
- } else if (each instanceof RenameIndexDefinitionSegment) {
- result.getRenameIndexDefinitions().add((RenameIndexDefinitionSegment) each);
- } else if (each instanceof RenameColumnSegment) {
- result.getRenameColumnDefinitions().add((RenameColumnSegment) each);
- } else if (each instanceof AlgorithmTypeSegment) {
- result.setAlgorithmSegment((AlgorithmTypeSegment) each);
- } else if (each instanceof LockTableSegment) {
- result.setLockTableSegment((LockTableSegment) each);
- }
+ if (null == ctx.alterTableActions() || null == ctx.alterTableActions().alterCommandList() || null == ctx.alterTableActions().alterCommandList().alterList()) {
+ return result;
+ }
+ for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterTableActions().alterCommandList().alterList())).getValue()) {
+ if (each instanceof AddColumnDefinitionSegment) {
+ result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+ } else if (each instanceof ModifyColumnDefinitionSegment) {
+ result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+ } else if (each instanceof ChangeColumnDefinitionSegment) {
+ result.getChangeColumnDefinitions().add((ChangeColumnDefinitionSegment) each);
+ } else if (each instanceof DropColumnDefinitionSegment) {
+ result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+ } else if (each instanceof AddConstraintDefinitionSegment) {
+ result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+ } else if (each instanceof DropConstraintDefinitionSegment) {
+ result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
+ } else if (each instanceof RenameTableDefinitionSegment) {
+ result.setRenameTable(((RenameTableDefinitionSegment) each).getRenameTable());
+ } else if (each instanceof ConvertTableDefinitionSegment) {
+ result.setConvertTableDefinition((ConvertTableDefinitionSegment) each);
+ } else if (each instanceof DropIndexDefinitionSegment) {
+ result.getDropIndexDefinitions().add((DropIndexDefinitionSegment) each);
+ } else if (each instanceof RenameIndexDefinitionSegment) {
+ result.getRenameIndexDefinitions().add((RenameIndexDefinitionSegment) each);
+ } else if (each instanceof RenameColumnSegment) {
+ result.getRenameColumnDefinitions().add((RenameColumnSegment) each);
+ } else if (each instanceof AlgorithmTypeSegment) {
+ result.setAlgorithmSegment((AlgorithmTypeSegment) each);
+ } else if (each instanceof LockTableSegment) {
+ result.setLockTableSegment((LockTableSegment) each);
}
}
return result;
@@ -331,53 +332,59 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
if (ctx.alterListItem().isEmpty()) {
return result;
}
+ result.getValue().addAll(getAlterDefinitionSegments(ctx));
+ for (AlterCommandsModifierContext each : ctx.alterCommandsModifier()) {
+ if (null != each.alterAlgorithmOption()) {
+ result.getValue().add((AlgorithmTypeSegment) visit(each));
+ } else if (null != each.alterLockOption()) {
+ result.getValue().add((LockTableSegment) visit(each));
+ }
+ }
+ return result;
+ }
+
+ private Collection<AlterDefinitionSegment> getAlterDefinitionSegments(final AlterListContext ctx) {
+ Collection<AlterDefinitionSegment> result = new LinkedList<>();
for (AlterListItemContext each : ctx.alterListItem()) {
if (each instanceof AddColumnContext) {
- result.getValue().add((AddColumnDefinitionSegment) visit(each));
+ result.add((AddColumnDefinitionSegment) visit(each));
}
if (each instanceof AlterConstraintContext || each instanceof AlterCheckContext) {
- result.getValue().add((AlterDefinitionSegment) visit(each));
+ result.add((AlterDefinitionSegment) visit(each));
}
if (each instanceof ChangeColumnContext) {
- result.getValue().add(generateModifyColumnDefinitionSegment((ChangeColumnContext) each));
+ result.add(generateModifyColumnDefinitionSegment((ChangeColumnContext) each));
}
if (each instanceof ModifyColumnContext) {
- result.getValue().add(generateModifyColumnDefinitionSegment((ModifyColumnContext) each));
+ result.add(generateModifyColumnDefinitionSegment((ModifyColumnContext) each));
}
if (each instanceof AlterTableDropContext) {
AlterTableDropContext alterTableDrop = (AlterTableDropContext) each;
if (null != alterTableDrop.CHECK() || null != alterTableDrop.CONSTRAINT()) {
ConstraintSegment constraintSegment = new ConstraintSegment(alterTableDrop.identifier().getStart().getStartIndex(), alterTableDrop.identifier().getStop().getStopIndex(),
(IdentifierValue) visit(alterTableDrop.identifier()));
- result.getValue().add(new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), constraintSegment));
+ result.add(new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), constraintSegment));
} else if (null == alterTableDrop.KEY() && null == alterTableDrop.keyOrIndex()) {
- result.getValue().add(generateDropColumnDefinitionSegment(alterTableDrop));
+ result.add(generateDropColumnDefinitionSegment(alterTableDrop));
} else if (null != alterTableDrop.keyOrIndex()) {
IndexSegment indexSegment = (IndexSegment) visit(alterTableDrop.indexName());
- result.getValue().add(new DropIndexDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexSegment));
+ result.add(new DropIndexDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexSegment));
}
}
if (each instanceof AddTableConstraintContext) {
- result.getValue().add((AddConstraintDefinitionSegment) visit(each));
+ result.add((AddConstraintDefinitionSegment) visit(each));
}
if (each instanceof AlterRenameTableContext) {
- result.getValue().add((RenameTableDefinitionSegment) visit(each));
+ result.add((RenameTableDefinitionSegment) visit(each));
}
if (each instanceof AlterConvertContext) {
- result.getValue().add((ConvertTableDefinitionSegment) visit(each));
+ result.add((ConvertTableDefinitionSegment) visit(each));
}
if (each instanceof RenameColumnContext) {
- result.getValue().add((RenameColumnSegment) visit(each));
+ result.add((RenameColumnSegment) visit(each));
}
if (each instanceof RenameIndexContext) {
- result.getValue().add((RenameIndexDefinitionSegment) visit(each));
- }
- }
- for (AlterCommandsModifierContext each : ctx.alterCommandsModifier()) {
- if (null != each.alterAlgorithmOption()) {
- result.getValue().add((AlgorithmTypeSegment) visit(each));
- } else if (null != each.alterLockOption()) {
- result.getValue().add((LockTableSegment) visit(each));
+ result.add((RenameIndexDefinitionSegment) visit(each));
}
}
return result;
@@ -535,6 +542,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
return result;
}
+ @SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitTableConstraintDef(final TableConstraintDefContext ctx) {
ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
@@ -608,6 +616,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
return result;
}
+ @SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
MySQLCreateIndexStatement result = new MySQLCreateIndexStatement();
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java
index 9b2f5e44286..f4a9c098527 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java
@@ -702,6 +702,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
return result;
}
+ @SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitQualifiedNameList(final QualifiedNameListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
@@ -733,6 +734,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
return result;
}
+ @SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertRest(final InsertRestContext ctx) {
OpenGaussInsertStatement result = new OpenGaussInsertStatement();
@@ -781,6 +783,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
return new ColumnAssignmentSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), columnSegments, expressionSegment);
}
+ @SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertColumnList(final InsertColumnListContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
@@ -1124,41 +1127,53 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
if (null != ctx.relationExpr()) {
- SimpleTableSegment result = (SimpleTableSegment) visit(ctx.relationExpr().qualifiedName());
- if (null != ctx.aliasClause()) {
- result.setAlias((AliasSegment) visit(ctx.aliasClause()));
- }
- return result;
+ return getSimpleTableSegment(ctx);
}
if (null != ctx.selectWithParens()) {
- OpenGaussSelectStatement select = (OpenGaussSelectStatement) visit(ctx.selectWithParens());
- SubquerySegment subquery = new SubquerySegment(ctx.selectWithParens().start.getStartIndex(), ctx.selectWithParens().stop.getStopIndex(), select);
- AliasSegment alias = null != ctx.aliasClause() ? (AliasSegment) visit(ctx.aliasClause()) : null;
- SubqueryTableSegment result = new SubqueryTableSegment(subquery);
- result.setAlias(alias);
- return result;
+ return getSubqueryTableSegment(ctx);
}
if (null != ctx.tableReference()) {
- JoinTableSegment result = new JoinTableSegment();
- result.setLeft((TableSegment) visit(ctx.tableReference()));
- int startIndex = null != ctx.LP_() ? ctx.LP_().getSymbol().getStartIndex() : ctx.tableReference().start.getStartIndex();
- int stopIndex = 0;
- AliasSegment alias = null;
- if (null != ctx.aliasClause()) {
- alias = (AliasSegment) visit(ctx.aliasClause());
- startIndex = null != ctx.RP_() ? ctx.RP_().getSymbol().getStopIndex() : ctx.joinedTable().stop.getStopIndex();
- } else {
- stopIndex = null != ctx.RP_() ? ctx.RP_().getSymbol().getStopIndex() : ctx.tableReference().start.getStopIndex();
- }
- result.setStartIndex(startIndex);
- result.setStopIndex(stopIndex);
- visitJoinedTable(ctx.joinedTable(), result);
- result.setAlias(alias);
- return result;
+ return getJoinTableSegment(ctx);
}
// TODO deal with functionTable and xmlTable
- TableNameSegment tableName = new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue("not support"));
- return new SimpleTableSegment(tableName);
+ return new SimpleTableSegment(new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue("not support")));
+ }
+
+ private SimpleTableSegment getSimpleTableSegment(final TableReferenceContext ctx) {
+ SimpleTableSegment result = (SimpleTableSegment) visit(ctx.relationExpr().qualifiedName());
+ if (null != ctx.aliasClause()) {
+ result.setAlias((AliasSegment) visit(ctx.aliasClause()));
+ }
+ return result;
+ }
+
+ private SubqueryTableSegment getSubqueryTableSegment(final TableReferenceContext ctx) {
+ OpenGaussSelectStatement select = (OpenGaussSelectStatement) visit(ctx.selectWithParens());
+ SubquerySegment subquery = new SubquerySegment(ctx.selectWithParens().start.getStartIndex(), ctx.selectWithParens().stop.getStopIndex(), select);
+ SubqueryTableSegment result = new SubqueryTableSegment(subquery);
+ if (null != ctx.aliasClause()) {
+ result.setAlias((AliasSegment) visit(ctx.aliasClause()));
+ }
+ return result;
+ }
+
+ private JoinTableSegment getJoinTableSegment(final TableReferenceContext ctx) {
+ JoinTableSegment result = new JoinTableSegment();
+ result.setLeft((TableSegment) visit(ctx.tableReference()));
+ int startIndex = null != ctx.LP_() ? ctx.LP_().getSymbol().getStartIndex() : ctx.tableReference().start.getStartIndex();
+ int stopIndex = 0;
+ AliasSegment alias = null;
+ if (null != ctx.aliasClause()) {
+ alias = (AliasSegment) visit(ctx.aliasClause());
+ startIndex = null == ctx.RP_() ? ctx.joinedTable().stop.getStopIndex() : ctx.RP_().getSymbol().getStopIndex();
+ } else {
+ stopIndex = null == ctx.RP_() ? ctx.tableReference().start.getStopIndex() : ctx.RP_().getSymbol().getStopIndex();
+ }
+ result.setStartIndex(startIndex);
+ result.setStopIndex(stopIndex);
+ visitJoinedTable(ctx.joinedTable(), result);
+ result.setAlias(alias);
+ return result;
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final JoinTableSegment tableSegment) {
@@ -1189,7 +1204,7 @@ public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVi
if (null != ctx.FULL()) {
return JoinType.FULL.name();
}
- return null != ctx.LEFT() ? JoinType.LEFT.name() : JoinType.RIGHT.name();
+ return null == ctx.LEFT() ? JoinType.RIGHT.name() : JoinType.LEFT.name();
}
private String getNaturalJoinType(final NaturalJoinTypeContext ctx) {
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
index 09b7e48b567..41e550f64e6 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
@@ -324,35 +324,11 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
return new OpenGaussAlterDefaultPrivilegesStatement();
}
- @SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
if (null != ctx.alterTableActions()) {
- for (AlterTableActionContext each : ctx.alterTableActions().alterTableAction()) {
- AddColumnSpecificationContext addColumnSpecification = each.addColumnSpecification();
- if (null != addColumnSpecification) {
- result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(addColumnSpecification)).getValue());
- }
- if (null != each.addConstraintSpecification() && null != each.addConstraintSpecification().tableConstraint()) {
- result.getValue().add((AddConstraintDefinitionSegment) visit(each.addConstraintSpecification()));
- }
- if (null != each.validateConstraintSpecification()) {
- result.getValue().add((ValidateConstraintDefinitionSegment) visit(each.validateConstraintSpecification()));
- }
- if (null != each.modifyColumnSpecification()) {
- result.getValue().add((ModifyColumnDefinitionSegment) visit(each.modifyColumnSpecification()));
- }
- if (null != each.modifyConstraintSpecification()) {
- result.getValue().add((ModifyConstraintDefinitionSegment) visit(each.modifyConstraintSpecification()));
- }
- if (null != each.dropColumnSpecification()) {
- result.getValue().add((DropColumnDefinitionSegment) visit(each.dropColumnSpecification()));
- }
- if (null != each.dropConstraintSpecification()) {
- result.getValue().add((DropConstraintDefinitionSegment) visit(each.dropConstraintSpecification()));
- }
- }
+ result.getValue().addAll(getAlterDefinitionSegments(ctx));
}
if (null != ctx.renameTableSpecification()) {
result.getValue().add((RenameTableDefinitionSegment) visit(ctx.renameTableSpecification()));
@@ -360,6 +336,35 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
return result;
}
+ @SuppressWarnings("unchecked")
+ private Collection<AlterDefinitionSegment> getAlterDefinitionSegments(final AlterDefinitionClauseContext ctx) {
+ Collection<AlterDefinitionSegment> result = new LinkedList<>();
+ for (AlterTableActionContext each : ctx.alterTableActions().alterTableAction()) {
+ if (null != each.addColumnSpecification()) {
+ result.addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(each.addColumnSpecification())).getValue());
+ }
+ if (null != each.addConstraintSpecification() && null != each.addConstraintSpecification().tableConstraint()) {
+ result.add((AddConstraintDefinitionSegment) visit(each.addConstraintSpecification()));
+ }
+ if (null != each.validateConstraintSpecification()) {
+ result.add((ValidateConstraintDefinitionSegment) visit(each.validateConstraintSpecification()));
+ }
+ if (null != each.modifyColumnSpecification()) {
+ result.add((ModifyColumnDefinitionSegment) visit(each.modifyColumnSpecification()));
+ }
+ if (null != each.modifyConstraintSpecification()) {
+ result.add((ModifyConstraintDefinitionSegment) visit(each.modifyConstraintSpecification()));
+ }
+ if (null != each.dropColumnSpecification()) {
+ result.add((DropColumnDefinitionSegment) visit(each.dropColumnSpecification()));
+ }
+ if (null != each.dropConstraintSpecification()) {
+ result.add((DropConstraintDefinitionSegment) visit(each.dropConstraintSpecification()));
+ }
+ }
+ return result;
+ }
+
@Override
public ASTNode visitAlterForeignTable(final AlterForeignTableContext ctx) {
return new OpenGaussAlterForeignTableStatement();
@@ -695,6 +700,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
return result;
}
+ @SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitDropSequence(final DropSequenceContext ctx) {
OpenGaussDropSequenceStatement result = new OpenGaussDropSequenceStatement();